Freigeben über


Shader angegebener Schablonenverweiswert (Direct3D 11-Grafiken)

Das Aktivieren von Pixelshadern zum Ausgeben des Schablonenverweiswerts anstelle der VERWENDUNG des API-angegebenen Werts ermöglicht eine sehr präzise Kontrolle über Schablonenvorgänge.

Der angegebene Shaderwert ersetzt den api-angegebenen Schablonenverweiswert für diesen Aufruf, was bedeutet, dass die Änderung sowohl den Schablonentest betrifft als auch wenn schablonen op D3D11_STENCIL_OP_REPLACE (ein Element von D3D11_STENCIL_OP) verwendet wird, um den Verweiswert in den Schablonenpuffer zu schreiben.

In früheren Versionen von D3D11 kann der Schablonenverweiswert nur durch die ID3D11DeviceContext::OMSetDepthStencilState-Methode angegeben werden. Dies bedeutet, dass dieser Wert nur für eine gezeichnete Granularität definiert werden kann. Dieses D3D11.3-Feature ermöglicht Entwicklern das Lesen und Verwenden des Schablonenverweiswerts (SV_StencilRef), der von einem Pixelshader ausgegeben wird. Dies bedeutet, dass sie pro Pixel oder Pro-Beispiel-Granularität angegeben werden kann.

Dieses Feature ist in D3D11.3 optional. Um die Unterstützung zu testen, überprüfen Sie das PSSpecifiedStencilRefSupported boolesche Feld von D3D11_FEATURE_DATA_D3D11_OPTIONS2 mit ID3D11Device::CheckFeatureSupport

Hier ist ein Beispiel für die Verwendung von SV_StencilRef in einem Pixelshader:

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

Direct3D 11.3-Features

Shadermodell 5.1