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

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

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

在早期版本的 D3D11 中,模具引用值只能由 ID3D11DeviceContext::OMSetDepthStencilState 方法指定。 这意味着此值只能在每绘图粒度上定义。 此 D3D11.3 功能使开发人员能够读取和使用从像素着色器输出的 SV_StencilRef 模具引用值 () ,这意味着可以按像素或按样本粒度指定它。

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

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

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

Direct3D 11.3 功能

Shader Model 5.1(着色器模型 5.1)