Valore di riferimento Stencil specificato per shader (grafica Direct3D 11)

L'abilitazione dei pixel shader per l'output del valore di riferimento Stencil, anziché l'uso di quella specificata dall'API, consente un controllo granulare molto fine sulle operazioni di stencil.

Il valore specificato dello shader sostituisce il valore di riferimento Stencil specificato dall'API per tale chiamata, il che significa che la modifica influisce sia sul test 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 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 una granularità per disegno. Questa funzionalità D3D11.3 consente agli sviluppatori di leggere e usare il valore di riferimento Stencil (SV_StencilRef) restituito da uno shader pixel, che significa che può essere specificato in una granularità per pixel o per campione.

Questa funzionalità è facoltativa in D3D11.3. Per testare il supporto, controllare il PSSpecifiedStencilRefSupported campo booleano di D3D11_FEATURE_DATA_D3D11_OPTIONS2 usando ID3D11Device::CheckFeatureSupport

Ecco un esempio dell'uso di SV_StencilRef in un pixel shader:

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

Funzionalità direct3D 11.3

Modello shader 5.1