Version: Unity 6.0 (6000.0)
言語 : 日本語
ShaderLab のオフセットコマンドのリファレンス
ShaderLab の ZClip コマンドのリファレンス

ShaderLab の Stencil コマンドリファレンス

GPU のステンシルバッファに関する設定を行います。

レンダーパイプラインの互換性

機能名 ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP ビルトインレンダーパイプライン
Stencil はい はい はい はい

構文

シグネチャ 構文例 機能
Stencil
{
    Ref <ref>
    ReadMask <readMask>
    WriteMask <writeMask>
    Comp <comparisonOperation>
    Pass <passOperation>
    Fail <failOperation>
    ZFail <zFailOperation>
    CompBack <comparisonOperationBack>
    PassBack <passOperationBack>
    FailBack <failOperationBack>
    ZFailBack <zFailOperationBack>
    CompFront <comparisonOperationFront>
    PassFront <passOperationFront>
    FailFront <failOperationFront>
    ZFailFront <zFailOperationFront>
}

すべてのパラメーターは任意であることに注意してください。
Stencil
{
    Ref 2
    Comp equal
    Pass keep
    ZFail decrWrap
}
指定されたパラメーターに従って、ステンシルバッファを設定します。

パラメーター

パラメーター 機能
ref 整数。範囲は 0 - 255。デフォルトは 0。 リファレンス値。

GPU は、comparisonOperation で定義されている演算を使用して、ステンシルバッファの現在のコンテンツをこの値と比較します。

この値は、読み取り操作と書き込み操作のどちらが発生しているかに応じて、readMask または writeMask でマスクされます。

GPU は、Pass、Fail、ZFail の値が Replace の場合、この値をステンシルバッファに書き込むこともできます。
readMask 整数。範囲は 0 - 255。デフォルトは 255。 GPU がステンシルテストを行う際に、この値をマスクとして使用します。

ステンシルテストの式については前述を参照してください。
writeMask 整数。範囲は 0 - 255。デフォルトは 255。 GPU はステンシルバッファに書き込む際に、この値をマスクとして使用します。

他のマスク同様に、どのビットが操作に含まれるかを指定します。例えば、値が 0 の場合、ステンシルバッファが値 0 を受け取るのではなく、書き込み操作にビットが含まれていないことを意味します。
comparisonOperation 比較演算。有効な値については、比較演算値 を参照してください。デフォルトは Always。 ステンシルテストのために GPU が全ピクセルに対して行う演算。

面の向きに関わらず、全ピクセルに対する演算を定義します。この演算が comparisonOperationBack と comparisonOperationFront に加えて定義される場合、この値はそれらをオーバーライドします。
passOperation ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストと深度テスト両方をパスしたときに、GPU がステンシルバッファで行う演算。

面の向きに関わらず、全ピクセルに対する演算を定義します。この演算が passOperationBack と passOperationFront に加えて定義される場合、この値はそれらをオーバーライドします。
failOperation ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに失敗したときに、GPU がステンシルバッファで行う演算。

面の向きに関わらず、全ピクセルに対する演算を定義します。この演算が failOperationBack と failOperationFront に加えて定義される場合、この値はそれらをオーバーライドします。
zFailOperation ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに成功したが、深度テストに失敗したときに、GPU がステンシルバッファで行う演算。

面の向きに関わらず、全ピクセルに対する演算を定義します。この演算が zFailOperationBack と zFailOperationFront に加えて定義される場合、この値はそれらをオーバーライドします。
comparisonOperationBack 比較演算。有効な値については、比較演算値 を参照してください。デフォルトは Always。 ステンシルテストのために GPU が実行する操作。

後ろ向きピクセル専用の演算を定義します。comparisonOperation が定義されている場合は、その値がこの値をオーバーライドします。
passOperationBack ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストと深度テスト両方をパスしたときに、GPU がステンシルバッファで行う演算。

後ろ向きピクセル専用の演算を定義します。passOperation が定義されている場合は、その値がこの値をオーバーライドします。
failOperationBack ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに失敗したときに、GPU がステンシルバッファで行う演算。

後ろ向きピクセル専用の演算を定義します。failOperation が定義されている場合は、その値がこの値をオーバーライドします。
zFailOperationBack ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに成功したが、深度テストに失敗したときに、GPU がステンシルバッファで行う演算。

後ろ向きピクセル専用の演算を定義します。zFailOperation が定義されている場合は、その値がこの値をオーバーライドします。
comparisonOperationFront 比較演算。有効な値については、比較演算値 を参照してください。デフォルトは Always。 ステンシルテストのために GPU が実行する操作。

正面向きピクセル専用の演算を定義します。comparisonOperation が定義されている場合は、その値がこの値をオーバーライドします。
passOperationFront ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストと深度テスト両方をパスしたときに、GPU がステンシルバッファで行う演算。

正面向きピクセル専用の演算を定義します。passOperation が定義されている場合は、その値がこの値をオーバーライドします。
failOperationFront ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに失敗したときに、GPU がステンシルバッファで行う演算。

正面向きピクセル専用の演算を定義します。failOperation が定義されている場合は、その値がこの値をオーバーライドします。
zFailOperationFront ステンシル演算です。有効な値については、ステンシル演算値 を参照してください。デフォルトは Keep。 ピクセルがステンシルテストに成功したが、深度テストに失敗したときに、GPU がステンシルバッファで行う演算。

正面向きピクセル専用の演算を定義します。zFailOperation が定義されている場合は、その値がこの値をオーバーライドします。

比較値

C# では、これらの値は Rendering.CompareFunction enum で示されます。

Rendering.CompareFunction enum に対応する整数値 機能
Never 1 ピクセルをまったくレンダリングしません。
Less 2 リファレンス値がステンシルバッファの現在値よりも小さい場合に、ピクセルをレンダリングします。
Equal 3 リファレンス値がステンシルバッファの現在の値と等しい場合に、ピクセルをレンダリングします。
LEqual 4 リファレンス値がステンシルバッファの現在の値以下の場合に、ピクセルをレンダリングします。
Greater 5 リファレンス値がステンシルバッファの現在値よりも大きい場合に、ピクセルをレンダリングします。
NotEqual 6 リファレンス値がステンシルバッファの現在値と異なる場合に、ピクセルをレンダリングします。
GEqual 7 リファレンス値がステンシルバッファの現在の値以上の場合に、ピクセルをレンダリングします。
Always 8 常にピクセルをレンダリングします。

ステンシル値

C# では、これらの値は、Rendering.Rendering.StencilOp enum で示されます。

Rendering.StencilOp enum に対応する整数値 機能
Keep 0 ステンシルバッファの現在のコンテンツを維持します。
Zero 1 ステンシルバッファに 0 を書き込見ます。
Replace 2 リファレンス値をバッファに書き込みます。
IncrSat 3 バッファの現在値をインクリメントします。値がすでに 255 の場合は 255 のままです。
DecrSat 4 バッファの現在値をデクリメントさせます。値がすでに 0 の場合は 0 のままです。
Invert 5 バッファの現在の値のすべてのビットをネガティブにします。
IncrWrap 6 バッファの現在値をインクリメントします。値がすでに 255 の場合は 0 になります。
DecrWrap 7 バッファの現在値をデクリメントさせます。値がすでに 0 の場合は 255 になります。

追加リソース

ShaderLab のオフセットコマンドのリファレンス
ShaderLab の ZClip コマンドのリファレンス