структура 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) |