Condividi tramite


Valore di riferimento dello stencil specificato dello shader (grafica Direct3D 12)

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 di riferimento dello 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) restituito da un pixel shader, abilitando una granularità per pixel o per campione.

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

Questa funzionalità è facoltativa sia in D3D12 che in D3D11.3. Per verificarne il supporto, controllare il campo PSSpecifiedStencilRefSupported campo booleano di D3D12_FEATURE_DATA_D3D12_OPTIONS usando 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);
}

Rendering

associazione di risorse in HLSL

modello shader 5.1

specifica delle firme radice in HLSL