Version: 2019.4
スクリプタブルレンダーパイプライン
カスタムのスクリプタブルレンダーパイプラインの作成

スクリプタブルレンダーパイプラインの概要

このページではスクリプタブルレンダーパイプライン (Scriptable Render Pipeline、SRP) の機能を説明し、重要な概念と用語の一部を説明します。

SRP は、C# スクリプトを使用してレンダリングのコマンドのスケジュールと設定を行うための 薄い API レイヤーです。SRP はこれらのコマンドを Unity の低レベルのグラフィックスアーキテクチャに渡し、グラフィックス API に指示を送信します。 

レンダリングパイプラインアセットとレンダリングパイプラインインスタンスの作成

スクリプタブルレンダーパイプライン (SRP) で C# のレンダリングコードを作成する場合は、2 つのキー要素を作成してカスタマイズする必要があります。

  • レンダリングパイプラインアセットは Unity プロジェクトのアセットで、SRP に関する設定データを保存します。Rendering.RenderPipelineAsset を継承するスクリプトを作成してレンダリングパイプラインアセットを定義し、次にプロジェクトにレンダリングパイプラインアセットのインスタンスを作成して設定します。
  • レンダリングパイプラインインスタンスは SRP へのエントリーポイントである Render() メソッドを持つクラスです。レンダリングパイプラインインスタンスを定義するには、RenderPipeline を継承するスクリプトを作成します。

これらの要素の作成に関しては、レンダリングパイプラインアセットとレンダリングパイプラインインスタンスの作成を参照してください。

スクリプタブルレンダーコンテキスト

スクリプタブルレンダーコンテキスト (Scriptable Render Context) は、C# の SRP コードと Unity の低レベルグラフィックスコード間のインターフェースとして機能するクラスです。ScriptableRenderContext API を使用して、レンダリングコマンドをスケジュールして実行します。

スクリプタブルレンダーコンテキストの使用に関する詳細は、スクリプタブルレンダーパイプラインのレンダリングコマンドのスケジュールと実行を参照してください。

エントリーポイントとコールバック

SRP では、Unity が特定の時間に呼び出す C# レンダリングコードを書くことができます。

  • レンダリングパイプラインインスタンスの Render() メソッドは SRP へのエントリーポイントです。Unity は、現在レンダリングしている各 CameraType に対して、フレームごとに 1 回、このメソッドを呼び出します。SRP をカスタマイズするには、このメソッドをカスタマイズします。
  • RenderPipelineManager クラスには、beginFrameRenderingbeginCameraRenderingendCameraRenderingendFrameRendering の 4 つのイベントがあります。これらのイベントをサブスクライブして、レンダリングパイプラインの特定の時点でコードを実行します。独自のカスタム製の SRP を作成する場合は、SRP がこれらのイベントを適切なタイミングで発するようにする必要があります。
スクリプタブルレンダーパイプライン
カスタムのスクリプタブルレンダーパイプラインの作成