着色器指定的模具引用值(Direct3D 11 图形)
使像素着色器能够输出模具引用值,而不是使用 API 指定的引用值,可对模具作进行非常精细的控制。
着色器指定的值替换该调用的 API 指定的 模具引用值,这意味着更改会影响模具测试,当模具 op D3D11_STENCIL_OP_REPLACE(D3D11_STENCIL_OP的一个成员)用于将引用值写入模具缓冲区时。
在早期版本的 D3D11 中,模具引用值只能由 ID3D11DeviceContext::OMSetDepthStencilState 方法指定。 这意味着此值只能在每绘图粒度上定义。 此 D3D11.3 功能使开发人员能够读取和使用从像素着色器输出的模具引用值(SV_StencilRef
),这意味着它可以在每像素或每样本粒度上指定。
此功能在 D3D11.3 中是可选的。 若要测试其支持,请使用 ID3D11Device::CheckFeatureSupport 检查 D3D11_FEATURE_DATA_D3D11_OPTIONS2 的 PSSpecifiedStencilRefSupported
布尔字段
下面是在像素着色器中使用 SV_StencilRef
的示例:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
相关主题