Поделиться через


структура D3D11_1_DDI_RASTERIZER_DESC (d3d10umddi.h)

Описывает состояние растеризатора. Используется в драйверах windows Display Driver Model (WDDM) 1.2 и более поздних версий в пользовательском режиме.

Синтаксис

typedef struct D3D11_1_DDI_RASTERIZER_DESC {
  [in] D3D10_DDI_FILL_MODE FillMode;
  [in] D3D10_DDI_CULL_MODE CullMode;
  [in] BOOL                FrontCounterClockwise;
  [in] INT                 DepthBias;
  [in] FLOAT               DepthBiasClamp;
  [in] FLOAT               SlopeScaledDepthBias;
  [in] BOOL                DepthClipEnable;
  [in] BOOL                ScissorEnable;
  [in] BOOL                MultisampleEnable;
  [in] BOOL                AntialiasedLineEnable;
  [in] UINT                ForcedSampleCount;
} D3D11_1_DDI_RASTERIZER_DESC;

Члены

[in] FillMode

Значение типа , указывающее режим заполнения для примитивов. Этому элементу должно быть присвоено одно из следующих значений перечисления D3D10_DDI_FILL_MODE.

Значение Значение
D3D10_DDI_FILL_WIREFRAME (2) Заполняет проволочные кадры.
D3D10_DDI_FILL_SOLID (3) Заполняет твердые тела.

[in] CullMode

Значение типа , указывающее способ отбраковки треугольников, обращенных к обратной стороне, если вообще. Этому элементу должно быть присвоено одно из следующих значений перечисления D3D10_DDI_CULL_MODE.

Значение Значение
D3D10_DDI_CULL_NONE (1) Не отвыкайте треугольники.
D3D10_DDI_CULL_FRONT (2) Выверка передних лиц.
D3D10_DDI_CULL_BACK (3) Отвыкать назад лица.

[in] FrontCounterClockwise

Логическое значение, указывающее, обращены ли вершины, предоставленные в порядке против часовой стрелки (по отношению к растеризатору), спереди. Значение TRUE указывает, что это так; FALSE указывает, что вершины против часовой стрелки указывают на обратную сторону.

[in] DepthBias

Константная смещения глубины для использования в формулах смещения. Дополнительные сведения о DepthBias см. в разделе Примечания.

[in] DepthBiasClamp

Вектор с плавающей точкой с одной точностью, используемый в формулах смещения. Дополнительные сведения о DepthBiasClamp см. в разделе Примечания.

[in] SlopeScaledDepthBias

Вектор с плавающей точкой с одной точностью, используемый в формулах смещения. Дополнительные сведения о SlopeScaledDepthBias см. в разделе Примечания.

[in] DepthClipEnable

Логическое значение, указывающее, должен ли драйвер обрезать координаты вершин z в диапазоне глубины окна просмотра. ЗНАЧЕНИЕ TRUE указывает на обрезку; ЗНАЧЕНИЕ FALSE указывает, что обрезка не требуется.

[in] ScissorEnable

Логическое значение, указывающее, должен ли драйвер отклонять пиксели, которые находятся за пределами соответствующей прямоугольной области ножниц. ЗНАЧЕНИЕ TRUE указывает на отмену; ЗНАЧЕНИЕ FALSE указывает, что не следует отбрасывать.

[in] MultisampleEnable

Логическое значение, указывающее, должен ли драйвер следовать правилам растеризации с несколькими выборками. ЗНАЧЕНИЕ TRUE указывает на то, что следует следовать правилам; False указывает, что соблюдение правил не требуется. Правила растеризации с несколькими выборки имеют значение true, даже если целевые объекты отрисовки содержат только одну выборку.

[in] AntialiasedLineEnable

Логическое значение, указывающее, должен ли драйвер отрисовываться строки, которые соответствуют правилам растеризации сглаживания строк. ЗНАЧЕНИЕ TRUE указывает на то, что следует следовать правилам; False указывает, что соблюдение правил не требуется. Драйвер игнорирует значение в AntialiasedLineEnable , если вместо него используются правила растеризации с множественной выборкой.

[in] ForcedSampleCount

Во время отрисовки неупорядоченных представлений доступа (БПЛА) или целевых представлений отрисовки (RTV) указывает, следует ли принудительно использовать число выборок, и если да, то максимальное число выборок. Допустимые значения: 0, 1, 4, 8 и 16.

Если значение равно нулю, драйвер не должен принудительно применять число выборок.

Комментарии

Одним из артефактов с теневыми тенями на основе буфера является "теневая акне" (т. е. поверхность, которая периодически затеняется из-за неток при вычислении глубины поверхности из шейдера, сравниваемой с глубиной той же поверхности в буфере теней). Один из способов облегчить теневые прыщи — использовать элементы DepthBias и SlopeScaledDepthBias при отрисовки буфера теней. Целью является достаточное количество поверхностей при отрисовке буфера теней. Когда эти поверхности сравниваются с самими собой с помощью вычисленной шейдером z во время теста тени, результат сравнения будет согласованным по всей поверхности, а локальное самозатенение избегается.

Однако использование DepthBias и SlopeScaledDepthBias может привести к нескольким артефактам. Например, чрезвычайно крутой многоугольник приводит к взрыву уравнения смещения, что толкает многоугольник очень далеко от исходной поверхности на карте теней. Рассмотрим крутую грань по отношению к свету, которая отодвинута очень далеко по отношению к размерам родительского объекта путем смещения глубины. Предположим, что это лицо окружено более мелкими гранями, что уравнение смещения вытеснило гораздо меньше. Полученная карта теней имеет огромную разрывность, которая может привести к отверстиям в тени, которая отбрасывается одной поверхностью на другую поверхность ближе, чем разорванные лица. Одним из способов решения этой конкретной проблемы является использование элемента DepthBiasClamp , который обеспечивает устанавливаемую приложением верхнюю границу (положительную или отрицательную) на величину z-смещения.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)