Direct3D 12 图形) (着色器指定的模具参考值

启用像素着色器来输出模具参考值,而不是使用特定于 API 的模具参考值,可以对模具操作进行非常精细的粒度控制。

模具引用值通常由 ID3D12GraphicsCommandList::OMSetStencilRef 方法指定。 此方法按绘制粒度设置模具引用值。 但是,像素着色器可以覆盖此值。

此 D3D12 (和 D3D11.3) 功能使开发人员能够读取和使用从像素着色器输出的模具参考值 (SV_StencilRef) ,从而实现按像素或按样本粒度。

着色器指定的值替换该调用的 API 指定的引用值,这意味着更改会影响模具测试,并且当模具操作D3D12_STENCIL_OP_REPLACE (D3D12_STENCIL_OP 的一个成员时,) 用于将引用值写入模具缓冲区。

此功能在 D3D12 和 D3D11.3 中都是可选的。 若要测试其支持,请使用 CheckFeatureSupport 检查D3D12_FEATURE_DATA_D3D12_OPTIONSPSSpecifiedStencilRefSupported 布尔字段。

下面是在像素着色器中使用 SV_StencilRef 的示例:

uint main2(float4 c : COORD) : SV_StencilRef
{
    return uint(c.x);
}

呈现

HLSL 中的资源绑定

Shader Model 5.1(着色器模型 5.1)

在 HLSL 中指定根签名