6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

URPのScriptableRendererFeatureとRenderGraphを「旅行ツアー計画」で例えてみる

Posted at

URPのScriptableRendererFeatureとRenderGraphを「旅行ツアー計画」で例えてみる

はじめに

URPのカスタムレンダリングに触れたとき、初見のときはどのコードがどこでいつ実行されるのかよくわからず混乱しました。
本記事では、 旅行ツアー計画 に例えて、仕組みを整理してみます。

全体像

各概念、旅行ツアー計画に例えると、以下のようなイメージです。

  • ScriptableRendererFeature = 行程表(当日のプランを作る)
  • ScriptableRenderPass = 観光スポット訪問枠(観光スポットでなにをやるか決める)
  • RenderGraph = ツアーガイド(当日に観光の順番や内容を最適化する)

ScriptableRendererFeature

実際の仕組み

初めて触れたときは「シーン開始時だけ動くのか?」「毎フレーム呼ばれるのか?」と迷いました。

実際には以下のような動きです。

  • Create() … 初期化処理。Rendererの生成時に1回だけ呼ばれる
  • AddRenderPasses()毎フレーム・各カメラごとに呼ばれ、そのフレームの処理を組み立てる

旅行ツアーでたとえると

  • Create() … ツアー準備
  • AddRenderPasses() … 当日の行程表づくり(どの観光地を回るかリスト化)

ScriptableRenderPass

実際の仕組み

描画処理の単位です。シェーダー実行を含む具体的な処理を担当します。
実際には、Execute() メソッドが呼ばれることでコマンドバッファに処理が積まれ、必要に応じてShaderが走ります。

旅行ツアーでたとえると

各パスは「美術館で展示を鑑賞する予定」「神社で参拝する予定」といった予定に相当します。
そして実際に現地で行動(シェーダー実行)するのが、GPUでの処理です。

RenderGraph

実際の仕組み

RenderGraphはもともとHDRPなどで使われていた仕組みで、URP 2023以降にも導入されました。
リソースの読み書き関係を解析し、実行順序や無駄なコピーを最適化します。

代表的なメソッド:

  • AddRasterRenderPass() … パスをRenderGraphに登録し、依存関係に組み込む

旅行ツアーでたとえると

RenderGraphはツアーガイドのような存在です。
混雑や移動時間を考慮して、効率的なルートを提案してくれます。

おまけ:cameraColor で混乱した話

UniversalResourceData.cameraColor という名前を初めて見たとき、
「カメラから取得したピクセルの色そのもの」を扱っているように思いました。

実際にはそうではなく、RenderGraph管理下の仮想的なテクスチャ(ハンドル)への参照でした。
実際のピクセル配列ではなく、描画処理を構築するためのリソース参照です。

誤解と整理(早見表)

誤解 正しい理解
Featureはシーン起動時だけ動く? 毎フレーム・各カメラごとに処理を組む
RenderGraphは新しい描画API? パス/リソースの依存を最適化する実行計画エンジン
C#でGPUの色計算を書いている? C#は命令の組み立て、色計算はShader
cameraColorはピクセル色そのもの? 仮想テクスチャ(ハンドル)の参照

おわりに

この記事は「過去の自分へのハンドブック」です。
同じ地点で迷子になった人への“地図”として役立てばうれしいです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?