Version: 2020.1
スクリプタブルレンダーパイプラインの基礎
スクリプタブルレンダーパイプラインにおけるレンダリングコマンドのスケジューリングと実行

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

このページでは、Unity の スクリプタブルレンダーパイプライン (SRP) の仕組みを説明し、いくつかの重要な概念や用語を紹介します。このページの情報は、ユニバーサルレンダーパイプライン (URP)、HD レンダーパイプライン (HDRP)、SRP をベースにしたカスタムレンダーパイプラインに当てはまります。

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

URP と HDRP は SRP の上に構築されています。また、SRP の上に独自のカスタムレンダーパイプラインを作成することもできます。

Render Pipeline Asset and Render Pipeline Instance

SRP に基づくすべてのレンダーパイプラインには、カスタマイズされた 2 つの重要な要素があります。

  • A Render Pipeline Asset, which is an asset in your Unity Project that stores configuration data about the render pipeline.
  • A Render Pipeline Instance, which is a class that inherits from RenderPipeline. Its Render method is the main entry point to SRP.

For information about creating these elements in a custom render pipeline, see Creating a Render Pipeline Asset and a Render Pipeline Instance.

ScriptableRenderContext

ScriptableRenderContext は、レンダーパイプラインのカスタムの C# コードと Unity の低レベルグラフィックコードの間のインターフェースとして機能するクラスです。

ScriptableRenderContext API を使用して、レンダリングコマンドのスケジューリングと実行を行います。詳しくは、スクリプタブルレンダーパイプラインでのレンダリングコマンドのスケジューリングと実行 を参照してください。

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

SRP を使用する場合、以下を使用して Unity が特定の時間に C# コードを呼び出すようにします。

  • The Render method of the class that inherits from RenderPipeline is the main entry point to the SRP. If you are writing a custom render pipeline, this is where you should begin to write your code.

    Unity calls this method automatically. In a standalone application, Unity calls this method once per frame to render the main view, and once per frame for each manual call to ScriptRef:Camera.Render. In the Unity Editor, Unity calls this method once per frame for each Scene view or Game view that is visible, once per frame if if the Scene camera preview is visible, and once per frame for each manual call to ScriptRef:Camera.Render.
  • The RenderPipelineManager class has the following events that you can subscribe to:
スクリプタブルレンダーパイプラインの基礎
スクリプタブルレンダーパイプラインにおけるレンダリングコマンドのスケジューリングと実行