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
指定是否启用行抗锯齿;仅当进行线条绘制且 MultisampleEnable 为 FALSE 时适用。 有关此成员的详细信息,请参阅备注。
ForcedSampleCount
类型: UINT
UAV 呈现或光栅化时强制的样本计数。 有效值为 0、1、4、8 和可选 16。 0 表示样本计数不是强制的。
- 不要绑定深度模具视图。
- 禁用深度测试。
- 确保着色器不输出深度。
- 如果将任何呈现器目标视图绑定 (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 |
线条呈现算法 | MultisampleEnable | AntialiasedLineEnable |
---|---|---|
锯齿 | FALSE | FALSE |
Alpha 抗锯齿 | FALSE | TRUE |
四边形 | TRUE | FALSE |
四边形 | TRUE | TRUE |
MultisampleEnable 和 AntialiasedLineEnable 成员的设置仅适用于多重采样抗锯齿 (MSAA) 呈现目标 (即,呈现样本计数大于 1) 的目标。 由于 功能级别 行为存在差异,并且只要不执行任何线条绘制或不介意线条呈现为四边形,我们建议每当在 MSAA 呈现目标上呈现时,始终将 MultisampleEnable 设置为 TRUE 。
要求
要求 | 值 |
---|---|
Header | d3d12.h |