devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

画面へオブジェクトを表示する際のDrawCall。これが多いと表示処理に時間がかかるため、モバイル向けのアプリでは如何にして増やさない&減らすかを考える必要があります。

条件を満たせば、自動でドローコールバッチングが行われて表示が最適化されるようです。

詳細は公式のドキュメント

ドローコール バッチング / Draw Call Batching:
http://docs-jp.unity3d.com/Documentation/Manual/DrawCallBatching.html

頂点数の違い

頂点数が多いとドローコールバッチングが行われません。頂点数のカウントにはUV座標や法線なども含まれるので注意。fbxなどでインポートするモデルデータも同様に朝鮮数の制限を受けます。

1. 新規シーンにCubeを作成し、複製してもDrawCallsは1のまま。
スクリーンショット 2013-07-04 14.58.49

2. 新規シーンにSphereを作成し、複製するとDrawCallsは7になります。
スクリーンショット 2013-07-04 15.11.32

Toonシェーダー

アウトライン付きのBasicOutlineはドローコールバッチングが行われません。アウトラインを付けたい場合は、法線が逆向きの一回り大きなサイズのオブジェクトを用意して表示したほうが良いかもしれません。

1. Toon/Basicでは、ドローコールバッチングが行われ、DrawCallsは1のまま。
スクリーンショット 2013-07-04 15.16.11

2. アウトライン付きのToon/Basic Outlineでは、ドローコールバッチングが行われず、DrawCallsは14になります。
スクリーンショット 2013-07-04 15.18.14

アウトライン付きのToonシェーダーを使用する際には注意が必要です。

3. アウトラインを描画するために、法線が逆向きの一回り大きいオブジェクトを用意して、黒ベタマテリアルに設定すれば、ドローコールを増やさずにアウトラインを付けることができそうです。

スクリーンショット 2013-07-04 15.34.13

Toon/BasicOutlineよりも綺麗にアウトラインが描けたりして…

Pocket

コメントを残す

Trackback URL: