Custom Pass Volume ワークフロー
Custom Pass Volume のワークフローは、HDRP Volumes フレームワークに類似しています。ただし、その 2 つの間には次の異なる点があります。
- Custom Pass Volume はブレンドできませんが、Custom Pass Volume コンポーネント の Fade Radius を使って、フェードすることは可能です。
- Unity は Custom Pass データをプロジェクト内のアセットではなく、GameObject 上に保存します。
- 同じ投入ポイントを持つシーンに、1 つ以上の Custom Pass がある場合、Unity は Priority の順位に従ってVolume を実行します。
シーンのすべてのカメラに影響を与える Custom Pass Volume を作成するには、Custom Pass Volume コンポーネントの Mode を Global に設定します。Volume の境界内にあるカメラのみに影響を与える Custom Pass Volume を作成するには、Custom Pass Volume コンポーネントの Mode を Local に設定します。
Priority フィールドを使うと、シーンの複数の Custom Pass Volume の実行順位を決定できます。2 つの Custom Pass Volume に同じ優先順位がある場合は、Unity 次の方法でそれらを実行します。
- 両方の Custom Pass Volume が Global のときは、実行順序は定義されません。
- 両方の Custom Pass Volume が Local のときは、Unity は最小のコライダーを持つボリュームから先に実行します (フェード半径は無視します)。両方の Volume が同じコライダーを持つ場合は、順序は定義されません。
- 1 つの Custom Pass Volume が Local でもう 1 つが Global のときは、Unity は Local Volume をまず実行してから、Global Volume を実行します。
Custom Pass Volume の Mode が Local に設定されている場合、Custom Pass Volume コンポーネント の Fade Radius を使って、通常のレンダリングから Custom Pass への移行をスムーズにすることができます。フェード半径値はメートルで計測され、割り当てられたオブジェクトを変換する際に拡大縮小しません。
下の画像は、フェード半径の外側境界線をワイヤーフレームボックスとして視覚化しています。この画像のカスタムパスボリュームには、ボリュームを視覚化する Box Collider コンポーネントが含まれています。
C# を使ってフェード半径を変更する
コードでフェード半径を変更するには、シェーダーのビルトイン _FadeValue
変数および C# スクリプトの CustomPass.fadeValue
を使います。これらの変数は、コライダーバウンディング Volume から Camera までの距離を示す、0 から 1 のスケールで操作します。詳細は、C# で独自の Custom Pass をスクリプトする を参照してください。