Scriptable Renderer Feature(スクリプタブル・レンダーフィーチャー / 通称:Render Feature)は、Unity URP(Universal Render Pipeline)のレンダリングパイプラインをC#スクリプトやプリセット設定を用いて拡張し、独自のカスタム描画処理(描画パス)をパイプラインの任意のタイミングに動的に挿入するための強力なフレームワークです。
現実世界での例え:ピザの基本の焼き上げ工程と『お好みトッピングの追加インジェクション』
Render Featureの仕組みは、「既製のピザ(デフォルトの描画フロー)を焼き上げる工程の途中で、自分好みの『追加トッピング(カスタム描画パス)』を挟み込む工程」に例えることができます。
- 従来(デフォルトの描画のみ): ピザ窯(URPパイプライン)は、工場出荷時の厳格な全自動ルールに従い、「生地を引く(不透明描画) -> ソースを塗る(シャドウマップ適用) -> チーズを載せて焼く(半透明・ポストプロセス)」という一連の流れをノンストップで実行します。途中で手動で何かを差し挟むことは完全に禁止されています。
- Render Featureによる拡張: ピザ窯のラインの途中に「特設追加トッピングステーション(Render Feature)」を合法的かつ安全にネジ込みます。「ソースを塗った後、かつチーズを載せる直前(例えば不透明オブジェクト描画後、半透明描画前のタイミング)」のラインを検知し、そこに『特製のバジルペースト(アウトライン描画やモザイクバッファの追加描画パス)』を割り込ませて塗ることができます。これにより、基本のピザの焼き上がりルール(URP)を一切壊すことなく、完璧にカスタマイズされたオリジナルピザ(特殊描画)を完成させることができます。
図:URPデフォルトのレンダーパスの隙間にカスタムパスをインジェクションするRender Featureの仕組み
仕組みと動作原理
URPのレンダラー(Universal Rendererなど)の設定アセットの最下部にある「Renderer Features」リストに登録します。登録されたFeatureは、C#クラス内で定義された ScriptableRenderPass を生成し、パイプラインの EnqueuePass メソッドを介して「描画パスの実行キュー」に登録されます。描画タイミング(不透明描画後、ポストプロセス後など)は、C#内の RenderPassEvent 列挙型で精密に指定できます。