URP のパフォーマンスを向上させるための設定
パフォーマンスに大きな影響を与える Universal Render Pipeline (ユニバーサルレンダーパイプライン、URP) の設定と機能を、無効にしたり変更したりすることができます。これは、特にローエンドのプラットフォームでのプロジェクトのパフォーマンス向上に役立ちます。
プロジェクトまたはターゲットとするプラットフォームに応じて、以下の 1 つまたはすべてが最大の効果を発揮する可能性があります。
- 選択するレンダリングパス
- URP のメモリ使用量
- CPU での処理時間
- GPU での処理時間
Unity プロファイラー、または RenderDoc や Xcode などの GPU プロファイラーを使用して、各設定がプロジェクトのパフォーマンスに与える効果を測定できます。
プロジェクトで機能が必要な場合は、その機能を無効にできない場合があります。
レンダリングパスの選択
URP の 3 つのレンダリングパス、および各パスのパフォーマンス効果と制限の詳細については、ユニバーサルレンダラー を参照してください。
URP のメモリ使用量の削減
URP アセットで以下の設定を行うことができます。
- 深度テクスチャが不要な場合に URP が深度テクスチャを保存しないように、深度テクスチャが不要な場合 (例えば、シーン深度をサンプリングするシェーダーを使用する場合) は Depth Texture を無効にします。
- シーン内の不透明なスナップショットが不要な場合に URP がそのスナップショットを保存しないように、Opaque Texture を無効にします。
- ディファードレンダリングパスを使用する場合は、URP が余分なレンダーターゲットを作成しないように、Use Rendering Layers を無効にします。
- URP が HDR 計算を行わないように、不要な場合は High Dynamic Range (HDR) を無効にします。HDR が必要な場合は、HDR Precision を 32 ビット に設定します。
- メインライトのシャドウマップの解像度を下げるために、Main Light を Shadow Resolution にします。
- 追加ライトを使用する場合は、追加ライトのシャドウマップの解像度を下げるために、Additional Lights を Shadow Atlas Resolution にします。
- 不要な場合は Light Cookies を無効にするか、Cookie Atlas Resolution と Cookie Atlas Format を小さくします。
- ローエンドのモバイルプラットフォームでは、URP がメモリ帯域幅を使用して各パスからメモリの内外にレンダーターゲットをコピーしないように、Store Actions を Auto または Discard に設定します。
ユニバーサルレンダラーアセット では、Unity が必要なときにだけ中間テクスチャを使用してレンダリングできるように、Intermediate Texture を Auto に設定できます。これにより、URP が使用する GPU メモリ帯域幅が狭くなる場合があります。フレームデバッガーを使用して、この設定を変更したときに URP が中間テクスチャを削除するかどうかを確認してください。
以下の設定も可能です。
- URP はデカールを描画するために追加のレンダーパスを作成するので、デカールレンダラー機能の使用を最小限にします。これにより、CPU と GPU での処理時間も短縮されます。詳細については、デカールレンダラー機能 を参照してください。
- 使用しない機能の シェーダーバリアントを削除 します。
CPU での処理時間を短縮
URP アセットで以下の設定を行うことができます。
- URP がフレームごとにボリュームを更新しないように、Volume Update Mode を Via Scripting に設定します。UpdateVolumeStack などの API を使用して、ボリュームを手動で更新する必要があります。
- ローエンドのモバイルプラットフォームで リフレクションプローブ を使用する場合は、Probe Blending と Box Projection を無効にします。
-
Shadows セクションで、URP がシャドウで処理するオブジェクト数が少なくなるように、Max Distance を小さくします。これにより、GPU での処理時間も短縮されます。
-
Shadows セクションで、レンダーパスの数を減らすために Cascade Count を減らします。これにより、GPU での処理時間も短縮されます。
-
Additional Lights セクションで、Cast Shadows を無効にします。これにより、GPU での処理時間も短縮され、URP の使用メモリ量も少なくなります。
シーン内の各カメラには、URP カリングとレンダリングのためのリソースが必要です。URP を最適化してパフォーマンスを向上させるには、使用するカメラの台数を最小限にします。これにより、GPU での処理時間も短縮されます。
GPU での処理時間を短縮
URP アセットで以下の設定を行うことができます。
- URP がメモリ帯域幅を使用してフレームバッファアタッチメントをメモリ内外にコピーしないように、Anti-aliasing (MSAA) を削減または無効にします。これにより、URP のメモリ使用量も削減されます。
-
Terrain Holes を無効にします。
- URP がドローコール間の GPU 設定を減らし、マテリアルデータを GPU メモリで永続化できるように、SRP Batcher を有効にします。まず、シェーダーが SRP バッチャー と互換性があることを確認してください。これにより、CPU での処理時間も短縮されます。
- ローエンドのモバイルプラットフォームでは、URP が LOD メッシュのフェードインとフェードアウトにアルファテストを使用しないように、LOD Cross Fade を無効にします。
-
Additional Lights を Disabled に設定するか、フォワードレンダリングパスを使用する場合は Per Vertex に設定します。これにより、URP がライティングを計算する作業が軽減されます。また、Disabled に設定した場合は、CPU での処理時間も短縮されます。
-
Soft Shadows を無効にするか、Soft Shadows を有効にしても Quality を下げます。
ユニバーサルレンダラーアセットで以下の設定を行うことができます。
- URP がレンダーテクスチャをメモリの内外にコピーする頻度を自動的に減らせるように、Vulkan、Metal、または DirectX 12 グラフィックス API を使用する場合は Native RenderPass を有効にします。これにより、URP のメモリ使用量も削減されます。
- フォワードまたはフォワード + レンダリングパスを使用する場合は、Depth Priming Mode を Auto、PC およびコンソールプラットフォームの場合は Forced、モバイルプラットフォームの場合は Disabled に設定します。これにより、PC およびコンソールプラットフォームでは、URP が深度テクスチャを作成および使用して、不明瞭なピクセルでピクセルシェーダーを実行しないようにします。
- URP が不透明なパスと透明なパスの間でレンダーターゲットを切り替えないように、Depth Texture Mode を After Transparents に設定します。
以下の設定も可能です。
追加リソース
設定の詳細については、以下を参照してください。
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。