Delen via


Opgegeven stencilreferentiewaarde (Direct3D 12 Graphics)

Door pixel-shaders in te schakelen om de stencilverwijzingswaarde uit te voeren, in plaats van de API-opgegeven waarde te gebruiken, is een zeer nauwkeurige controle over stencilbewerkingen mogelijk.

De Stencilreferentiewaarde wordt normaal gesproken opgegeven door de methode ID3D12GraphicsCommandList::OMSetStencilRef. Met deze methode wordt de stencilverwijzingswaarde ingesteld op een granulariteit per teken. Deze waarde kan echter worden overschreven door de pixel-shader.

Met deze D3D12-functie (en D3D11.3) kunnen ontwikkelaars de stencilverwijzingswaarde (SV_StencilRef) lezen en gebruiken die uitvoer is van een pixel-shader, waardoor een granulariteit per pixel of per voorbeeld wordt ingeschakeld.

De opgegeven arceringswaarde vervangt de api-opgegeven referentiewaarde voor die aanroep, wat betekent dat de wijziging van invloed is op zowel de stenciltest als wanneer de stencilbewerking D3D12_STENCIL_OP_REPLACE (één lid van D3D12_STENCIL_OP) wordt gebruikt om de verwijzingswaarde naar de stencilbuffer te schrijven.

Deze functie is optioneel in zowel D3D12 als D3D11.3. Als u wilt testen op de ondersteuning, controleert u het PSSpecifiedStencilRefSupported booleaanse veld van D3D12_FEATURE_DATA_D3D12_OPTIONS met behulp van CheckFeatureSupport.

Hier volgt een voorbeeld van het gebruik van SV_StencilRef in een pixel-shader:

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

Rendering-

resourcebinding in HLSL-

Shader Model 5.1

Root Signatures opgeven in HLSL-