Unityを使っていると、よく「URP」という単語を目にすることがあります。これはざっくり言えばUnityのグラフィックの描画方式の一つなのですが、初心者の方からしてみれば
- URPって一体何なの?
- デフォルトのテンプレートと何が違うの?
- どうやって導入すればいいの?
といった疑問の元になっていて混乱してしまいますよね。そこでここではURPの概要や導入方法についてまとめておきますね。
URP(Universal Render Pipeline)とは?
でははじめに、そもそもURPとは何か?といった部分から説明します。
前提知識:レンダリングパイプラインについて
URPについて説明するためにはまず「レンダリングパイプライン」について知っておかなければなりません。ただまあこれについては私も全くの素人なので、詳しく知りたい方は外部の分かりやすいサイトをご覧いただければと思います。
とりあえず冒頭の一文を引用させていただくと
レンダリングパイプラインとはモデルデータの入力から出力までのレンダリングのための加工手順のことです。
とのこと。つまり「レンダリングパイプライン=グラフィックの描画にかかわる仕組み」くらいに思って頂ければひとまず十分かなと思います。
それでUnityのレンダリングパイプラインは次のように何種類かあります。
- ビルトインレンダリングパイプライン
- SRP(スクリプタブルレンダーパイプライン)
- HDRP
- URP(※旧LWRP)
それぞれざっくりと見ていきましょう。
ビルトインレンダリングパイプライン
Unityの昔ながらのレンダリングパイプラインです。執筆時点の最新バージョンであるUnity2021では、空のプロジェクトを作るとこちらが採用されます。
※名称が長いのでここから「ビルトインRP」と表記します。
SRP(スクリプタブルレンダーパイプライン)
Unityの新しいレンダリングパイプラインです。公式マニュアルによると、C#スクリプトによってレンダリングの細かい調整が可能とのこと。つまりやろうと思えば独自の描画システムを構築することもできるようです。
ただしゲーム開発で描画システムから自作するというのも大変なので、Unity側で予めテンプレートを用意してくれています。それが「HDRP」と「URP」です。
HDRP(High Definition Render Pipeline)
まずHDRPはデスクトップPCなどのハイエンド機を対象にしたレンダリングパイプラインです。リッチで写実的な表現が可能で、AAAタイトルのような美麗なグラフィックのゲームを作る際に便利です。
URP(Universal Render Pipeline)
一方、今回の主役であるURPはモバイル機などを含む幅広い端末で動く軽量なレンダリングパイプラインです(※詳細は後述)。以前は「LWRP」と呼ばれていましたが、Unity2019.3からURPに名称変更となりました。う~むややこしい…。
ここまでのまとめ
上記をまとめると
- 現行のUnityには「ビルトインRP」と「SRP」という2種類のレンダリングパイプラインがある
- SRPのテンプレートとして「HDRP」と「URP」がある
といった感じになりますね。色々な用語が出てきて混乱するかもしれませんが落ち着いて理解しましょう。
URPについて
それではここからが本題。今回の主役である「URP」とは一体どんなレンダリングパイプラインなのでしょうか?
ざっくりまとめると次のような特徴があります。
- モバイル機でも使える軽量なレンダリングパイプラインである
- Shader Graph等の新機能を使える
- ビルトインRPとは互換性がない
特徴1:モバイル機でも使える軽量なレンダリングパイプラインである
一つ目の特徴はURPは軽量なレンダリングパイプラインだということです。執筆時点でのグラフィックの品質はビルトインRPとそこまで変わりませんが、URPは描画処理が最適化されており負荷が軽いのが大きなメリットです。したがってモバイル機などを含む様々な端末で動くゲームを作ることができます。
なお具体的にどれだけ描画が最適化されるのか?といった点については、以下の記事で簡単な検証結果を掲載しているので詳しく知りたい方はそちらも併せてご覧ください。
特徴2:Shader Graph等の新機能を使える
次に二つ目の特徴はShader Graphなどの新機能を使えることです。
例えば今まではシェーダーはコードを書いて作る必要がありましたが、URPを採用すればShader Graphという「ノードをつないで視覚的にシェーダーを作れる機能」を使うことができるようになります。また、そのほかにも
- Particle Systemの進化版である「Visual Effect Graph」
- 2Dゲームにライトを導入できる「Light 2D」
といった新機能も使えるため表現の幅が広がります。
なおShader GraphやVisual Effect Graphの詳細については個別の記事で詳しくご紹介していますので、どういった機能なのか知りたいという方は併せてご覧いただければと思います。
特徴3:ビルトインRPとは互換性がない
最後に三つ目の特徴は、URPは従来のビルトインRPとは互換性がないことです。つまりビルトインRP用のStandard Shader等はURPでは使えないのでご注意ください。
ちなみに特に注意が必要なのがアセットストアのアセットです。古いアセットはURPには対応していない可能性が高いですし、最近のものでも例えばHDRP用とURP用が別売りになっていたりする場合もあるので、購入するときは説明をしっかり読んだほうが良いと思います(※注)。
※注:正確に言うと、ビルトインRP用の標準マテリアルはURP用に変換できるのですが「アセット独自のシェーダー」を使ったマテリアルは変換できないので注意が必要だということです。
URPの導入方法
さてURPについて一通りご理解頂いたところでURPの導入方法について簡単に解説していきます。
URPの導入方法は
- プロジェクトを新規作成する際にURPのテンプレートを選択する方法
- パッケージマネージャからインストールする方法
の2通りがあります。
プロジェクトの新規作成時にURPのテンプレートを選択する場合
まずプロジェクトの新規作成時にテンプレートを選択する場合です。
現状はコレが一番簡単な方法で、下のようにUnity Hubの新規作成画面でURPと書かれたテンプレートを選び、「プロジェクトを作成」ボタンを押すだけです。
これで最初からURPが設定されたプロジェクトが作成されます。
パッケージマネージャからURPをインストールする場合
次にパッケージマネージャから既存のプロジェクトにURPをインストールする場合です。
メニューバーの「ウィンドウ」→「Package Manager」からパッケージマネージャを開くと、左のリストに「Universal RP」という項目があるのでそれをインストールします。
そうしたら右クリックメニューから適当なフォルダに「パイプラインアセット」を作り、それをプロジェクト設定ウィンドウのグラフィック設定(メニューバーの「編集」→「プロジェクト設定」→「グラフィックス」)の「スクリプタブルレンダーパイプライン設定」に設定しましょう。
これでレンダリングパイプラインがURPになります。
結局、URPを使うべきなのか?
さて、ここまでURPについて色々と書いてきましたが…結局「ビルトインRPを捨ててURPを使うべきなのか?」という疑問が残りますよね。そこでその辺について考えてみると、URPはビルトインRPに比べて
- 描画処理が軽い
- 便利な新機能が使える
といった大きなメリットがあるので
という結論になると私は思います。…まあもちろん、古いプロジェクトを無理にURPにするのは大変ですからそのような場合は別ですが、例えば新しいゲームを作り始める際はURPを選ぶことを強くお勧めします。
ちなみにビルトインRPは旧式であり今後機能の追加などは行われないらしいです。もしかしたらビルトインRPは将来的に廃止されるかもしれないので、いずれはURPに乗り換える必要があると思います。
おわりに
以上、URPの概要から導入方法まで一通り解説をしてきました。初心者の方にとっては分かりづらい話で混乱するかもしれませんが、とりあえず知っておいて損はない話なのでぜひ焦らずに理解していただければと思います。
なおURPの具体的な使い方については以下のページで詳しく解説しています。ご興味のある方は併せてご覧ください。
この記事がUnityでのゲーム開発のお役に立てば幸いです。