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 2Comp equalPass keepZFail 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 になります。 |