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

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 di riferimento Stencil viene in genere specificato dal metodo ID3D12GraphicsCommandList::OMSetStencilRef . Questo metodo imposta il valore di riferimento dello stencil su una granularità per disegno. Tuttavia, questo valore può essere sovrascritto dal pixel shader.

Questa funzionalità D3D12 (e D3D11.3) consente agli sviluppatori di leggere e usare il valore di riferimento Stencil (SV_StencilRef) generato da uno shader pixel, abilitando una granularità per pixel o per campione.

Il valore specificato dello shader sostituisce il valore di riferimento specificato dall'API per tale chiamata, ovvero la modifica influisce sia sul test stencil che quando l'operazione stencil D3D12_STENCIL_OP_REPLACE (un membro di D3D12_STENCIL_OP) viene usato per scrivere il valore di riferimento nel buffer stencil.

Questa funzionalità è facoltativa sia in D3D12 che in D3D11.3. Per testare il supporto, controllare il campo booleano PSSpecifiedStencilRefSupported di D3D12_FEATURE_DATA_D3D12_OPTIONS usando CheckFeatureSupport.

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

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

Rendering

Associazione di risorse in HLSL

Modello shader 5.1

Specifica delle firme radice in HLSL