Valor de referência de estêncil especificado pelo sombreador (elementos gráficos Direct3D 11)
Habilitar sombreadores de pixel para gerar o Valor de Referência do 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 do sombreador substitui o valor de referência de estêncil especificado pela API para essa invocação, o que significa que a alteração afeta o teste de estêncil e quando a operação de estêncil D3D11_STENCIL_OP_REPLACE (um membro de D3D11_STENCIL_OP) é usada 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.
Esse recurso é opcional na D3D11.3. Para testar seu suporte, verifique o campo booliano 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