第24回 草原の大量描画とGPU Instancing
2 / 4 データを共有する描画方式
このステップの目的
三つの方式の目的を、名前だけでなく扱うデータから比較します。
設定の準備を減らす
SRP Batcherは、互換性のあるShaderなどの条件で、描画間の設定準備を効率化する仕組みです。多数の物体が一つのDraw Callになった、という意味ではありません。材質ごとのデータを効率よく扱うことが中心です。
形をまとめて使う
GPU Instancingでは、同じMeshやMaterialを使う複数の個体を、個体ごとの変換などとともにまとめて描きます。設定へチェックを付けるだけで常に適用されるとは限りません。描画経路、Shaderの対応、他の最適化との優先関係を確認します。
草原の見本では、草株ごとにGameObjectを作らず、同じMeshとMaterialに複数の変換行列を渡して描画しています。これは草の形と材質を共有しながら、株の配置だけを変える例です。
Static Batchingは静的な形のデータをまとめる方式で、変換済み頂点を保持するためメモリが増える場合があります。動かす必要がある物体へ無条件に選びません。方式の名前を覚えるより、何を共有し何を固定するかを比較します。
条件を変えた確認
「Materialの設定準備を効率化する」「同じMeshを多数の配置で描く」の二つを、SRP BatcherとGPU Instancingへ対応付けます。適用できたか確認する方法も挙げます。
考え方の確認
前者はSRP Batcher、後者はGPU Instancingの役割に対応します。実際の適用はShader・Material・Rendererの条件を確認し、Frame Debuggerの描画記録で調べます。設定を有効にしただけで適用済みとは判断しません。
共有したいデータと、確認に使う記録を残します。
チェックリスト
- SRP Batcherの設定準備とInstancingの個体描画を区別できる。
- 変更した条件と、予測・計算した結果を対応付けて説明できる。