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

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

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

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

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

レンダーパイプラインインスタンスとレンダーパイプラインアセット

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

  • A レンダーパイプラインインスタンス これは、レンダーパイプラインの機能を定義するクラスのインスタンスです。そのスクリプトは、RenderPipeline を継承し、Render() メソッドをオーバーライドします。
  • A レンダーパイプラインインアセット これは Unity プロジェクトのアセットで、どのレンダーパイプラインインスタンスを使用するか、どのように設定するかについてのデータを保存します。そのスクリプトは、RenderPipelineAsset を継承し、その CreatePipeline() メソッドをオーバーライドします。

これらの要素の詳細やカスタムレンダーパイプラインでの作成方法については、レンダーパイプラインインアセットとレンダーパイプラインインインスタンスの作成 を参照してください。

ScriptableRenderContext

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

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

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

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

  • RenderPipeline.Render は、SRP への主要なエントリーポイントです。Unity はこのメソッドを自動的に呼び出します。カスタムのレンダーパイプラインを書く場合は、ここからコードを書き始めます。
  • RenderPipelineManager クラスには、サブスクライブできる以下のイベントがあります。これにより、レンダーループの特定のポイントでカスタムコードを実行することができます。
スクリプタブルレンダーパイプラインの基礎
スクリプタブルレンダーパイプラインにおけるレンダリングコマンドのスケジューリングと実行