Version: Unity 6.0 (6000.0)
言語 : 日本語
URP の BatchRendererGroup API
URP で BatchRendererGroup API のプロジェクトを設定する

URP の BatchRendererGroup API の概要

BRG は、以下を行うにあたって最適なツールです。

  • DOTS Entities のレンダリング。Entities で BRG を使用する方法の詳細については、Entities Graphics Performance を参照してください。
  • 個々のゲームオブジェクトを使用するとリソースを大量に消費するような、多数の環境オブジェクトのレンダリング。例えば、連続的に配置された植物や岩など。
  • カスタムの Terrain (地形) パッチのレンダリング。異なるメッシュやマテリアルを使って、LOD の異なる表示を行うことができます。

レンダーパイプラインの互換性

以下の表は、BRG をサポートするレンダーパイプラインを示しています。

機能名 ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP ビルトインレンダーパイプライン
BatchRendererGroup あり (1) あり (1) あり (1) いいえ

ノート:

  1. プロジェクトで SRP バッチャーを使用する場合。

プラットフォームの互換性

Unity は以下で BRG をサポートします。

  • DirectX 11 を使用する Windows
  • DirectX 12 を使用する Windows
  • Vulkan を使用する Windows
  • ユニバーサル Windows プラットフォーム
  • Vulkan を使用する Linux
  • Metal を使用する macOS
  • iOS
  • Android (Vulkan および OpenGL ES 3.x)
  • PlayStation 4
  • PlayStation 5
  • Xbox One
  • Xbox Series X および Xbox Series S
  • Nintendo Switch

BatchRendererGroup の仕組み

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

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

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

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

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

技術的制約

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

URP の BatchRendererGroup API
URP で BatchRendererGroup API のプロジェクトを設定する