はじめに
Unity初学者です。
ゲーム開発の学習を進めていく中で、
よく出てくるレンダーパイプラインについて自分なりに調べてみました。
レンダーパイプライン
レンダーパイプラインは、シーンのコンテンツを取得し、画面に表示する一連の操作を行います。
コンテンツを画面に描画するための一連の処理を指すらしい。
処理の中身はパイプラインの種類によってどうやら変わるっぽい。
簡単に説明すると、以下のような操作です。
カリング
レンダリング
ポストプロセッシング
カリング
描画する必要のないオブジェクトを描画しないようにすることでメモリ負荷を軽減する設定のこと。プレイヤーの死角になっている部分のオブジェクトは描画しない等。
レンダリング
3Dモデルのポリゴンやテクスチャのデータを処理し、画像や映像として画面に表示させること。
ポストプロセッシング
エフェクトやフィルターをカメラの映像に適用すること。
UPRやHDPRでは標準で利用できるっぽい。
レンダーパイプラインの種類
Built-in Render Pipeline
Unityのデフォルトのレンダリングパイプライン。カスタマイズのオプションが限られている。
Universal Render Pipeline(URP)
素早く簡単にカスタマイズでき、幅広いプラットフォームで最適化されたグラフィックスを作成できる。
High Definition Render Pipeline(HDPR)
ハイエンドプラットフォームで最先端の忠実度の高いグラフィックスを作成できる。UnityのスクリプタブルレンダーパイプラインAPIを使って、独自のカスタムレンダーパイプラインを作成することができる。
※UPRとHDPRはScriptable Render Pipeline(SPR)と言って、C#スクリプトを使ってレンダリングを制御する機能らしい。
ビルトインからURPへの変換
ビルトインからURPに移行させたという記事は調べたらたくさん出てくる。
ざっくりと移行のメリットとして挙げられているのは、
- 利用できる機能が増える
- 描画処理が最適化されており負荷が軽減される
というもの。
公式ドキュメントにも手順が記載されていた。
Window > Rendering > Render Pipeline Converter > Built-in to URPから変換可能。
一度変換すると元に戻せなくなる可能性があるので、事前にバックアップをとっておいた方が良い。ただ、上記機能を使用する際は注意点もあり、いろいろと互換性が無いものもある。
- URPはカスタムシェーダーやサーフェスシェーダーをサポートしていない
- カスタムシェーダーをURPで動作させるためには、シェーダーを書き直すかShaderGraphで再作成する必要がある
古いアセットを使用する場合等は特に注意しないと面倒なことになりそう。
結局どれを使えばいいの?
古いアセットを使用する場合はURPに対応しているか、URPへの変換が可能かを事前に確認しておく必要がありそう。問題なければ小規模開発ではURPを使うのか一番良さそう。