元のリンク: https://blog.csdn.net/Mq110m/article/details/130435557
Unity でのレンダリングの最適化
モバイルプラットフォームの特徴
PC プラットフォームと比較すると、モバイル プラットフォームの GPU アーキテクチャは大きく異なります。モバイル端末の GPU アーキテクチャは、処理リソースの制限などにより、可能な限り少ない帯域幅や機能を使用することに重点が置かれており、PC プラットフォームとはまったく異なる現象も数多く発生します。たとえば、できるだけ多くの非表示のサーフェスを削除し、オーバードロー (つまり、1 つのピクセルが複数回描画される) を減らすために、PowerVR チップ (iOS デバイスおよび一部の Android デバイスで一般的に使用されている) はタイルベースの遅延レンダリング (タイルベース) を使用します。 Deferred Rendering (TBDR) アーキテクチャでは、すべてのレンダリングされたイメージがタイルにロードされ、ハードウェアが表示可能なフラグメントを見つけて、これらの表示可能なフラグメントのみがフラグメント シェーダーを実行します。Adreno (Qualcomm チップ) や Mali (ARM チップ) などの他のタイルベースの GPU アーキテクチャは、Early-Z または同様のテクノロジーを使用して低精度の深度検出を実行し、レンダリングする必要のないタイルを排除します。 。Tegra (Nvidia のチップ) など、従来のアーキテクチャ設計を使用する GPU もあるため、これらのデバイスではオーバードローがパフォーマンスのボトルネックを引き起こす可能性が高くなります。
パフォーマンスに影響を与える要因
まず、最適化の方法を学ぶ前に、適切な薬を処方できるように、ゲームのパフォーマンスに影響を与える要因を理解する必要があります。ゲームの場合、主に CPU と GPU という 2 つのコンピューティング リソースの使用が必要になります。これらは連携して、ゲームが期待されるフレーム レートと解像度で動作するようにします。このうち、CPU は主にフレーム レートの確保を担当し、GPU は主に解像度関連の処理を一部担当します。これに基づいて、ゲーム パフォーマンスのボトルネックの主な原因を次の側面に分類できます。
(1) CPU
ドローコールが多すぎます。
複雑なスクリプトまたは物理シミュレーション。
(2) GPU。
頂点の処理
➢ 頂点が多すぎます
➢ 頂点ごとの計算が多すぎます。
フラグメント処理
➢ 過剰なフラグメント処理 (解像度またはオーバードローが原因である可能性があります)。
➢ 過剰なフラグメントごとの計算
(3) 帯域幅
が大きく、非圧縮のテクスチャを使用します。
· 解像度が高すぎるフレームバッファ。
(1) CPUの最適化。
·バッチ処理テクノロジーを使用して描画呼び出しの数を削減します。
(2) GPUの最適化。
1 処理する必要がある頂点の数を減らします。
➢ ジオメトリを最適化します。
➢ モデルの LOD (詳細レベル) テクノロジーを使用します。
➢ オクルージョン カリング技術を使用します。
2 処理する必要があるフラグメントの数を減らす
➢ 描画順序を制御します。
➢ 透明な物体には注意してください。
➢ リアルタイム照明を減らします。
3 計算の複雑さを軽減します。
➢ Shader の LOD (Level of Detail) テクノロジーを使用します。
➢ コードの最適化。
(3) メモリ帯域幅を節約します。·
テクスチャのサイズを小さくします。
· 解像度スケーリングを活用する
Unity のレンダリング解析ツール
パフォーマンス アナライザーを開いて
、さまざまな CPU および GPU の実行プロセス ステータス データを表示し、
フレーム デバッグ パネルで
描画呼び出し情報と関連するシェーダー占有を表示します。