Vom Shader angegebener Schablonenverweiswert (Direct3D 12-Grafiken)
Das Aktivieren von Pixel-Shadern zum Ausgeben des Schablonenverweiswerts anstelle des von der API angegebenen Werts ermöglicht eine sehr präzise Steuerung von Schablonenvorgängen.
Der Schablonenverweiswert wird normalerweise von der ID3D12GraphicsCommandList::OMSetStencilRef-Methode angegeben. Diese Methode legt den Schablonenverweiswert auf eine Granularität pro Zeichnen fest. Dieser Wert kann jedoch vom Pixelshader überschrieben werden.
Dieses D3D12-Feature (und D3D11.3) ermöglicht Entwicklern das Lesen und Verwenden des Schablonenverweiswerts (SV _ StencilRef), der von einem Pixel-Shader ausgegeben wird, und ermöglicht eine Granularität pro Pixel oder pro Stichprobe.
Der angegebene Shaderwert ersetzt den von der API angegebenen Verweiswert für diesen Aufruf. Dies bedeutet, dass sich die Änderung auf den Schablonentest auswirkt und wenn der Schablonenvorgang D3D12 _ STENCIL _ OP _ REPLACE (ein Member von D3D12 _ STENCIL _ OP) verwendet wird, um den Verweiswert in den Schablonenpuffer zu schreiben.
Dieses Feature ist sowohl in D3D12 als auch in D3D11.3 optional. Um die Unterstützung zu testen, überprüfen Sie das boolesche Feld PSSpecifiedStencilRefSupported von D3D12 _ FEATURE DATA _ _ D3D12 _ OPTIONS mit 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);
}