URP対応


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

概要

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対応が必要という形になっています。
もし、以下の部分で描画エラーが出るようでしたらURP対応の不具合が発生しているということになりますので、Q&Aなどにご連絡ください。

FadeIn、FadeOutコマンド

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

ImageEffectコマンド

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

CaptureImageコマンド

CaptureImageコマンドで使用するゲーム画面のキャプチャ機能も、ポストエフェクトと同じ仕組みで作成しています。

HDRP対応

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