SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

全般 想定以上にドローコールが増えるのはなぜですか? #80

Open SpriteStudio opened 9 years ago

SpriteStudio commented 9 years ago

まず、SS5Player for Unity v1.1 からは、主に OPTPiX SpriteStudio v5.3.0 で追加されたインスタンス機能に対応し、且つ、優先度アトリビュートにより設定された描画順序を守るため、以下の様な手順で描画パーツを並べ替えています。

このため、1オブジェクトに複数のマテリアルを使用している状態では、Z座標を調整してもドローコール回数はほとんど削減できません。 ※2のソートの結果時点で、アニメーション内で複数のマテリアルに分かれているため、そこでドローコールが発生してしまうためです。

ドローコール削減を期待する場合は、なるべく1オブジェクトを複数マテリアルで構成せず、 できる限り1マテリアル(1合成オペレーション・1テクスチャ)で構成する必要があります。

また、使用しているマテリアル(テクスチャや合成方法)が2つであっても、「優先度」と「パーツ位置」の設定によっては、2よりも多くドローコールがかかる場合があります。 「優先度」と「パーツ位置」順で「パーツが表示される順序」を見ていった時に、テクスチャや合成方法が切り替わる回数分だけドローコールがかかります。

※この場合のパーツ位置とは「SSのタイムライン上でのパーツの上下位置」のことで、「異なるパーツで、同じ優先度の値が設定されている場合、SS5のタイムライン上で上に位置しているパーツの方が優先度が低い」という扱いになります。