Injection Points
Unity がいつ Custom Pass Volume を実行するかを決定するために、Custom Pass Volume コンポーネントの Injection Point (投入ポイント) を選択します。
投入ポイントはそれぞれ、カスタムパスがシーンでどのように表示されるかに影響を与えます。HDRP レンダーループには、6 つの投入ポイントがあります。Unity は各投入ポイントにつきカスタムパスを 1 つのみ実行できます。
投入ポイントは Custom Pass Volume コンポーネントが選択したバッファにアクセスできるようにします。利用できるバッファはそれぞれ、各 投入ポイント で異なる読み込み/書き込みアクセスを持ちます。各バッファには、パスの前にレンダリングされるオブジェクトのサブセットが含まれます。
DrawRenderers Custom Pass では、特定の投入ポイントで、特定のマテリアルのみを使うことができます。互換性のあるマテリアルの完全なリストは、マテリアルと投入ポイントの互換性 を参照してください。
Unity がレンダーループで実行するアクションを分析し、Unity がどこでカスタムパスを実行するかを確認するには、フレームデバッガー を使います。
Unity はフレーム内で上から下の順に、次の投入ポイントをトリガーします。
Injection point | 利用可能なバッファ | 説明 |
---|---|---|
BeforeRendering | 深度 (書き込み) | Unity はこの投入ポイントの直前に深度バッファをクリアにします。 この投入ポイントでは、深度バッファに書き込むことで Unity は深度テストされた不透明のオブジェクトをレンダリングしません。 なお自分で割り当てたバッファ、または Custom Buffer をクリアにすることも可能です。FullscreenCustom Pass にこの投入ポイントを選択すと、Unity はデフォルトでカメラカラーバッファをターゲットとして割り当てます。 |
AfterOpaqueDepthAndNormal | Depth (Read | Write), Normal and roughness (Read | Write) | この投入ポイントに利用可能なバッファには、すべての不透明オブジェクトが含まれます。 この投入ポイントでは、法線、粗さ、および深度バッファを修正できます。HDRP はこれをライティングと深度ピラミッドに考慮します。 法線および粗さは同じバッファになります。 DecodeFromNormalBuffer と EncodeIntoNormalBuffer メソッドを使い、法線および粗さデータを読み込み/書き込みすることができます。 |
BeforePreRefraction | Color (no pyramid | Read | Write), Depth (Read | Write), Normal and roughness (Read) | この投入ポイントに利用可能なバッファには、すべての不透明オブジェクトと空が含まれます。 この投入ポイントでは、屈折を必要とするすべての透明オブジェクトをレンダリングできます。これらのオブジェクトはその後、Unity が透明オブジェクトをレンダリングする際に屈折に使う、カラーピラミッドに含まれます。 |
BeforeTransparent | Color (Pyramid | Read | Write), Depth (Read | Write), Normal and roughness (Read) | この投入ポイントに利用可能なバッファには以下が含まれるます。 - すべての不透明オブジェクト。 - 屈折前の透明オブジェクト。 - 深度プレパスおよびスクリーンスペースリフレクション (SSR) が有効な透明オブジェクト。 この投入ポイントでは、Unity が透明屈折に使うカラーピラミッドをサンプルできます。これを使ってブラーエフェクトを作ることができます。Unity がこの投入ポイントでレンダリングするすべてのオブジェクトは、カラーピラミッドに含まれません。 さらにこの投入ポイントを使って、水のようにシーン全体を屈折させる透明オブジェクトを描画することもできます。 |
BeforePostProcess | Color (Pyramid | Read | Write), Depth (Read | Write), Normal and roughness (Read) | この投入ポイントに利用可能なバッファには、ハイダイナミックレンジ (HDR) を使うフレーム内のすべてのジオメトリが含まれます。 |
AfterPostProcess | Color (Read | Write), Depth (Read) | この投入ポイントに利用可能なバッファには、ポストプロセスエフェクトを含む、シーンの最終レンダーが含まれます。 この投入ポイントは、Unity がポストプロセスエフェクトを適用した後に、利用可能なバッファを実行します。 この投入ポイントを選択した場合、深度バッファを使うオブジェクトにはジッターを起こしたアーティファクトを表示します。 この投入ポイント FullscreenCustom Pass に選択すると、Unity はデフォルトでカメラカラーバッファをターゲットとして割り当てます。 |
次の図表は、Unity がカスタムパスを HDRP フレームに投入する場所を図解しています。