Version: 2023.1
言語: 日本語
BatchRendererGroup
BatchRendererGroup の使用を開始する

BatchRendererGroup の仕組み

BatchRendererGroup (BRG) は、画面へのレンダリングを行うために、描画コマンド を生成します。これは BRG 固有の概念で、ここには、最適化された、インスタンス化された ドローコールを Unity が効率的に作成するために必要なすべてが含まれています。

BRG は、描画コマンドでインスタンスを描画するタイミングを決定するのに フィルター設定 を使用します。フィルター設定は、インスタンス自体を描画するタイミングだけでなく、影やモーションベクトルなど、各インスタンスの特定の側面を描画するタイミングも制御します。

同じフィルター設定が多くの描画コマンドに適用されることもよくあるため、BRG は、描画範囲 を使用して描画コマンドの一部範囲にフィルター設定を適用します。描画範囲は、連続した数の描画コマンドと、それらに適用されるフィルター設定のインスタンスを組み合わせます。描画範囲は、フィルター設定によって、Unity が描画コマンドを呼び出さないように指定している場合に特に有用です。なぜなら、これによって、Unity は範囲内のすべての描画コマンドのレンダリングを効率的にスキップすることができるからです。

どのインスタンスをどのドローコールに含めるかに関する制約はありません。同じインスタンス、あるいは同じインスタンスインデックスとバッチ ID を持つオブジェクトを、異なるメッシュとマテリアルで何度もレンダリングできます。これが有用になるのは例えば、異なるマテリアルを持つ異なるサブメッシュを描画するが、同じインスタンスインデックスを使用して複数の描画間でトランスフォーム行列などのプロパティーを共有する場合などです。

BRG でレンダラーを作成する方法については、BatchRendererGroup でレンダラーを作成する を参照してください。

技術的制約

スクリプタブルレンダーパイプライン内では描画コマンドは、ほとんどの場合、互換性のある DrawRenderers の呼び出しごとに、単一の、プラットフォームレベルの、インスタンス化されたドローコールとして実行されます。ただしこれは、グラフィックス API のドローコールのサイズ制限が描画コマンドの visibleCount より低い場合には不可能です。そのような場合には、描画コマンドが複数のインスタンス化されたドローコールに分割されます。

BatchRendererGroup
BatchRendererGroup の使用を開始する