URP対応


投稿日:2024年4月20日 | 最終更新日:2024年6月21日

概要

Unityのカスタムレンダーパイプラインのうち、URPへの対応まとめです。

URP、HDRPとは

Unityの高度なレンダーパイプライン(根本的な描画システム)のことです。
URPは描画性能を向上させつつより汎用的にしたものを目指して設計されていて、HDRPはフォトリアルなハイエンドゲームを想定したハイクオリティな描画を行うためのものです。
参考:レンダーパイプライン - Unity マニュアル

URP、HDRPを使うにはアセットごとに対応が必要

URPやHDRPは、プロジェクト内で使用する全てのアセットがURPやHDRPに対応している必要があります。
これは、アセットストアのアセットであっても同様で、アセットごとに対応が必要になります。
宴では、Version4からレンダーパイプラインの変更に対応できるようにしました。

URP対応

URPのプロジェクトで宴を使う場合は以下の手順に従ってください。
URPの使い方自体はここでは説明しませんので、Unity公式のドキュメントなどを確認してください。

Unity6では互換モードにしないと動かないので注意

Unity6では、URPの基本システムがRenderGraph(新しい描画システム)になるという大幅かつ破壊的な変更がされます。
参考:Official - Introduction of Render Graph in the Universal Render Pipeline (URP) - Unity Forum

互換モードというのを使えば一応旧来のものでも動くのですが、将来的にRenderGraph以外の実装は廃止される予定のようです。
下記の拡張パッケージは、RenderGraphにまだ対応していません。
というのも、URPでのRenderGraphはまだ採用されたばかりなので、Unity公式でも対応方法がまだまとまっていないという状態で、移植が手探りなためです。
現在の状態で実装しても再び変更される可能性がありそうなため、RenderGraph対応版は様子をみつつ後日実装を検討していこうと思っています。

拡張パッケージのダウンロード

下記のリンク先からURP対応パッケージをダウンロードしてください。
https://madnesslabo.net/UtageSample/UtageForUrp.unitypackage

セットアップ

以下の手順で、URP対応のセットアップをしてください。

1. ダウンロードしたパッケージをインポート

UtageForUrp.unitypackageをインポートすると、「UtageForUrp」フォルダ以下に必要なアセットが作成されます。

2. URPのプロジェクト設定に「宴」のRendererを追加

URPのプロジェクト設定(通常はSettings/UniversalRP)に、UtageRenderer2Dを追加します。

3. 宴のシーンのカメラに、「宴」のRendererを設定

宴のオブジェクトがあるシーンを開き、各カメラにUtageRenderer2Dを設定します。
通常は以下のカメラが対象になります。
・Managers/Cameras/SpriteCamera/SpriteCamera
・Managers/Cameras/UICamera/UICamera
ClearCameraは画面を黒く塗りつぶすだけのカメラなので関係ありません。

4. 宴の各オブジェクトにURP対応変換をする

宴のオブジェクトがあるシーンで、右クリックメニューから「Utage/Setup Cameras For URP」を選択してください。
カメラの自動セットアップの他、AdvEngine/PostEffectManagerにURP対応の変換をします。

宴のURP対応の仕組みと互換性

基本的には宴はUGUIベースで描画しているため、殆どの部分で対応は必要はないのですが、カメラに対するポストエフェクト処理の部分だけはURP対応が必要という形になっています。
一部の機能はデフォルト(Built-in Render Pipeline)版と互換性がないので、注意してください。
以下、URP対応した機能についての詳細です。
もし、描画エラーが出るようでしたらURP対応の不具合が発生しているということになりますので、Q&Aなどにご連絡ください。

FadeIn、FadeOutコマンド

画面の暗転させたりするFadeIn、FadeOutコマンドはポストエフェクトとして処理しているので、URP対応パッケージが必要になります。
URP版ではArg6でキーフレームアニメを使用することはできません。

ImageEffectコマンド

ImageEffectコマンドはポストエフェクトそのものなので、URP対応パッケージが必要になります。
ただし、MotionBlurとBloomは対応できませんので、使用しないでください。
URP版ではArg3でキーフレームアニメを使用することはできません。が、代わりにArg6で指定した時間をかけてエフェクトがスムーズに変化するようになります。
ただし、Negaposi(ネガポジ反転)は、中間色はすべて灰色になってしまうためArg6に対応していません。(即座に変化します)
URPのポストエフェクトは基本的にはキーフレームアニメーションで操作せず、Weightというエフェクトの度合いの係数で操作する設計だと思われるため、キーフレームで細かな値を設定する形はとっていません。
エフェクトそのものの細かい値の調整が必要な場合は、各エフェクトのボリュームの設定を調整してください。
(基本的にはUnityのポストエフェクトの仕組みと同じはずです)

CaptureImageコマンド

CaptureImageコマンドで使用するゲーム画面のキャプチャ機能も、ポストエフェクトと同じ仕組みで作成していますので、URP対応パッケージが必要になります。

Renderer2D以外のRendererが必要な場合

宴のURPは、上記の通り必要なPostEffectを追加しているだけです。
UtageRendere2Dは、Renderer2Dに宴に必要なRenderFetureを追加しただけのもので

使用したいRendererに上記の画像を参考に、宴で使用するRenderFetureをAddRenderFetureで追加していってください。

HDRP対応

HDRPは現在未対応です。要望があるようでしたら作成を検討します。