Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 de referência de estêncil é normalmente especificado pelo métodoID3D12GraphicsCommandList::OMSetStencilRef. Este método define o valor de referência do estêncil em uma granularidade por desenho. No entanto, esse valor pode ser substituído pelo sombreador de pixel.
Esse recurso D3D12 (e 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, permitindo uma granularidade por pixel ou por amostra.
O valor especificado do sombreador substitui o valor de referência 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 D3D12_STENCIL_OP_REPLACE (um membro de D3D12_STENCIL_OP) é usada para gravar o valor de referência no buffer de estêncil.
Este recurso é opcional em D3D12 e D3D11.3. Para testar seu suporte, verifique o campo booleano PSSpecifiedStencilRefSupported de D3D12_FEATURE_DATA_D3D12_OPTIONS usando 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