2014年1月22日水曜日

#10.実機チューニング

キーのOFFイベントがタイミングにより稀にこないことを発見。
ちょっと挙動観察と再実装思案で時間を食った(この手の挙動は処理系によっては良くある



ダイアル、キー入力等がおおむね実装完了(当のバイオリズム描画はまだw)。

とりあえず調整後は、現在こんな感じ。動画にしてみた。

パフォーマンステスト


で、本題。
調整前は実機(Kindle Fire HD 8.9)で動作させると定常状態で fpsが14に!?
ダイアルのみの時は60fpsでていたので劇的に落ちている。


ということで原因調査とfpsを改善する方法を検討。


■ライト

 現在シーンにライトは1つしかないが、ライトに関する影響がかなり大きい。
※コードの実行負荷はライト負荷に比べると現状誤差レベルぽい。 結構クラス化してガンガン動かしてるがおもったよりコードの負荷は軽そうなのが意外。

【対象オブジェクトの面積が増えた】

ライト設定はPointライト。
ダイアルのみの場合に対して、現在は本体ケース全体にもライトが当たる。どうやらこれがfpsに影響している。つまり光源処理が重い。

全オブジェクトの Cast Shadows, Receive Shadowsをオフすると1~2fps程度軽減されるがあまり効果はない。
とはいえ、オブジェクト面積は減らしようもない。
※Unityの場合光源は何か当てないと真っ黒になってしまう様子。完全にオフにはできないのかも?

【ライトの種類】

Unityの公式マニュアルにも明記があった。Point、Spotライトが高負荷らしい。最も軽いのはDirectionalライト。
実機実測で以下の通り。

Spotライト: 14fps(コレだった
Pointライト:18fps
Directionalライト:42~45fps

と、いうことでDirectionalライトに変更。
ダイアルだけのときはSpotライトで60fpsでていたので、増えたオブジェクトの光源処理で劇的に落ちたと思われる。



【Light Probes(ライトプローブ)】

Pro版のみ対応なので試せない(´Д⊂。しかしこれはかなり強力そう。

Unity上の光源シーンからテクスチャにベイクするとのこと。
環境光的な光源は10や20個置いてもこれでベイクしてテクスチャにしてしまうという機能。


【カリング】

私的にはクリッピング(?)とつい思ってしまうが、見えない部分のレンダリングをしない設定。
これもPro版のみなので試せない。
※しかし今回の当方のモデリング状況では効果は薄そう。


■DrawCall

説明はネットのあちこちにあるので割愛。

Statでみたところ現在DrawCall数48。スマホ用途も考慮すると40程度に抑えるくらいが良いらしい。

見た目のモデルのわりに48はちょっと多すぎか?




■総頂点数確認

Blender上でモデリングの総頂点数を確認 ->19824頂点。なんか多いw。

原因は数字ダイアル。
そもそもただのシリンダなので1つで20頂点しかない。はずだが、ちょっと形状に曲面を持たせる為ModifierでSubsurf、SimpleDeformで962頂点に膨れ上がってる(※ええ、制作上の手抜きですw)。

ダイアル年x4、月x2、日x2で8個x上下2パーツで16個。
962x16=15392頂点。

つまり全体の7割以上を占めている。ここを詰めれば多分もっと軽くできる。
が、とりあえずDrawCallも40台でfpsも30以上でているので、このまま放置でいきます(ぁ。
※テクスチャに陰影を書き込んでいるので、20頂点のシリンダでも大丈夫そうですけどね・・・まぁ負荷テストにもなるので。C#のコード実装を優先で|-`)




■なんとなくまとめ

まじめにゲーム製作で動くユニットが多くなると多分2万頂点でも多いかも?ということがなんとなく予想できる。ここらを指標にモデリングしていくと調整しやすいかもしれない。
やはり陰影のテクスチャベイクはUnityでも有効手段。必須かもしれない。法線マップはきつそうかな?。
そしてやっぱりモデルの頂点数を減らすのは王道ですね・・・。

3D fpsゲーム等で光源効果を使う演出(Spotライト等)は効果範囲をかなり限定的に(対象オブジェクト、レイヤ)うまく使わないと簡単に重くなりそうである。

Unity Pro版の機能がすごい良さそうですねぇ。ガチで3Dゲームだとすごく欲しくなりそう。
静的バッチングとか使いたくなりそうな機能がことごとくPro版のみになっている(アタリマエか


ちなみにお値段は、
Unity Pro本体:157500円
Android Pro:157500円

計 315000円。


ガチすぎます。仕事でこないとちょっと手だしにくいですねこれは;(苦笑



0 件のコメント:

コメントを投稿