Shader angegebener Schablonenverweiswert (Direct3D 12-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 Schablonenverweiswert wird normalerweise durch die ID3D12GraphicsCommandList::OMSetStencilRef-Methode angegeben. Diese Methode legt den Schablonenverweiswert für eine gezeichnete Granularität fest. Dieser Wert kann jedoch vom Pixelshader überschrieben werden.
Mit diesem Feature von 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 pro Beispiel aktiviert wird.
Der angegebene Shaderwert ersetzt den API-angegebenen Verweiswert für diesen Aufruf, d. h. die Änderung wirkt sich sowohl auf den Schablonentest aus, als auch wenn der Schablonenvorgang D3D12_STENCIL_OP_REPLACE (ein Element 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 PSSpecifiedStencilRefSupported booleschen Feld von D3D12_FEATURE_DATA_D3D12_OPTIONS mithilfe 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);
}
Verwandte Themen