バッチング
バッチング (Batching) とは、複数のメッシュインスタンスを1つのメッシュインスタンスに結合することで、すべてを1回のGPUドローコールでレンダリングできるようにするプロセスです。 PlayCanvasは、Model、Sprite、およびElementコンポーネントに便利な機能を提供し、これらのコンポーネントをBatch Groupに割り当てることができます。これにより、エンジンがメッシュを結合して総ドローコール数を減らす方法に関するヒントを与えることができます。
メッシュインスタンスを組み合わせることができるか、エンジンが確認するためのルールが多数存在しています。最初のルールは、すべてのメッシュインスタンスが同じマテリアルを共有する必要があるというものです。
一般的なバッチングの使用例は以下のとおりです。
- 静的ジオメトリを結合して、カメラ・カリングをサポートしたまま、描画呼び出しを削減するため、1つのメッシュインスタンスまたは複数の大きな インスタンスを作成する。
- 動的ジオメトリを1つのメッシュインスタンスに結合し、GPUに適用される動的プロパティを持つようにする。
注記
現在、バッチングの使用は、各ライトマップ付きオブジェクトに独自のライトマップテクスチャが必要であるため、ランタイムライトマップと互換性がありません。
Batch Groupの作成
Batch Groupは、シーン設定パネルのBatch Groupセクションから作成できます。各Batch Groupには、このBatch Groupからバッチを作成する方法に関するエンジンのヒントに使用されるいくつかのプロパティがあります。
Batch Groupのプロパティ
- Name: 異なるBatch Groupを区別するために使用されます。このBatch Groupが保有するオブジェクトの種類を説明するような名前を設定することが理想的です。この名前は実行時に利用可能で、グループを取得できます。
- Dynamic: 有効化された場合でも、Batch Group内のオブジェクトは依然として移動/回転/拡張できます。この機能は、たとえば銃弾など互いに類似して、同じマテリアルを使用するオブジェクトに使用可能です。静的なグループは、より少ないランタイムリソースを使用するため、Batch Groupのコンテンツが移動しない場合にはDynamicを非有効化する必要があります。
- Max AABB size: バッチが作成された時点でのBatch Group内のすべてのオブジェクトを含む、バウンディングボックスの任意の側面の最大サイズ。メッシュのセットのサイズが、最大サイズよりも大きい場合にはレンダリング用に複数バッチが作成されます。より大きなバウンディングボックスの場合には、より少ないドローセルでレンダリングされます。ただし、この場合にはカメラカリングとの連携度合が減少します。