ネットを調べながらUnityをいじっていると、たまに目にするのがこのドローコール問題である。
Unityで作っているゲームのフレームレートに影響する。
この数値が大きいほど、フレームレートが低くなり、動きがぎこちない表示になる。
ドローコールってなんだろうな。
コールって言うくらいだから、シェーダー呼び出しの回数か何かだろうか。
その実態が何かはわからないが、これを抑えるためのガイドラインはある。
ちなみにアイキャッチ画像は何も対策しなかった場合のスコアで、ドローコールが67となっている。
これは大きい数値で、型の古いスマホでも快適に動くようにするためには、この値が20代くらいまで抑える必要があるようだ。
現時点ではマップのオブジェクトくらいしか配置していないので、たいした処理はしていない。
なので対策として出来るのは、ガイドラインにしたがってテクスチャを一枚にまとめてマテリアルを共有する、くらいかなと思いやってみる。
結果はドローコールが120以上とか、ふえてやがる。
なぜだ。
いろいろ試したが、増えこそすれ一向に減らない。
どうもおかしいので、デフォルトのマテリアルのみをすべてのオブジェクトに適用してみると、やっぱり増えている。
どうやら現状のつくりでは、テクスチャをまとめるとか、マテリアルを共有するとか、そういう問題ではないらしい。
実際、いろいろ試してみると、異なるオブジェクトで縮尺がそれぞれ違う場合は、マテリアルを共有するとかえって遅くなるみたいだ。
結局ドローコールが多い原因は他にあった。
一人称視点で、視点と同時にポイントライトを追尾させて、松明で照らしているようなことをやっているのだが、こいつだ原因は。
ライトで照らされる部分が動的に変化しているので、それがドローコールを増やしているようだ。
ポイントライトを無効化して動かしてみると、ドローコールが一気に23まで低下した。
松明の演出、残念ながら断念したほうがよさそうだ。少なくともスマホ版ではね。
結論として、演出的なポイントライトは定位置に固定させて、テクスチャに焼きこむ方針でいく。
今日は自分で決めた定休日だが、ちょっとだけ働いてしまった。
これから、WiiUで遊び倒します。
遊ぶタイトルは、Pikmin3とThe Wonderful 101、そして絵心教室スケッチ。