コマンドバッファはレンダリングコマンドのリストを保持します。これらのコマンドのスケジュールと実行を Unity に指示することができます。
このページでは、ビルトインレンダーパイプラインのコマンドバッファの使用に関して説明します。スクリプタブルレンダーパイプライン (SRP) のコマンドバッファの使用については、スクリプタブルレンダーパイプラインのレンダリングコマンドのスケジュールと実行を参照してください。
コマンドバッファを使用して実行できるコマンドの完全なリストは、スクリプトリファレンスの CommandBuffer を参照してください。一部のコマンドは特定のハードウェアでのみサポートされていることに注意してください。例えば、レイトレーシングに関するコマンドは DX12 でのみサポートされています。
Graphics.ExecuteCommandBuffer API を使用して、コマンドバッファを即座に実行できます。
ビルトインレンダーパイプラインでは、レンダーループの特定の時間にコマンドバッファを実行できます。これを行うには、CameraEvent 列挙型と共に Camera.AddCommandBuffer API を使い、LightEvent 列挙型と共に Light.AddCommandBuffer API を使います。
例えば、CameraEvent の AfterGBuffer とともにコマンドバッファを使用すると、パイプラインがすべての不透明なゲームオブジェクトを処理した後に、追加のゲームオブジェクトを ディファードパイプライン にレンダリングすることができます。
実行の順序は、プロジェクトが使用するレンダリングパスによって異なります。
ディファードレンダリングパス | |
---|---|
BeforeGBuffer | |
不透明なジオメトリをレンダリングします。 | |
AfterGBuffer | |
深度を解決します。 | |
BeforeReflections | |
デフォルトのリフレクションをレンダリングします 。 | |
リフレクションプローブのリフレクションをレンダリングします。 | |
AfterReflections | |
リフレクションを G バッファのエミッシブチャンネルにコピーします。 | |
BeforeLighting | |
影をレンダリングします。LightEvent の実行順序を参照してください。 | |
AfterLighting | |
BeforeFinalPass | |
最終パスを処理します。 | |
AfterFinalPass | |
BeforeForwardOpaque (ディファードを使用してレンダリングできない不透明なジオメトリがある場合にのみ呼び出されます) | |
ディファードレンダリングで処理できない不透明なジオメトリをレンダリングします。 | |
AfterForwardOpaque (ディファードを使用してレンダリングできない不透明なジオメトリがある場合にのみ呼び出されます) | |
BeforeSkybox | |
スカイボックスをレンダリングします。 | |
AfterSkybox | |
ハローをレンダリングします。 | |
BeforeImageEffectsOpaque | |
Post-processing Stack V2 パッケージを使用している場合、不透明のみのポストプロセスエフェクトを適用します。 | |
AfterImageEffectsOpaque | |
BeforeForwardAlpha | |
透明なジオメトリと、レンダリングモードが Screen Space - Camera (スクリーンスペース - カメラ) に設定されているUI Canvases をレンダリングします。 | |
AfterForwardAlpha | |
BeforeHaloAndLensFlares | |
レンズフレアをレンダリングします。 | |
AfterHaloAndLensFlares | |
BeforeImageEffects | |
Post-processing Stack V2 パッケージを使用している場合、ポストプロセスエフェクトを適用します。 | |
AfterImageEffects | |
AfterEverything | |
レンダリングモードが Screen Space - Camera (スクリーンスペース - カメラ) ではない UI Canvase をレンダリングします。 |
フォワードレンダリングパス |
---|
BeforeDepthTexture |
不透明なジオメトリの深度をレンダリングします。 |
AfterDepthTexture |
BeforeDepthNormalsTexture |
不透明なジオメトリの深度法線をレンダリングします。 |
AfterDepthNormalsTexture |
影をレンダリングします。LightEvent の実行順序を参照してください。 |
BeforeForwardOpaque |
不透明なジオメトリをレンダリングします。 |
AfterForwardOpaque |
BeforeSkybox |
スカイボックスをレンダリングします。 |
AfterSkybox |
ハローをレンダリングします。 |
BeforeImageEffectsOpaque |
Post-processing Stack V2 パッケージを使用している場合、不透明のみのポストプロセスエフェクトを適用します。 |
AfterImageEffectsOpaque |
BeforeForwardAlpha |
透明なジオメトリと、レンダリングモードが Screen Space - Camera (スクリーンスペース - カメラ) に設定されているUI Canvases をレンダリングします。 |
AfterForwardAlpha |
BeforeHaloAndLensFlares |
レンズフレアをレンダリングします。 |
AfterHaloAndLensFlares |
BeforeImageEffects |
Post-processing Stack V2 パッケージを使用している場合、ポストプロセスエフェクトを適用します。 |
AfterImageEffects |
AfterEverything |
レンダリングモードが Screen Space - Camera (スクリーンスペース - カメラ) に設定されているUI Canvases をレンダリングします。 |
影のレンダリングの段階で、影を投影する各ライトに対して Unity は以下を実行します。
BeforeShadowMap | |
BeforeShadowMapPass 現在のパス (pass) のすべてのシャドウキャスターをレンダリングします。 AfterShadowMapPass |
|
各パス (pass) で繰り返します | |
AfterShadowMap | |
BeforeScreenSpaceMask | |
シャドウマップをスクリーンスペースバッファに集め、フィルタリングを行います。 | |
AfterScreenSpaceMask |