![見出し画像](https://assets.st-note.com/production/uploads/images/172516366/rectangle_large_type_2_51b8f984a64665421e927352816ede18.png?width=1200)
ちゃんと話せる?Unityのレンダーパイプライン【Built-in RP/URP/HDRP入門】
突然ですが、“Unityのレンダーパイプライン”のこと、ちゃんと説明できますか?
クリエイターとしてグラフィック描画の知識としては、頭に入れておきたいことの1つでありますが、Unityのレンダーパイプラインをざっくり知っているつもりでも“実は曖昧”という人も多いのではないでしょうか?かくいう私もその1人でした。
これを読めばUnityのレンダーパイプラインについて基礎的なことは「ちゃんと話せる!」レベルを目指せるはず。
と思い記事を書いています。
ぜひそれぞれの違いや特徴をおさらいしてみてください。
レンダーパイプラインとは?
そもそも「レンダーパイプライン」とは、シーン内のデータ(3Dモデル)を最終的に画面に描画するための全体の仕組みや処理の流れを指します。
超ざっくり説明すると工場の生産ラインのようなものとも理解できます。
おおまかなステップとしては、以下のような工程があります。
カリング
レンダリング
ポストプロセッシング
この全体の流れをどう扱うかが「レンダーパイプライン」です。
Unityにある2つの系統:Built-in Render Pipeline と Scriptable Render Pipeline
そしてUnityには大きく2種類のレンダーパイプラインの種類があります。Built-in Render Pipeline と Scriptable Render Pipelineです。そして
Scriptable Render Pipelineの公式テンプレートがURP/HDRPになります。
プロジェクトで使用する際に3種類のテンプレートが出てくるのはこのためですね。
![](https://assets.st-note.com/img/1738256033-qWkIsioZp2v0g1jyNVSKBaYL.png?width=1200)
3つのレンダーパイプライン(RP)の特徴
それぞれの特徴を見ていきたいと思います。
Built-in Render Pipeline(Built-in RP)
標準の方式であり、長く使われてきた歴史があるため、既存アセットが充実しています。ノウハウが蓄積されていたりしていて、取り組みやすいRPと言えます。負荷の高いライティング等を行った際にターゲットのスペックの違いによってそのまま表現されたり、自動的に一部がカットされたりする仕組みを持ちます。
Universal Render Pipeline(URP)
軽量かつ汎用性重視の設計で、モバイルやVRなど、幅広いプラットフォームに最適化され様々な開発に使われています。公式からもBuilt-in Render Pipelineの後継といわれております。
High Definition Render Pipeline(HDRP)
高品質・ハイエンド向けの設計で、フォトリアルな表現やレイトレーシングなどの先進機能に対応しています。
URP/HDRPのシェーダー・ライティングについて
上記のような違いがある中で、シェーダーとライティングの考え方についてクリエイターとしては知っておきたいところです。どちらのパイプラインも物理ベースマテリアル(PBR)を前提としているため、素材の質感やライティングを正しく設定することは大切になってきます。今回は概要だけ触れていきます。
URP/HDRPのシェーダー
URPでの標準シェーダーはPBRに基づいているLitシェーダーです。
その他にも負荷が軽い非物理ベースSimple Lit シェーダー、動的ライティングを使わないBaked Lit シェーダーがあります。他にはShader Graphを使ってオリジナルのシェーダーを作成したりします。
HDRP でも、Lit シェーダー が用意されていますが、高機能です。
それ以外に、最大4つまで重ねて利用するLayerd Lit シェーダーや、GPUテッセレーションを加えるLit Tessellation 等、URPの Lit シェーダーとは機能や処理が異なり、多彩なパラメータが用意されています。
URP/HDRPのライティング
URPには、シングルパスフォワードレンダリング/ディファードレンダリング/フォワード+というレンダリングパスがあり、下記のような特徴があります。
1. シングルパスフォワードレンダリング(Forward Rendering)
・1つのマテリアル(オブジェクト)に対して反映されるライト数が限定される(デフォルト4個、設定次第で最大8個)。
・上限以内であればライト数を増減してもパフォーマンスへの影響が比較的少ない。
・オブジェクト単位でライティングを計算するため、モバイルや VR に適した軽量レンダリング。
2. ディファードレンダリング(Deferred Rendering)
・多数のライトがあるシーンでパフォーマンスを最適化しやすい。
・影が不要なライトを多数配置できる屋内や都市シーンなどに向いている。
・半透明オブジェクトの描画が弱点。
・ピクセル単位でライティング計算が行われるため、高品質だがメモリ使用量は多くなる傾向。
3. フォワード+(Forward Plus)
・従来の Forward Rendering よりも細かい単位でライトの影響範囲を管理できる拡張手法。
・影響範囲の狭いライトを多数配置するシーンで効果的。
・高品質なライティングを実現しつつ GPU の性能を生かせるが、対応環境やプラットフォームに注意が必要。
HDRPにおいてもフォワードレンダリングとディファードレンダリングが選択可能です。
またHDRPでは、レイトレーシングを使用することができます。
これはBuilt-in RP・URPでは使用できない、HDRPの独自機能になります。
レンダーパイプラインをきっかけに視野を広げる
いかがでしたでしょうか。今回はUnityレンダーパイプラインの概要について触れてみました。
どれを選んだらいいかということに関しては、
プロジェクトの要求スペックや表現したいビジュアルの質や自身の学習コストにバランスに合わせて選択することが重要なのですが、
URPは汎用的であったり、軽さを求める場合、HDRPは高品質で超美麗なアウトプットの場合、Built-in RPは従来型としてアセットを利用したい場合に有効です。
またURPとHDRPを調べていると、次期Unityでの統合の話も上がっているようでした。こちらも今後注目な情報です。
#unity 次期Unity(6の更に次)でURPとHDRPが統合され"Unified Renderer"になるとアナウンスされました。これはHDRPが中々普及せず、元々移行措置で用意されたURPが設計が歪なまま使い続けられている事への抜本的な対応かと思います。以前書いたこちらのツイートを参照。近い内にブログに纏め直します https://t.co/LZvYAI1yL3
— 土屋つかさ (@t_tutiya) September 26, 2024
既存のプラットフォームを使用してVRやARコンテンツを作成する場合は、プラットフォーム側で指定があるので、そちらに従っていただければ問題ありませんが、レンダーパイプライン周りの知識があると制作の視野が広がると感じています。
またどのパイプラインでも「物理ベースマテリアル」を理解して質感を正しく設定することで、理想的な表現を得られると思います。
そのあたりの周辺知識についても今後リサーチしていきたいと思います。
それでは!
いいなと思ったら応援しよう!
![Fujito](https://assets.st-note.com/production/uploads/images/114429677/profile_82ddcbb2d03c7c42b09b7d9a6185efe4.jpg?width=600&crop=1:1,smart)