Share via


Shader angegebener Schablonenverweiswert (Direct3D 11-Grafiken)

Das Aktivieren von Pixelshadern zum Ausgeben des Schablonenverweiswerts anstelle des von der API angegebenen Werts ermöglicht eine sehr präzise Steuerung von Schablonenvorgängen.

Der angegebene Shaderwert ersetzt den von der API angegebenen Schablonenverweiswert für diesen Aufruf. Dies bedeutet, dass sich die Änderung sowohl auf den Schablonentest auswirkt, als auch, wenn schablonen op D3D11_STENCIL_OP_REPLACE (ein Member von D3D11_STENCIL_OP) verwendet wird, um den Verweiswert in den Schablonenpuffer zu schreiben.

In früheren Versionen von D3D11 kann der Schablonenverweiswert nur von der ID3D11DeviceContext::OMSetDepthStencilState-Methode angegeben werden. Dies bedeutet, dass dieser Wert nur pro Zeichnungsgranularität definiert werden kann. Mit dieser D3D11.3-Funktion können Entwickler den Schablonenverweiswert (SV_StencilRef) lesen und verwenden, der von einem Pixelshader ausgegeben wird, d. h. er kann für eine Granularität pro Pixel oder pro Stichprobe angegeben werden.

Dieses Feature ist in D3D11.3 optional. Überprüfen Sie zum Testen der Unterstützung das PSSpecifiedStencilRefSupported boolesche Feld von D3D11_FEATURE_DATA_D3D11_OPTIONS2 mithilfe von ID3D11Device::CheckFeatureSupport.

Hier sehen Sie ein Beispiel für die Verwendung von SV_StencilRef in einem Pixel-Shader:

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

Direct3D 11.3-Features

Shadermodell 5.1