Valore di riferimento dello stencil specificato per shader (grafica Direct3D 11)
L'abilitazione degli shader pixel per l'output del valore di riferimento dello Stencil, invece di usare quello specificato dall'API, consente un controllo granulare molto fine sulle operazioni degli stencil.
Il valore specificato dallo shader sostituisce il valore di riferimento dello Stencil specificato dall'API per tale chiamata, il che significa che la modifica influisce sia sul test degli stencil che quando lo stencil op D3D11_STENCIL_OP_REPLACE (un membro di D3D11_STENCIL_OP) viene usato per scrivere il valore di riferimento nel buffer degli stencil.
Nelle versioni precedenti di D3D11, il valore di riferimento Stencil può essere specificato solo dal metodo ID3D11DeviceContext::OMSetDepthStencilState. Ciò significa che questo valore può essere definito solo in base alla granularità per disegno. Questa funzionalità D3D11.3 consente agli sviluppatori di leggere e usare il valore di riferimento Stencil (SV_StencilRef
) restituito da un pixel shader, ovvero può essere specificato in una granularità per pixel o per campione.
Questa funzionalità è facoltativa in D3D11.3. Per verificarne il supporto, controllare il campo booleano PSSpecifiedStencilRefSupported
di D3D11_FEATURE_DATA_D3D11_OPTIONS2 usando ID3D11Device::CheckFeatureSupport
Di seguito è riportato un esempio dell'uso di SV_StencilRef
in un pixel shader:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
Argomenti correlati