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);
}
Verwante onderwerpen