次の方法で共有


シェーダー指定ステンシル参照値 (Direct3D 12 グラフィックス)

API で指定された値を使用するのではなく、ピクセル シェーダーがステンシル参照値を出力できるようにすると、ステンシル操作を細かく細かく制御できます。

ステンシル参照値は、通常、ID3D12GraphicsCommandList::OMSetStencilRef メソッドによって指定されます。 このメソッドは、描画単位の粒度でステンシル参照値を設定します。 ただし、この値はピクセル シェーダーによって上書きできます。

この D3D12 (および D3D11.3) 機能を使用すると、開発者はピクセル シェーダーから出力されるステンシル参照値 (SV_StencilRef) を読み取って使用し、ピクセル単位またはサンプル単位の細分性を実現できます。

シェーダー指定の値は、その呼び出しの API 指定の参照値を置き換えます。つまり、変更はステンシル テストに影響し、ステンシル操作D3D12_STENCIL_OP_REPLACE (D3D12_STENCIL_OPの 1 つのメンバー) を使用してステンシル バッファーに参照値を書き込みます。

この機能は、D3D12 と D3D11.3 の両方で省略可能です。 サポートをテストするには、checkFeatureSupportを使用して、D3D12_FEATURE_DATA_D3D12_OPTIONSPSSpecifiedStencilRefSupported ブール型フィールド確認します。

ピクセル シェーダーでの SV_StencilRef の使用例を次に示します。

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

レンダリング

HLSL でのリソース バインドの

シェーダー モデル 5.1

HLSL でのルート署名の指定の