表示テーマ
計測と最適化
最初に条件を揃える
同じScene、Camera、解像度、描画設定、FPS上限で比較します。ShaderやTextureの読込中と完了後を分け、別のゲームが同じGPUを使用していない状態で確認します。
EditorではGameViewとSceneViewの両方が表示されていると、複数の視点の描画が必要です。非表示のView、CameraのRenderTexture出力、モデルPreviewも別の負荷として考えます。
Consoleの時間
| 表示 | 読み方 |
|---|---|
| 描画CPU・待機除外 | CPUが描画の準備・命令作成などに使う時間 |
| GPU完了待ち | CPUが、GPUが使っているframe資源を再利用できるまで待った時間 |
| 各GPU Pass | GPU timestampで計測した各区間 |
| 合計・frame | 計測区間やViewの範囲を確認して比較する |
CPUとGPUは並行して動くので、それぞれのmsを単純に足してFPSへ換算しません。各Passの合計と全体が違う場合、計測されていない準備・同期・転送や、測定範囲の違いを確認します。--は0msではなく有効な計測値がない状態です。
重い項目を分ける
- 解像度を下げてGPU時間が変わるか確認します。
- 影、反射、AO、Bloomなどを1つずつ切り替えます。
- 表示中のView数とCamera出力数を減らします。
- Particleの最大数・Trail点数、Lightの数と範囲を確認します。
- 大きいTexture、SubMeshとMaterialの数を確認します。
Mesh ShaderやLODを変えた場合は、速度だけでなく描画の欠け・法線・Materialも比較してください。軽くするために表示そのものを失っていないか確認します。
Tool
「ツール → デバッグ → パフォーマンスチェック」は一定条件で描画設定を比較するときに使います。Scriptの負荷は「スクリプトプロファイラー」で確認します。
C#で細かく計測する場合はScriptProfilerのScopeを使用できます。Scopeの寿命と計測したい区間を一致させてください。
GPU使用率と発熱
GPUが高使用率なのは、処理を与え続けている状態でもあります。FPS上限なしと60FPS固定を同じ条件と考えないでください。時間経過で遅くなる場合は、Sceneや資源の増加だけでなく温度・クロック・使用メモリも確認します。