Snapdragon Profiler
UnityのProfiler上ではGPUの細かいメトリクスはとれないので、描画負荷をはかるためには Androidなら各SoC向けのプロファイラ。iOSならInstrumentsを使って描画負荷を測ることになります。
自分は私物端末がSnapdragonなので、普段はSnapdragonProfilerを見ています。
Snapdragon Profiler - Qualcomm
ダウンロードするためにはQualcommにユーザー登録が必要です。
普段よくみる指標
仕事で2Dのゲームを作っていたので、見るところは
- GPU Memory Stats
- Texture Memory Read
- Read Total
- Write Total
と、テクスチャの読み込みやフィルの周りにしています。
次点で
- GPU Stalls
- Texture Fetch Stall
- Texture L1 Miss
- Texture L2 Miss
あたりです。
↑の図は2048x2048の画像をTruecolorからETC2_4bppに切り替えた瞬間のナイアガラ
24bit per pixel → 4bppなので1/6ですが、実際のTexture ReadやReadTotalの測定結果は1/10近く行ったりします。
このあたりは測らないとわからない。
一方でWrite Totalは解像度とoverdraw依存、つまり塗りつぶすピクセルの量に依存するので 圧縮テクスチャを使っても下がらないことがわかります。
overdrawはUnityEditor上で視覚的に見ることができますが、
エフェクトを作成する人に「overdraw控えめにしてね!」とどんなに口酸っぱく言っても各人の感覚によってしまうので
「これぐらいはギリギリ許されるだろう」と許されざるエフェクトが上がってくることがあります。
こういうときはやっぱり数値で落とせると強い(はず) 。
「このシーンに置いたときにWrite Totalが500MB超えたらNGとします」
みたいなやりとりができるようになります。
この手の数値は普段からいろんなものを眺めていないと「1G超えはヤバい!」みたいな感覚が養われないので
性能面で追い詰められてからみても、なるほどよくわからん、にしかならないので
普段からいろいろ眺めておきたいなぁと思っております。