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 as operações de estêncil.

O valor especificado pelo 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 o estêncil op D3D11_STENCIL_OP_REPLACE (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 do 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 exemplo.

Esse recurso é opcional em D3D11.3. Para testar seu suporte, marcar o PSSpecifiedStencilRefSupported campo booliano de D3D11_FEATURE_DATA_D3D11_OPTIONS2 usando ID3D11Device::CheckFeatureSupport

Aqui está um exemplo do uso de em um sombreador de SV_StencilRef pixels:

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

Recursos do Direct3D 11.3

Modelo de sombreador 5.1