Search Unity

URP12 の機能まとめ

  • アーティスト向け
  • 開発者向け

<このページで学べる内容>

URP の Package マニュアルページに用意されている What's new in URP の内容をなぞる形で、新規機能や改善点を紹介していきます。

はじめに

日本時間の2022年4月12日に、Unity 2021 系の LTS: Long Term Support バージョンである Unity 2021.3.0f1 がリリースされました。

そこで本稿では、Unity 2021 LTS のリリースにより使えるようになる Universal Render Pipeline v12(以下 URP 12)での更新内容について紹介いたします。

なお、URP 12 自体は TECH ストリームである Unity 2021.2 から利用可能になっています。

URP 12 Updates

URP の Package マニュアルページに用意されている What's new in URP の内容をなぞる形で、新規機能や改善点を紹介していきます。

Scene Debug View Modes

URP 12 では描画周りのデバッグ時に非常に有用な Rendering Debugger が追加されました。

Material や Lighting などの描画に関する項目ごとに絞り込んで表示したり、描画する色が閾値内に収まっているかどうかを検証できるなど、HDRP では v7.0 から搭載されていた機能の一部が満を持して URP にも登場した形になります。

Game View にて Material Filter を有効にした様子
Scene View にて Liting Debug Modes を設定した様子
Depth Map を重ねた様子
Pixel Validation を有効にした様子

Reflection Probe Blending と Box Projectionのサポート

URP 12 では Reflection Probe の Blending と Box Projection をサポートするようになりました。

これにより、従前の Built-in Render Pipeline で実現できていた、唐突な反射表現の出現を軽減したり、室内のオブジェクトの反射表現の違和感を減らすことなどが URP でも可能になりました。

Box Projection がオフの状態
Box Projection がオンの状態

なお、Probe Blending や Box Projection は既存の Forward Rendering と後述する Deferred Rendering の両方をサポートしています。

URP に於ける Probe Blending や Box Projection の設定方法などについてはマニュアルを参照してください。

Deferred Rendering

URP 12 では待望の(?)Deferred Rendering サポートが追加されています。

Rendering Path を Deferred にすることで、光源数の制約が無くなるなどのメリットがありますが、半透明オブジェクトの描画には Forward が用いられたり、MSAA が利用できなくなるなどのデメリットもありますので、プロジェクトの性質に合わせて採択しましょう。

Rendering Path は Universal Render Data から設定可能

Deferred Rendering に関する詳細はマニュアルをご覧ください。

Decal System

Decal を用いて壁や床に追加のテクスチャを描画する

HDRP や Built-in RP でサポートしていた Decal が URP にも搭載されました。

Renderer Feature として提供されているので、Universal Render Data のアセットでの設定が必要になります。

また、利用する Shader Graph の Material として Decal を選択することで Master Stack の内容が Decal 用のそれになります。

Universal Render Data の Add Renderer Feature から Decal を選択
Renderer Feature が追加される
Shader Graph の Material として Decal を選択
Master Stack が Decal 用に変化する

詳細な使い方などはマニュアルを参照してください。

Depth Prepass

深度バッファを先に構築して、オーバードロー負荷を減らすための仕組みである Depth Prepass を有効にできるようになりました。

Rendering Path として Forward を選択している場合に Depth Priming Mode を設定できる

PC やコンソールなどのプラットフォームで効果を発揮しやすいので、オーバードローによる負荷が高いプロジェクトで有効にしてみると良いかもしれません。

Light Cookie

URP 12 でライトにマスクを設定する機能である Light Cookie をサポートしました。

Cookie テクスチャの設定方法は従来のものと変わりないため、既存の資産を活用可能です。

格子状の Cookie テクスチャを Spot Light に設定した様子
Light の設定として Light Cookie の項目が追加

Render Pipeline Converter

Built-in RP で構築されているプロジェクトを URP プロジェクトとして変換するためのコンバーターが追加されました。

Built-in → URP の他に、Built-in → 2D URP や、古いバージョンの URP で構築された 2D URP のアセットを最新版に更新する機能なども搭載されています。

URP の基本設定アセットが作成されるほか、Material や Animation Clip も自動変換してくれるので、変換対象アセットが多くて二の足を踏んでいた方にとって有用な機能だと言えそうです。

詳細な説明はマニュアルをご覧ください。

Motion Vectors

モーションブラーエフェクトなどを実現する際に重要になる Motion Vectors がサポートされました。

本稿執筆時点では詳細な情報が見つけられませんでしたが、今後のアップデートで機能を有効化するための UI や出力へのアクセス方法などが整備されていくものと推察されます。

Volume Systemの更新頻度設定

Volume の更新頻度を次の中から選択できるようになりました。

  • 毎フレーム
  • スクリプトから指定
  • Pipeline の設定に準ずる

URP Global Settings

プロジェクト全体で共通の URP 設定を定義可能になりました。

現時点では Light Layers の設定項目のみが存在しています。

Light Layers

前述の URP Global Settings で設定した Light Layers の設定に基づいて、特定の Light Layer に属する Mesh のみに作用させる Light を設定可能になりました。

詳細はマニュアルを参照してください。

Package Samples

Unity Package Manager のウィンドウから Import 可能な Package Samples が提供されるようになりました。

URP Package Samples は Package Manager から Import 可能

