【Unity】URPの使い方!軽くて新機能も使えるパイプラインを使いこなそう

URPの使い方 ゲーム制作メモ

今回はこのブログでも特に人気が高いUnityの「URP(Universal Render Pipeline)」に関する話題で、その使い方を詳しく説明するという内容です。

以前の記事「【Unity】URP(Universal Render Pipeline)の概要&導入方法」でURPのメリットや導入方法についてご説明したところかなりの反響があったのですが、そういえばURPの使い方についての説明はしていなかったので、その辺も解説しておいた方が良いかなと思いました。

そこでここでは

  • URPの特徴や新機能のおさらい
  • URPの具体的な使い方・設定方法

について詳しく解説していきますね。


スポンサーリンク

おさらい:URPの特徴と新機能について

では、はじめにおさらいとしてURPの特徴や、URPで使えるUnityの新機能について簡単にご紹介しておきます。

URPの特徴

まずURPの主な特徴については、デフォルトのパイプライン(=ビルトインレンダリングパイプライン)と比較すると次のようなものがあります。

  1. 描画処理が軽い
  2. 新機能が使える(※後述)

一つ目にして最大の特徴は、URPでは描画処理が最適化されているためビルトインよりも描画処理が軽いことが挙げられます。具体的には例えばURPには「SRP Batcher」という機能があり、描画負荷を大幅に削減できるような仕組みになっています。

また二つ目の特徴として、(次に説明しますが)URPでは描画にかかわる新機能をいくつか使うことができます。使いこなせればビルトインよりも表現の幅が格段に広がるのでお勧めです。

URPで使えるUnityの新機能

次にURPでは描画にかかわる新機能をいくつか使うことができます。主な新機能は次の通りです。

  • Shader Graph
    シェーダーを視覚的に作成できる機能
  • VFX Graph:
    パーティクルシステムの後継版。こちらもパーティクルを視覚的に作成可能
  • Light2D
    2Dゲームにライティングを導入できる機能

特にShader Graphは、今までシェーダーを書けなかった私みたいな人でも簡単にシェーダーを作れるようになるのでぜひ使って頂けたらと思います。

URPの具体的な使い方・設定方法

さて前置きはこのくらいにして、ここから本題であるURPの使い方について説明していきます。導入方法については冒頭で紹介した記事で解説したので、ここではURPのプロジェクトを作った後の設定方法等について解説しますね。

  1. URPのシェーダーについて
  2. URPの品質設定について
  3. URPのポストプロセッシング(Volume)について

URPのシェーダー

まず、URPを使う上で一番つまづきやすい部分は何といってもシェーダーでしょう。例えば、古いアセットをURPのプロジェクトに入れたらピンク色になってしまった!という失敗は非常によくありがちです。

これはなぜなのかというと、URPではStandardシェーダーなどの従来のシェーダーが使えないためです。URPには新しい専用の「Lit」シェーダーなどが用意されているのでそちらを使う必要があります。覚えておきましょう。

古いマテリアルをアップグレードする方法

ただ、古いアセットをどうしても使いたい!というときにいちいち手作業でマテリアルのシェーダーを変更するようでは日が暮れてしまいます。そこでURPにはマテリアルをURP用にアップグレードできる機能があるので、それを使うと良いでしょう。

やり方は簡単で、アップグレードしたいマテリアルを選択して

メニューバー→「編集」→「レンダリングパイプライン」→「ユニバーサルレンダーパイプライン」→「選択したマテリアルをアップグレード」

を選ぶだけです(下図参照)。

古いマテリアルをURP用に変換する方法

そうすると従来のシェーダーを使ったマテリアルがURPのLitシェーダーを使ったマテリアルに変換されます。

※注意:
一度変換すると元に戻すのが面倒くさいので注意しましょう。また、アセット独自のシェーダーを使っている場合などは正常に変換できません。

URPの品質設定

次にURPの品質設定についてです。URPのプロジェクトでは「プロジェクト設定」ウィンドウからは一部の品質設定しか変更しすることはできないので、細かい設定をいじりたい場合は「Universal Render Pipeline Asset」というものをインスペクターで開いて設定を行う必要があります。

それでデフォルトだとその設定ファイルはAssets内の「Settings」フォルダにあります。開いてみると下の図のように色々と細かい設定ができることが分かります。

URPの品質設定の例

ここでは各項目について詳しくは触れませんが、一つだけ言っておくとシェーダーによっては「Depth Texture」や「Opaque Texture」が有効になっていないと正しく描画されない場合もあるので、「なんか表示が変だな」と思ったらその辺の設定を変更してみると良いかもしれません。

URPのポストプロセッシング(Volume)

最後はURPでのポストプロセッシングについてです。

まずビルトインではポストプロセッシングは「Post Processing Stack」といった名称だったのですが、非常に紛らわしいことにURPではこれが「Volume」という名前になりました。それからビルトインではパッケージマネージャを通してインストールしていたのが、URPでは標準搭載になっています。この辺は大きな変更なので覚えておきましょう。

Volumeの使い方

さて、それでこのVolumeを使うためには次のような準備が必要です。

  1. カメラの「Post Processing」にチェックを入れる
  2. Volumeコンポーネントを持つゲームオブジェクトを作る
  3. 「Volume Profile」を作って好きなエフェクトを追加する

それぞれ詳しく見ていきましょう。

手順1:カメラの「Post Processing」にチェックを入れる

まずはカメラの「レンダリング」メニューに「Post Processing」という項目があるので、これにチェックを入れましょう(下図)。

URPのPost Processingの有効化方法

手順2:Volumeコンポーネントを持つゲームオブジェクトを作る

次に、任意のゲームオブジェクトに「Volume」コンポーネントをアタッチします。

Volumeコンポーネント

手順3:「Volume Profile」を作って好きなエフェクトを追加する

そうしたらVolumeコンポーネントの「プロファイラー」欄に「Volume Profile」という設定ファイルを登録します。作り方は簡単で、「プロファイラー」欄の右側の「新規」をクリックすれば新しいVolume Profileが作成されて自動的に登録されます。

できたらあとは「Add Override」をクリックして、好きなエフェクトを追加して設定すれば完了です。

おわりに

以上、URPの使い方について詳しく解説してきました。

執筆時点ではURPはまだ発展途上であり、ビルトインの完全な上位互換ではないのですが、それでもビルトインと比較するとメリットだらけで既に十分に使えるレベルです。興味があれば上記の内容を参考にしてぜひ活用して頂ければと思います。

この記事がUnityでのゲーム制作のお役に立てば幸いです。