Share via


Shader angegebener Schablonenverweiswert (Direct3D 12-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 Schablonenverweiswert wird normalerweise von der ID3D12GraphicsCommandList::OMSetStencilRef-Methode angegeben. Diese Methode legt den Schablonenverweiswert auf eine Granularität pro Zeichnung fest. Dieser Wert kann jedoch vom Pixelshader überschrieben werden.

Mit diesem Feature D3D12 (und D3D11.3) können Entwickler den Schablonenverweiswert (SV_StencilRef) lesen und verwenden, der von einem Pixelshader ausgegeben wird, wodurch eine Granularität pro Pixel oder Stichprobe ermöglicht wird.

Der angegebene Shaderwert ersetzt den API-angegebenen Verweiswert für diesen Aufruf. Dies bedeutet, dass sich die Änderung sowohl auf den Schablonentest auswirkt, als auch, 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 Pixelshader:

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

Darstellung

Ressourcenbindung in HLSL

Shadermodell 5.1

Festlegen von Stammsignaturen in HLSL