このページには、Universal Render Pipeline (ユニバーサルレンダーパイプライン、URP) の旧バージョンを最新バージョンにアップグレードする際に役立つ情報が記載されています。
コンソール向けのプロジェクトをビルドするには、サポートする各プラットフォームの追加パッケージをインストールする必要があります。
URP の以前のバージョンでは、ポストプロセスを有効にした場合は、常にパイプラインで深度が必要でした。ポストプロセス統合の機能改善を実施し、Depth of Field、Motion Blur、または SMAA エフェクトを有効にした場合にのみ、パイプラインで深度が必要になるようにしました。これにより、多くの場合パフォーマンスが向上します。
ポストプロセスを使用するカメラで深度がデフォルトで要求されなくなったため、ソフトパーティクルなど他のエフェクトで深度を使用する場合は、カメラで深度が必要なことを手動で示す必要があります。
すべてのカメラで深度を要求するようにするには、パイプラインアセットの Depth Texture オプションを有効にします。個々のカメラで深度を要求するようにするには、カメラの Inspector で Depth Texture オプションを On に設定します。
以前の URP のバージョンでは、メインライトでシャドウカスケードが有効になっていると、スクリーンスペースパスで影が解像されました。現在は、不透明または透明なオブジェクトのレンダリング中、常にパイプラインにより影が解像されるようになりました。これにより一貫性が確保され、影に関する多くの問題が解決しました。
カスタム HLSL シェーダーで _ScreenSpaceShadowmapTexture テクスチャをサンプリングする場合は、代わりに GetMainLight 関数を使用して、シャドウをサンプリングするようにアップグレードする必要があります。
例:
float4 shadowCoord = TransformWorldToShadowCoord(positionWorldSpace);
Light mainLight = GetMainLight(inputData.shadowCoord);
// now you can use shadow to apply realtime occlusion
half shadow = mainLight.shadowAttenuation;
また、カスタムシェーダーが正確に影を受けるよう、.shader ファイルで以下を定義する必要があります。
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
シャドウカスケードの使用時に、透明なオブジェクトで影を受けられるようになりました。パフォーマンスを向上させるため、透明なオブジェクトで影を受ける機能を任意で無効にすることもできます。これを行うには、フォワードレンダラーアセットで Transparent Receive Shadows を無効にします。