このページでは、ビルトインレンダーパイプラインのコマンドバッファの使用に関して説明します。スクリプタブルレンダーパイプライン (SRP) に基づくレンダーパイプラインのコマンドバッファの使用については、スクリプタブルレンダーパイプラインのレンダリングコマンドのスケジュールと実行 を参照してください。
コマンドバッファ には、レンダリングコマンド (レンダーターゲットの設定や、指定したメッシュの描画など) のリストが格納されています。Unity に指示して、これらのコマンドをビルトインレンダーパイプラインの様々な時点でスケジュールして実行するように Unity のレンダリング機能をカスタマイズして拡張することができます。
Graphics.ExecuteCommandBuffer API を使ってコマンドバッファをすぐに実行することができます。または、レンダーパイプラインの特定の時点で発生するようにスケジュールすることもできます。それらをスケジュールするには、Camera.AddCommandBuffer API をCameraEvent enum と共に使う、あるいは Light.AddCommandBuffer API を LightEvent enum と共に使用します。このようにしてスケジュールしたコマンドバッファを Unity がいつ実行するかは、CameraEvent と LightEvent の実行順序 を参照してください。
コマンドバッファを使用して実行できるコマンドの完全なリストは、スクリプトリファレンスの CommandBuffer を参照してください。一部のコマンドは特定のハードウェアでのみサポートされていることに注意してください。例えば、レイトレーシングに関するコマンドは DX12 でのみサポートされています。
Unity のブログポストExtending Unity 5 rendering pipeline:Command Buffers は、ビルトインレンダーパイプラインのコマンドバッファを紹介しています。この記事では、コマンドバッファを使っていくつかの異なるエフェクトを実現する方法が説明されており、サンプルプロジェクトとサンプルコードが含まれています。このプロジェクトは古いバージョンの Unity 用に作成されたものですが、原理は同じです。
CameraEvent の実行順序は、プロジェクトが使用する レンダリングパス によって異なります。
ディファードレンダリングパス
フォワードレンダリングパス
影のレンダリングの段階で、影を投影する各ライトに対して Unity は以下を実行します。