- 什么是 GPU Instancing?
GPU Instancing(GPU 实例化)是一种现代图形渲染技术,允许你用一次 Draw Call在 GPU 上同时渲染大量相同 Mesh 和材质但变换(位置、旋转、缩放)不同的物体。
典型应用:大面积草地、森林、士兵、金币、粒子等。
- 原理简述
传统渲染:每个物体一个 Draw Call,CPU 需要多次提交渲染指令,效率低。
Instancing:CPU 只发一次 Draw Call,告诉 GPU:“这是同一个模型和材质,但有 N 个实例,每个实例有不同的变换矩阵(和可选参数)。”
GPU 在渲染时自动为每个实例应用不同的变换和属性。 - Unity 中的 GPU Instancing
开启方式:在材质面板勾选“Enable GPU Instancing”即可。
代码方式:使用 Graphics.DrawMeshInstanced、DrawMeshInstancedIndirect 等 API。
Shader 支持:Shader 里要支持 instancing(Unity 标准 Shader 已支持)。 - 优点
极大减少 Draw Call 数量,大幅提升渲染效率。
CPU 负担小,适合大量重复物体。
支持每个实例不同的变换、颜色等属性(通过 instanced properties)。 - 局限与注意事项
所有实例必须用同一个 Mesh 和材质(但可以通过 instanced properties 传递不同参数)。
不支持完全不同的模型或材质。
Shader 必须支持 Instancing。
每次 Draw Call 的实例数量有上限(通常 500~1000,受平台和 API 限制)。
