Valor de referência de estêncil especificado do sombreador (gráficos Direct3D 11)
Permitir que sombreadores de pixel produzam o Valor de Referência de Estêncil, em vez de usar o especificado pela API, permite um controle granular muito fino sobre operações de estêncil.
O valor especificado pelo sombreador substitui o de Valor de Referência de Stencil de especificado pela API para essa invocação, o que significa que a alteração afeta o teste de estêncil e quando o D3D11_STENCIL_OP_REPLACE operacional de estêncil (um membro de D3D11_STENCIL_OP) é usado para gravar o valor de referência no buffer de estêncil.
Em versões anteriores do D3D11, o valor de referência do estêncil só pode ser especificado pelo método ID3D11DeviceContext::OMSetDepthStencilState. Isso significa que esse valor só pode ser definido em uma granularidade por desenho. Esse recurso D3D11.3 permite que os desenvolvedores leiam e usem o valor de referência de estêncil (SV_StencilRef
) que é a saída de um sombreador de pixel, o que significa que ele pode ser especificado em uma granularidade por pixel ou por amostra.
Este recurso é opcional na D3D11.3. Para testar seu suporte, verifique o campo booleano PSSpecifiedStencilRefSupported
de D3D11_FEATURE_DATA_D3D11_OPTIONS2 usando ID3D11Device::CheckFeatureSupport
Aqui está um exemplo do uso de SV_StencilRef
em um sombreador de pixel:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
Tópicos relacionados