この記事の3行まとめ
Unity Technologiesは、レンダリング用のAPI「BatchRendererGroup(以下、BRG)」を使ったサンプルをGitHub上に公開しました。あわせて、サンプルの実装について説明する記事がUnity公式ブログにて公開されています。なお、動作させるにはUnity 2022.3.5以上が必要です。
BRGはC#から描画コマンドを効率的に生成し、GPUにインスタンスする描画コールを生成するAPIです。Burst compilerを使用して、コマンドを生成することもできます。
多くの技術デモがハイエンドPC専用として制作されているなか、今回のBRGのサンプルはGLES 3.0を使用し、ハイスペックではないスマートフォンでも60fpsで動作するように作られています。
公開されたサンプルの内容は以下の通り。
今回公開された記事では、サンプルの制作においてのBRGの使い方や注意点などが紹介されています。
床のセル
床は1行あたり32個のセル、計3,200個のセルで構成されています。画面外にスクロールした行のセルは、ランダムな高さと色を持つ行のセルとして新たに追加されるとのこと。画面外にセルが存在しないことで、カリングがあまり必要ないようになっています。
爆発する球体
爆発したときの破片は小さな立方体で構成されているほか、すべての破片は物理的な重さを持っており、床のセルと相互に作用します。また、破片はBurst C#のジョブを使用してCPU上で実行されているそうです。
BRGの行列フォーマット
GPUメモリのストレージとバンド幅を最適化するために、BRGはfloat4×4の代わりにfloat3×4を使って行列を保存しています。BRGの行列は64バイトではなく、48バイトであることに気をつけてほしいとしています。
他にも、床のアニメーションの実装方法や、BRG描画コマンドに必要なBatchID、データのアップロードの仕組みなどが画像付きで解説されています。詳細はこちらをご確認ください。
BatchRendererGroup sample: Achieve high frame rate even on budget devices|Unity 公式ブログUnity-Technologies / brg-shooter|GitHub