Opgegeven stencilreferentiewaarde (Direct3D 11 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 opgegeven arceringswaarde vervangt de api-opgegeven Stencilverwijzingswaarde voor die aanroep. Dit betekent dat de wijziging van invloed is op zowel de stenciltest als wanneer het stencil op D3D11_STENCIL_OP_REPLACE (één lid van D3D11_STENCIL_OP) wordt gebruikt om de verwijzingswaarde naar de stencilbuffer te schrijven.
In eerdere versies van D3D11 kan de stencilreferentiewaarde alleen worden opgegeven door de methode ID3D11DeviceContext::OMSetDepthStencilState. Dit betekent dat deze waarde alleen kan worden gedefinieerd op een granulariteit per teken. Met deze D3D11.3-functie kunnen ontwikkelaars de stencilverwijzingswaarde (SV_StencilRef
) lezen en gebruiken die uitvoer is van een pixel-shader, wat betekent dat deze kan worden opgegeven op een granulariteit per pixel of per voorbeeld.
Deze functie is optioneel in D3D11.3. Als u wilt testen op de ondersteuning, controleert u het PSSpecifiedStencilRefSupported
booleaanse veld van D3D11_FEATURE_DATA_D3D11_OPTIONS2 met behulp van ID3D11Device::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