本稿執筆時点では大まかに以下のようなサンプルが含まれていました。

  • Camera Stacking に関するサンプル
  • Decal に関するサンプル
  • Lens Flare に関するサンプル
  • Renderer Features に関するサンプル

本稿で紹介している新機能に関するサンプルも充実しているので、一度 Import して中を見てみることをお勧めします。

Lens Flare

カメラレンズ内での光の屈折を表現する Lens Flare が URP にも搭載されました。

Built-in RP に於ける Lens Flare よりもさらに使いやすい形で実装されています。

Lens Flare コンポーネント
SRP 用の Lens Flare アセット

マニュアルは Lens Flare コンポーネントLens Flare アセットとでそれぞれ独立したページが用意されています。

Enlighten Realtime GI

Enlighten Realtime GI のサンプルシーン(出典: What’s new in URP)

一時期は「非推奨」とされていた Enlighten の Realtime GI ですが、URP 12 で正式に復活(?)しました。

サポートプラットフォームも Apple Silicon や PS5、Xbox Series X|S まで拡大しています。

詳細な経緯などが Forum に投稿されています。

Forum に投稿された Enlighten Realtime GI 利用可否やサポート期間などに関するフローチャート

SpeedTree 8 Vegetaion

2021年7月に Unity グループの一員になった Interactive Data Visualization, Inc. (IDV) 社が開発する SpeedTree を用いた植生機能が URP からも利用可能になりました。

専用の SubGraph Asset が提供されているので、Shader Graph の Node として利用できます。

利用可能な SpeedTree 8 の SubGraph

ShaderGraph: Override Material Properties

Lit Material で Allow Material Override を有効にした様子

Material として Lit や Unlit を選択した Shader Graph で Allow Material Override を選択できるようになりました。

Lit / Unlit を用いる Graph に Allow Material Override のチェックボックスが追加されている様子
Sprite Lit などの Material の場合は表示されない

これまでは、今回上書きできるようになったプロパティを Shader Graph 側で設定する必要がありましたが、Allow Material Override を有効にして Material 側で設定できるようになったことで、制作ワークフローの改善が見込めるようになりました。

SSAO の改善

Screen-Space Ambient Occlusion に対して、Deferred Rendering のサポートを含む改善が加えられています。

Normal Map の凹凸が反映されたり、Particle System に対してもサポートされるようになったほか、パフォーマンスも改善されているようです。

Scriptable Render Pipeline の設定に関する改善

URP / HDRP 間でエディタ UI の差分が少なくなるような改善が行われています。

Light と Camera のインスペクタに重点を置いて、ヘッダに背景色がついたりプロパティのラベルや並び順が変更されるなど、細かいながらも大切な修正が施されています。

URP 10 での Camera コンポーネント
URP 12 での Camera コンポーネント

MSAA 有効化に伴う深度バッファの最適化

以前のバージョンでは Multi-Sample Anti-Aliasing を有効にすると、深度バッファの Prepass が必ず実行されていましたが、前述の Depth Prepass の設定とも関連して最適化が図られるようになりました。

Swap Buffer

これまで Renderer Feature を自作する際などに自前で行わなければならなかった RenderTexture の管理などを ScriptableRenderPass.Blit() メソッドに任せることができるようになりました。

これにより、自作 Renderer Feature の開発が楽になることが期待されます。

URP 2D Renderer の改善

URP 12 では 2D Renderer に関する改善も多数盛り込まれています。

  • 前述の Scene Debug View Modes サポート
  • Renderer Feature の Custom Pass 追加による 2D Renderer のカスタマイズをサポート
  • 2D Light の Experimental が外れて Light ウィンドウから操作可能になった
  • 2D Shadow 最適化
  • Shader Graph から 2D Light によって生成されたテクスチャにアクセス可能になった
  • VFX Graph が 2D Unlit Shader をサポート
  • 2D 用の URP プロジェクトテンプレートが追加された
URP 10 での PixelPerfectCamera コンポーネント
URP 12 での PixelPerfectCamera コンポーネント
  • PSD Importer の UX が改善され、レイヤ操作が賢くなったり、Sprite 名のマッピングに対応
  • 2D Animations で Bone の色付けに対応

2D Tilemap Extras バージョンアップなどを含む 2D Tilemap の改善

Fixes / Changes

URP 12 では、これまでに紹介した機能追加・改善以外にも100件以上のバグ修正が行われています。

詳細は URP 12 の Changelog をご確認ください。

おわりに

Unity 2021.2 から利用可能になった Universal Render Pipeline v12 で新たに追加された機能や、改善された項目などをザッとご紹介しました。

「Shader Graph とか VFX Graph とかは魅力だけど、Built-in にある○○が無いから URP に移行できない…」「HDRP だとできるけど、モバイル向けプロジェクトだから HDRP はオーバースペック…」といったお悩みを抱えている方にとって、URP 12 のアップデートは待ち望んだものと言えるかもしれません。

最新 LTS がリリースされたこの機会に、Unity 2021 LTS / URP 12 へのアップグレードを検討してみてはいかがでしょうか。

Appendix

--

筆者紹介:もんりぃ先生(森 哲哉)

株式会社キッズスター / CTO。Unity Ambassador。Microsoft MVP for Developer Technologies。モバイルゲーム開発に軸足を置きつつ、登壇・執筆活動にも精を出す。Player, AssetBundle ビルド・ワークフロー・アーキテクチャなどのおじさん業を得意とする。

Twitter:https://twitter.com/monry
この記事はいかがでしたか?