MRが楽しい

MRやVRについて学習したことを書き残す

ホロ恋子ローポリモデルの負荷試験を行う その1(レンダリング統計ウィンドウでの比較)

本日はホロ恋子ローポリモデルの負荷試験です。
キャラクターモデルの負荷をレンダリング統計ウィンドウで確認し、比較してみます。
以下の記事の続きです。
bluebirdofoz.hatenablog.com

比較するモデル

今回はユニティちゃんとホロ恋子モデルを比較して見ます。
シーンの環境はレンダリングへの影響を抑えるため、背景は[Solid Color]とし、影は[No Shadows]で無効化しています。
f:id:bluebirdofoz:20190514091205j:plain

ホロ恋子モデルは以下の特徴があるため、ユニティちゃんより負荷が少ない結果が期待できます。
・全オブジェクトを結合したことによるスキンメッシュの統合
・ポリゴン数の削減(ホロ恋子モデル:約2,000ポリゴン、ユニティちゃん:約16,000ポリゴン)
・マテリアルを1つのUnlit/Textureマテリアルに統合
・Humanoidリグに必要なボーンオブジェクトのみ

ユニティちゃんモデルの表示結果

ユニティちゃんモデルをカメラから2mのところに表示してみました。
なお、スクリプトによる負荷の変化を防ぐため、Models/unitychan.fbx ファイルを利用しています。
f:id:bluebirdofoz:20190514091248j:plain
Batchs は 41。SetPass calls は 14 となりました。

ホロ恋子モデルの表示結果

同じくホロ恋子モデルをカメラから2mのところに表示してみました。
f:id:bluebirdofoz:20190514091258j:plain
Batchs は 2。SetPass calls は 2 となりました。

比較結果

比較結果は以下の通りです。

モデルユニティちゃんホロ恋子
Batches412
Saved by batching00
Tris31.5k2.0k
Verts26.2k1.6k
SetPass calls142
Shadow casters00
Visible skinned meshes191

かなり有意な差が発生することが分かりました。
ユニティちゃんモデルはオブジェクトの分割数が多いため、スキンメッシュの数が多く、またマテリアルも細かく分割されているため、1体だけでも Batches の数が 41 と非常に多くなっていることが分かります。
一方、ホロ恋子モデルの方はオブジェクトやマテリアルの結合を行ったため、スキンメッシュの数が少なく、Batches は最低数の 2 となっています。
(それぞれ Batches の数値の内、1つはバッファクリアのバッチングのため 2 が最低数になります)

FPSはPC上での確認かつ、1体のみの表示のため、差は発生していません。
しかし複数体のモデルを表示したときの負荷軽減は期待できそうです。

SDユニティちゃんの場合

ついでにSDユニティちゃんのレンダリング負荷も確認してみました。
f:id:bluebirdofoz:20190514091346j:plain
Batchs は 25。SetPass calls は 11 となりました。
頭身が低いため、頂点数は減っているものの、スキンメッシュの分割やマテリアルの分割が行われているため、それなりの負荷が発生することが分かります。

ローポリユニティちゃんの場合

更にローポリユニティちゃんのレンダリング負荷も確認してみました。
f:id:bluebirdofoz:20190514091405j:plain
Batchs は 2。SetPass calls は 2 となりました。
ホロ恋子モデルと同じで、最低数の Batches と SetPass calls となります。
実際、全てのスキンメッシュとマテリアルが統合されており、シェーダも Unlit/Texture が用いられるなど、ホロ恋子モデルとモデルの構成が同じです。