Gear vrの最適化方法を調べてみた
-
Upload
aokisorasu -
Category
Mobile
-
view
1.275 -
download
0
Transcript of Gear vrの最適化方法を調べてみた
青木そらす(@sorasu2113)
自己紹介 青木そらす(@sorasu2113)と申します
VR / ARのアプリケーションを趣味で作ってます
VR空間で究極の幸せを獲得したいと目論む人です
何がしたいか
何がしたいか60FPSを維持した状態で
何がしたいか60FPSを維持した状態で
制服Unityちゃんに
何がしたいか60FPSを維持した状態で
制服Unityちゃんに
保健室で膝枕してもらいたい
検証環境
Unity 5.0.2 f1
Oculus Mobile SDK 0.5.1
Galaxy S6 edge / ファーム最新(2015年5月30日現在)
前提条件①
出すもの … 制服Unityちゃん、男性キャラ、保健室
保健室はStaticにチェックを入れる
固定視点で移動は無し
ShadowはBake以外使わない
前提条件②
Light Mapを作成する Lightingは極力Bake設定
Light Probeを設置、Reflection ProbeはBoxとBake指定
Static Batching、Dynamic Batching、GPU Skinning
Multi Thread Renderingは有効。
前提条件③ Unity Gear VR Gameのパフォーマンスを搾り出せ(抜粋)
フレーム当たりのドローコール数 : 50~100
フレーム当たりのポリゴン : 5万~10万
テクスチャはできるだけ少なめに(ただし大きくても可)
数字の出し方
SetPassCall – UnityEditor上で確認
FPS – 実機で計測した値
SetPassって何者?
【Unity】Unity Performance Casual Talk
「ドローコール伝説の終わり」 レポート
http://qiita.com/baba_s/items/5260807ced7fc3c02ca6
SetPassって何者?
ざっくり言うと
Unity→OpenGLドライバに命令を投げる回数
オブジェクトを大量に出しても、共通マテリアルなら
1Mesh * 1Material * 1PassのShader = SetPassCall 1
Materialの個数やShaderのPassが多いと増える
Shaderのプロパティを動的に変更すると、別物になるので
インスタンス毎にSetPassが呼ばれる → 良くない
普通に出してみる SetPassCall – 90
FPS – 50
そこそこのFPSが出てしまった…
もっと快適にできる マテリアルとメッシュが複数あるため、個々に描画している
シェーダーの中でPassを複数呼んでいる
ここを減らす
施策 モデルデータをMeshBakerで結合する($50)
シェーダーを可能な限りMobileに変える
出してみる SetPassCall – 16 ~30
FPS – 60
出してみる SetPassCall – 16 ~ 30
FPS – 60
どれだけ減ったのか
背景 Set Pass Call - 72→ 2
男性キャラ Set Pass Call – 8 → 4
Unityちゃん Set Pass Call – 30 → 22
それでもSetPassCallが減らせなかった場合
固定視点に限り背景をSkyBox化することで
SetPassCallを6まで抑えられます。
※両眼で12 Set PasCallです
※今回、背景が2Passで描画出来てしまったので紹介だけです
まとめ
オブジェクトは極力、MeshBakerを使って1つにまとめる。
Materialが細かく分かれてしまった場合は
SkyBoxでごまかす。
このコンテンツは、『ユニティちゃんライセンス』で提供されています。