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


структура D3D12_RASTERIZER_DESC (d3d12.h)

Описывает состояние растеризатора.

Синтаксис

typedef struct D3D12_RASTERIZER_DESC {
  D3D12_FILL_MODE                       FillMode;
  D3D12_CULL_MODE                       CullMode;
  BOOL                                  FrontCounterClockwise;
  INT                                   DepthBias;
  FLOAT                                 DepthBiasClamp;
  FLOAT                                 SlopeScaledDepthBias;
  BOOL                                  DepthClipEnable;
  BOOL                                  MultisampleEnable;
  BOOL                                  AntialiasedLineEnable;
  UINT                                  ForcedSampleCount;
  D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
} D3D12_RASTERIZER_DESC;

Члены

FillMode

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

CullMode

D3D12_CULL_MODE типизированное значение, указывающее, что треугольники, обращенные к указанному направлению, не рисуются.

FrontCounterClockwise

Определяет, является ли треугольник передним или задним. Если этот элемент имеет значение TRUE, треугольник будет считаться обращенным спереди, если его вершины находятся против часовой стрелки на целевом объекте отрисовки, а если они находятся по часовой стрелке, будет считаться обращенным к обратной стороне. Если этот параметр имеет значение FALSE, то обратное — true.

DepthBias

Значение глубины, добавленное к заданному пикселю. Сведения о см. в разделе См. см. в разделе См. см. раздел См. см. раздел

DepthBiasClamp

Максимальное смещение глубины пикселя. Сведения о см. в разделе См. см. в разделе См. см. раздел См. см. раздел

SlopeScaledDepthBias

Скалярный наклон заданного пикселя. Сведения о см. в разделе См. см. в разделе См. см. раздел См. см. раздел

DepthClipEnable

Указывает, следует ли включать вырезку на основе расстояния.

Оборудование всегда выполняет обрезку растровых координат по оси x и y. Если параметр DepthClipEnable имеет значение по умолчанию —TRUE, оборудование также обрезает значение z (то есть оборудование выполняет последний шаг следующего алгоритма).


0 < w
-w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
-w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
0 <= z <= w

Если для depthClipEnable заданозначение FALSE, оборудование пропускает обрезку z (т. е. последний шаг в предыдущем алгоритме). Однако оборудование по-прежнему выполняет обрезку "0 < w". При отключении z-отсечения может привести к неправильному упорядочению глубины на уровне пикселей. Однако при отключении z-отсечения реализации теневых элементов упрощаются. Другими словами, можно избежать сложной обработки специальных регистров для геометрии, которая выходит за рамки обратной плоскости отсечения.

MultisampleEnable

Указывает, следует ли использовать алгоритм сглаживания четырехугольной или альфа-линии на целевых объектах отрисовки с многопримерной отрисовки (MSAA). Задайте значение TRUE , чтобы использовать алгоритм сглаживания четырехугольной линии, и значение FALSE , чтобы использовать алгоритм сглаживания альфа-линии. Дополнительные сведения об этом участнике см. в разделе Примечания.

AntialiasedLineEnable

Указывает, следует ли включать сглаживание строк; Применяется, только если выполняется рисование линий, а multisampleEnable имеет значение FALSE. Дополнительные сведения об этом участнике см. в разделе Примечания.

ForcedSampleCount

Тип: UINT

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

Примечание Если требуется выполнить отрисовку с параметром ForcedSampleCount , равным 1 или больше, необходимо следовать следующим рекомендациям:
  • Не привязывайте представления трафарета глубины.
  • Отключите тестирование глубины.
  • Убедитесь, что шейдер не выводит глубину.
  • Если у вас есть представления, связанные с целевыми объектами отрисовки (D3D12_DESCRIPTOR_HEAP_TYPE_RTV), а значение ForcedSampleCount больше 1, убедитесь, что каждый целевой объект отрисовки содержит только один образец.
  • Не управляйте шейдером с частотой выборки. Таким образом, ID3D12ShaderReflection::IsSampleFrequencyShader возвращает значение FALSE.
В противном случае поведение отрисовки не определено.

ConservativeRaster

Значение типа D3D12_CONSERVATIVE_RASTERIZATION_MODE, определяющее, включена ли консервативная растеризация.

Комментарии

D3D12_GRAPHICS_PIPELINE_STATE_DESC содержит структуру состояния растеризатора.

Состояние растеризатора определяет поведение этапа растеризатора.

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

Состояние Значение по умолчанию
FillMode D3D12_FILL_MODE_SOLID
CullMode D3D12_CULL_MODE_BACK
FrontCounterClockwise FALSE
DepthBias 0
DepthBiasClamp 0,0f
SlopeScaledDepthBias 0,0f
DepthClipEnable TRUE
MultisampleEnable FALSE
AntialiasedLineEnable FALSE
ForcedSampleCount 0
ConservativeRaster D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF
 
Примечание Для уровней компонентов 9.1, 9.2, 9.3 и 10.0, если для параметра MultisampleEnableзадано значение FALSE, среда выполнения отрисовывает все точки, линии и треугольники без сглаживания даже для целевых объектов отрисовки с числом выборок больше 1. Для уровней компонентов 10.1 и выше параметр MultisampleEnable не влияет на точки и треугольники в отношении MSAA и влияет только на выбор алгоритма отрисовки линий, как показано в следующей таблице:
 
Алгоритм отрисовки линий MultisampleEnable AntialiasedLineEnable
Псевдоним FALSE FALSE
Альфа-антиалиазированные FALSE TRUE
Четырехугольник TRUE FALSE
Четырехугольник TRUE TRUE
 

Параметры элементов MultisampleEnable и AntialiasedLineEnable применяются только к целевым объектам отрисовки с несколькими выборками (MSAA) (то есть целевым объектам отрисовки с количеством выборок больше 1). Из-за различий в поведении на уровне признаков и до тех пор, пока вы не выполняете рисование линий или не возражаете против того, чтобы линии отрисовывались как четырехугольные, рекомендуется всегда устанавливать для MultisampleEnable значение TRUE при отрисовке в целевых объектах отрисовки MSAA.

Требования

Требование Значение
Заголовок d3d12.h

См. также раздел

CD3DX12_RASTERIZER_DESC

Консервативная растеризация

Основные структуры

Упорядоченные представления средства программной прорисовки