Batches
Unityの「Batches(バッチ)」は、SceneビューやGameビューの右上に表示される「Stats」(統計)ウィンドウで確認できる項目の一つです。バッチとは、GPUに送信される描画命令(Draw Call)の単位であり、シーン内での描画パフォーマンスを左右する重要な要素です。
バッチ(Batches)とは?
バッチは、GPUに送られる描画命令のセットを指します。基本的に、各オブジェクトを描画するためには、CPUからGPUへ描画命令が送信されます。この命令の一連がバッチです。
- 1つのバッチは1回の描画コールに相当します。
- バッチが多ければ多いほど、CPUが処理する描画コールが増えるため、CPUの負荷が高まり、最終的にはパフォーマンスの低下に繋がります。
バッチの種類
Unityには、描画を効率化するためにいくつかの種類のバッチング技術があります:
-
ダイナミックバッチング(Dynamic Batching)
- サイズが小さく、同じマテリアルを使うメッシュをまとめて、1つのバッチに統合する仕組みです。
- ダイナミックバッチングは自動で行われますが、特定の条件を満たしたオブジェクトに対してのみ適用されます。例えば、1,500頂点未満のメッシュが対象です。
-
スタティックバッチング(Static Batching)
- 動かないオブジェクト(Staticオブジェクト)同士をまとめて1つのバッチにする手法です。これにより、描画命令の回数が削減され、パフォーマンスが向上します。
- スタティックバッチングは、オブジェクトに「Static」フラグを設定することで有効になります。これにより、シーン内の動かないオブジェクトは一括して描画されます。
-
インスタンシング(GPU Instancing)
- 同じメッシュとマテリアルを使用する複数のオブジェクトを、GPUのインスタンス機能を使って1つのバッチで描画する技術です。これにより、同じオブジェクトを何度も描画する際のコストが削減されます。
- 大量の同じオブジェクトを描画する場合に非常に効果的です。