【UE4】モバイル開発参考動画【ヒッチ/メモリ転送速度】
モバイル特有の最適化などメモ。
目次
UNREAL FEST EAST 2019
ヒッチ対策
モバイルのおけるShader Comple 問題
- FShaderPipelineCache (PSOキャッシュ)を使おう。
- しかしシェーダーのプリコンパイルを起動時にまとめ過ぎると待ち時間が長くなりすぎるため分散しよう。
- そもそもシェーダーの数を減らせないか検討しよう。不要なマテリアルは減らそう。
- Program Binary Cache シェーダープログラムをストレージに保存→2回目以降の起動時間を短縮。
- Program LRU Cache シェーダープログラムのメモリ使用量を削減。
メモリ転送速度
- Texture Streaming
- 適切なテクスチャサイズのmip をメモリに乗せることが出来る。
- 圧縮フォーマットは適切に。2019年時点ではASTCが無難。
- Never Stream は避ける。
- UIなどのテクスチャMipmap切った方が良い(NoMipmaps)。ボケるから。
- GPUに転送するテクスチャ枚数は減らそう。FTexture2dStreaming。
- 1フレームに転送する枚数を制限しよう。
- r.Streaming.AmortizeCPUToGPUCopy
- r.Streaming.MaxNumTexturesToStreamPerFrame
- 1フレームに転送する枚数を制限しよう。
メモリプロファイラについて
UE4 Editor
// 簡易
stat unit
// ローレベル
stat LLM
Android
adb shell dumpsys meminfo <PACKAGE_NAME>
iOS
XCode memory guage を見る。詳細はinstruments / Active Monitor
4.23 からのDraw Call 削減
- auto-instancing on mobile
- 可能な場合自動的にDraw Callをまとめてくれる。r.Mobile.SupportGPUScene=1
- Auto Instancing するための処理負荷は発生する
- モバイルではStatic Light を無効にする必要がある