【Unity】URP(Universal Render Pipeline)の概要&導入方法

URPってなに?? Unity

Unityを使っていると、よく「URP」という単語を目にすることがあります。これはざっくり言えばUnityのグラフィックの描画方式の一つなのですが、初心者の方からしてみれば

  • URPって一体何なの?
  • デフォルトのテンプレートと何が違うの?
  • どうやって導入すればいいの?

といった疑問の元になっていて混乱してしまいますよね。そこでここではURPの概要や導入方法についてまとめておきますね。

URP(Universal Render Pipeline)とは?

でははじめに、そもそもURPとは何か?といった部分から説明します。

前提知識:レンダリングパイプラインについて

URPについて説明するためにはまず「レンダリングパイプライン」について知っておかなければなりません。ただまあこれについては私も全くの素人なので、詳しく知りたい方は外部の分かりやすいサイトをご覧いただければと思います。

とりあえず冒頭の一文を引用させていただくと

レンダリングパイプラインとはモデルデータの入力から出力までのレンダリングのための加工手順のことです。

とのこと。つまり「レンダリングパイプライン=Unityのグラフィックの描画にかかわる仕組み」くらいに思って頂ければひとまず十分かなと思います。

それでUnityのレンダリングパイプラインは次のように何種類かあります。

  • ビルトインレンダリングパイプライン
  • SRP(スクリプタブルレンダーパイプライン)
    • HDRP
    • URP(※旧LWRP)

それぞれざっくりと見ていきましょう。

ビルトインレンダリングパイプライン

Unityの昔ながらのレンダリングパイプラインです。執筆時点の最新バージョンであるUnity2021では、空のプロジェクトを作るとこちらが採用されます。

SRP(スクリプタブルレンダーパイプライン)

Unityの新しいレンダリングパイプラインです。公式マニュアルによると、C#スクリプトによってレンダリングの細かい調整が可能とのこと。

ただし自作するのは大変らしいので、Unity側でテンプレートを用意してくれています。それが「HDRP」と「URP」です。

HDRP

デスクトップPCなどのハイエンド機を対象にしたレンダリングパイプライン。より写実的な表現が可能です。

URP

モバイル機などでも動く軽量なレンダリングパイプライン(詳細は後述します)。以前は「LWRP」と呼ばれていましたが、Unity2019.3からURPに名称変更となりました。う~むややこしい…。


上記をまとめると

  • 現行のUnityには「ビルトインレンダリングパイプライン」と「SRP」という2種類のパイプラインがある
  • SRPのテンプレートとして「HDRP」と「URP」がある

といった感じになりますね。色々な用語が出てきて混乱するかもしれませんが落ち着いて理解しましょう。

URPについて

それではここからが本題。URPとは一体どんなレンダリングパイプラインなのでしょうか?

ざっくりまとめると次のような特徴があります。

  1. モバイル機でも使える軽量なレンダリングパイプラインである
  2. Shader Graph等の新機能を使える
  3. ビルトインレンダリングパイプラインとは互換性がない

特徴1:モバイル機でも使える軽量なレンダリングパイプラインである

一つ目の特徴は軽量なレンダリングパイプラインだということです。執筆時点でのグラフィックの品質はビルトインとそこまで変わりませんが、URPは描画処理が最適化されており負荷が軽いのが大きなメリットです。

特徴2:Shader Graph等の新機能を使える

次に二つ目の特徴はShader Graphなどの新機能を使えることです。

例えば今まではシェーダーはコードを書いて作る必要がありましたが、URPを採用すればShader Graphという「ノードをつないで視覚的にシェーダーを作れる機能」を使うことができるようになります。また、そのほかにも

  • Particle Systemの進化版である「Visual Effect Graph」
  • 2Dゲームにライトを導入できる「Light 2D」

といった新機能も使えるため表現の幅が広がります。

特徴3:ビルトインレンダリングパイプラインとは互換性がない

最後に三つ目の特徴は従来のビルトインレンダリングパイプラインとは互換性がないことです。つまりビルトイン用のStandard Shader等は使えなくなりますのでご注意ください。

ちなみに特に注意が必要なのがアセットストアのアセットです。古いものはURPには対応していない可能性が高いですし、最近のものでも例えばHDRP用とURP用が別売りになっていたりする場合もあるので、購入するときは説明をしっかり読んだほうが良いと思います。

URPの導入方法

URPについて一通り理解できたところで、URPの導入方法について簡単に解説していきます。

URPの導入方法は

  1. プロジェクトを新規作成する際にURPのテンプレートを選択する方法
  2. パッケージマネージャからインストールする方法

の2通りがあります。

プロジェクトの新規作成時にURPのテンプレートを選択する場合

まずプロジェクトの新規作成時にテンプレートを選択する場合です。

現状はコレが一番簡単な方法で、下のようにUnity Hubの新規作成画面でURPのテンプレートを選び、「作成」を押すだけです。

URPプロジェクトの新規作成方法

これで最初からURPが設定されたプロジェクトが作成されます。

パッケージマネージャからURPをインストールする場合

次にパッケージマネージャから既存のプロジェクトにURPをインストールする場合です。

メニューバーの「ウィンドウ」→「Package Manager」からパッケージマネージャを開くと、左のリストに「Universal RP」という項目があるのでそれをインストールします。

そうしたら右クリックメニューから適当なフォルダに「パイプラインアセット」を作り、それをプロジェクト設定ウィンドウのグラフィック設定(メニューバーの「編集」→「プロジェクト設定」→「グラフィックス」)の「スクリプタブルレンダーパイプライン設定」に設定しましょう。

これでレンダリングパイプラインがURPになります。

結局、URPを使うべきなのか?

さて、ここまでURPについて色々と書いてきましたが…結局「ビルトインを捨ててURPを使うべきなのか?」という疑問が残りますよね。そこでその辺について考えてみると、URPはビルトインに比べて

  • 描画処理が軽い
  • 便利な新機能が使える

といった大きなメリットがあるので

特に理由がないならURPを使ったほうがいい!

という結論になると私は思います。

ちなみにビルトインレンダリングパイプラインは旧式であり、今後機能の追加などは行われないらしいです。将来的に廃止される可能性もあるのでいずれはURPに乗り換える必要があると思います。

おわりに

以上、URPの概要から導入方法まで一通り解説をしてきました。

初心者の方にとっては分かりづらい話で混乱するかもしれませんが、とりあえず知っておいて損はないのでぜひ焦らずに理解していただければと思います。