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 设置为 default–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) 呈现目标上使用四边形或 alpha 线抗锯齿算法。 设置为 TRUE 以使用四边形线抗锯齿算法,设置为 FALSE 以使用 alpha 线抗锯齿算法。 有关此成员的详细信息,请参阅备注。

AntialiasedLineEnable

指定是否启用行抗锯齿;仅当进行线条绘制且 MultisampleEnableFALSE 时适用。 有关此成员的详细信息,请参阅备注。

ForcedSampleCount

类型: UINT

UAV 呈现或光栅化时强制的样本计数。 有效值为 0、1、4、8 和可选 16。 0 表示样本计数不是强制的。

注意 如果要在 ForcedSampleCount 设置为 1 或更大的情况下进行呈现,必须遵循以下准则:否则,呈现行为未定义。

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
Alpha 抗锯齿 FALSE TRUE
四边形 TRUE FALSE
四边形 TRUE TRUE
 

MultisampleEnableAntialiasedLineEnable 成员的设置仅适用于多重采样抗锯齿 (MSAA) 呈现目标 (即,呈现样本计数大于 1) 的目标。 由于 功能级别 行为存在差异,并且只要不执行任何线条绘制或不介意线条呈现为四边形,我们建议每当在 MSAA 呈现目标上呈现时,始终将 MultisampleEnable 设置为 TRUE

要求

要求
Header d3d12.h

另请参阅

CD3DX12_RASTERIZER_DESC

传统型光栅化

核心结构

光栅器有序视图