軽量レンダーパイプラインからユニバーサルレンダーパイプラインにアップグレードする
Unity 2019.3 では、軽量レンダーパイプライン (LWRP) が Universal Render Pipeline (ユニバーサルレンダーパイプライン、URP) に置き換わっています。Unity 2019.3 を使用するには、プロジェクトで LWRP を使用している場合は、URP を使用するようにアップグレードする必要があります。
Unity で自動的にアップグレードされる部分もありますが、一部は手動で変更する必要があります。このガイドの手順に従って、LWRP の使用から URP の使用に移行することができます。
アップグレード前
アセンブリ定義アセットの更新
URP はアセンブリ定義の文字列名の代わりに GUID を使用します。プロジェクトでアセンブリ定義アセット (ASMDefs) を使用している場合は、それぞれのアセットで Use GUIDs が有効になっていることを確認してください。
Unity では既存の文字列の参照が自動的に LWRP にアップグレードされますが、今後に備えてアセンブリ定義アセットで GUID を使用することを推奨します。
プロジェクト内の各アセンブリ定義アセットについて、以下の手順を実行します。
- アセンブリ定義アセットを選択します。
- Inspector で Use GUIDs を有効にします。
アセンブリ定義ファイルの使用方法については、アセンブリ定義に関するドキュメント を参照してください。
アップグレードプロセス
LWRP バージョンのアップグレード
アップグレードプロセスを開始するには:
- Unity 2019.3 でアップグレードするプロジェクトを開きます
Unity により、自動的に LWRP が 7.x.x バージョンに更新され、更新された LWRP パッケージの依存関係として URP パッケージが取り込まれます。Unity のスクリプトアップデーターにより、スクリプトファイルが自動的にアップグレードされます。スクリプトアップデーターの処理が完了すると、すべてのスクリプトが正常にコンパイルされるはずです。
シェーダーの検索パスのアップグレード
LWRP プロジェクトで Shader.Find
を使用して LWRP シェーダーを検索している場合は、検索パスを変更する必要があります。
これには、以下の手順に従います。
Lightweight
を検索するすべてのShader.Find
をUniversal
を検索するように変更します。
カスタムシェーダーのアップグレード
タグのアップグレード
URP は独自のスクリプトタグを使用します。シェーダーで LWRP の LightMode
タグを使用している場合、Unity では内部エイリアスを使用しているため、これらのタグは URP プロジェクトでも機能します。ただし、プロジェクトの今後に備えて手動でタグを変更する必要があります。
これには、以下の手順に従います。
- すべての
Lightweight2D
タグをUniversal2D
に変更します。 - すべての
LightweightForward
タグをUniversalForward
に変更します。
また、URP は LWRP とは異なるレンダーパイプラインタグを使用します。シェーダーにこのタグが含まれている場合は、シェーダーが機能するようにこのタグを手動で変更する必要があります。
- すべての
LightweightPipeline
タグをUniversalPipeline
に変更します。
シェーダー名のアップグレード
URP では以下のシェーダー名が変更されたため、シェーダーファイルを手動で更新する必要があります。
- すべての
UsePass 'Lightweight Render Pipeline/...'
をUsePass 'Universal Render Pipeline/...'
に変更します。
インクルードパスのアップグレード
URP は LWRP とは異なるインクルードパスを使用します。LWRP 7.x.x には転送インクルードが含まれているため、カスタムシェーダーは LWRP から URP にアップグレードされます。ただし、URP 7.x.x には転送インクルードが含まれていないため、インクルードパスを手動で更新する必要があります。
- すべての
#include 'Packages/com.unity.render-pipelines.lightweight/xxx'
を#include 'Packages/com.unity.render-pipelines.universal/xxx'
に変更します。
名前空間のアップグレード
プロジェクトの .cs ファイルで LWRP 名前空間への参照を検索して新しい Universal 名前空間に置き換えます。
- すべての
UnityEditor.Rendering.LWRP.xxx
をUnityEditor.Rendering.Universal.xxx
に変更します。
ポストプロセスエフェクトのアップグレード
URP バージョン 7.x は、Post-Processing Stack v2 (PPv2) および独自の統合ポストプロセスソリューション の両方に対応しています。プロジェクトにポストプロセスのバージョン 2 パッケージがインストールされている場合に URP の統合ポストプロセスソリューションを使用するには、プロジェクトに URP をインストールする前に、Post-Processing Stack v2 パッケージを削除する必要があります。URP をインストールしたら、ポストプロセスエフェクトを作成し直すことができます。
ポストプロセスエフェクトの LWRP から URP へのアップグレードは手動で行います。プロジェクト内の各ポストプロセスプロファイルを、URP のポストプロセス実装を使用して手動で再作成する必要があります。
現在、URP の統合ポストプロセスソリューションはカスタムポストプロセスエフェクトをサポートしていません。プロジェクトでカスタムポストプロセスエフェクトを使用している場合、現時点ではこれらを URP の統合ポストプロセスソリューションで再作成することはできません。カスタムポストプロセスエフェクトは、URP の今後のリリースでサポートされる予定です。
URP のインストールと LWRP の削除
Unity では、自動アップグレード処理の一環として、URP が LWRP の依存関係としてインストールされます。LWRP を削除したときに URP が自動的に削除されないように、URP をプロジェクト自体の依存関係としてインストールする必要があります。
URP をプロジェクトの依存関係としてインストールするには:
- メニューで Window > Package Manager の順に移動します。
- Universal RP パッケージを見つけて、名前の右にあるバージョン番号を確認します。これがプロジェクトに追加された URP のバージョンです。
- Unity を閉じます。 *エクスプローラーで、Unity プロジェクトのルートフォルダーを開きます。
- Packages フォルダーを開いて manifest.json を見つけます。これがプロジェクトのマニフェストファイルです。 *テキストエディターを使用してプロジェクトのマニフェストファイルを開きます。
- dependencies セクションの先頭に、以下のエントリを追加します。
"com.unity.render-pipelines.universal": "[Version number you noted earlier]"
例えば、URP のバージョンが 7.1.1 の場合、dependencies セクションは次のようになります。
"dependencies": {
"com.unity.render-pipelines.universal": "7.1.1",
...
}
これにより、プロジェクトの依存関係としてインストールされた URP のバージョンがマークされます。これで LWRP を安全に削除できます。
- Unity でプロジェクトを開きます。
- Package Manager ウィンドウを開きます。
- Lightweight RP を見つけて選択します。
- Package Manager ウィンドウの右下にある Remove をクリックします。プロジェクトから LWRP パッケージが完全に削除されます。