13/08/05 22:59:01.87 mgD95T1s
DrawCallについて質問させて下さい。
一つのゲームオブジェクトをカメラに写すとDrawCallが1になります。
そのオブジェクトをDuplicateして並べるとDrawCallが2になります。
同じmaterialを使っているにも関わらずDrawCallが増えるのですが、原因は何が考えられるでしょうか?
317:名前は開発中のものです。
13/08/05 23:44:03.62 cLAD5eeZ
>>316
それマテリアル関係ないと言うか、そのオブジェクトそれぞれドローするから当たり前だと思うが。
逆に、1メッシュ当たりに複数回ドローの必要なマテリアルが割り当てられていたら勿論それ以上の回数になるけど、
単純なマテリアルなら単純にオブジェクト個数分のドロー処理走ると思う。
Unityじゃなく自分で書いた自前のレンダリング処理なら頂点バッファとシェーダ工夫して回数も減らせるけど、
基本的にはそんな感じ
318:316
13/08/06 00:16:35.93 +GiMCS59
>>317
レスありがとうございます。
URLリンク(docs-jp.unity3d.com)
上記のURLを読んだのですが
>>Unityはランタイムで複数のオブジェクトを合成し、一回のドローコールで同時に描画します。
>>この処理は「バッチング(batching)」と呼ばれます。
>>同じマテリアルを共有しているオブジェクトがバッチング可能になります。そのため、より効果的なバッチングをするには、できる限り違うオブジェクト間で多くのマテリアルを共有する必要があります。
つまり同じマテリアルを使っていれば、DrawCall数は同じゲームオブジェクトが複数あっても1つ分のDrawCallしか呼ばれないと思っていたのですが、違うのでしょうか?
319:名前は開発中のものです。
13/08/06 03:02:28.21 WIqQh1he
> 動的なオブジェクトのバッチングは頂点ごとに ある程度オーバーヘッドがあります。ですので、バッチングはトータル頂点数が900以下のメッシュでしか適応されません。
> シェーダーが頂点位置や法線や一つのUV情報を使っていたら、300頂点までになります。さらに頂点位置、法線、UV0、UV1、タンジェントを使っていたら180頂点までになります。
これに引っかかってるんじゃね?
320:名前は開発中のものです。
13/08/06 08:36:54.95 7pwTTGzk
それ3~6万くらいやってほしいよな
頂点バッファそもそも使って無いのか疑問なんだが