1. 静态批处理
条件:标明为static,相同材质的物体。
打包时把子模型的顶点信息转换到世界空间下,节约计算资源,子模型共享材质,没有渲染状态的切换,Command Buffer会缓存绘制命令,起到了渲染优化的目的。
缺点:打包后体积增大,运行时占用的内存也会增大。
限制条件:
· 改变Renderer.Material会造成一份材质的拷贝,可以用sharedMaterial
· lightmap不同无法参与批处理
2. 动态批处理
条件:动态物体,相同材质。
在场景绘制之前,将视野内共享同一材质的模型顶点信息变换到世界空间,合批后的模型会在同一个DrawCall绘制。
缺点:增加CPU消耗,合批的消耗小于不合批才有意义。
限制条件:
· 着色器所有顶点属性总数需要小于900
· 代码动态改变材质不能合批
· 有镜像变换(scale为负数)不能合批(还看到一种说法:scale为负数的轴如果是偶数
是可以合批的 -- 未验证)
· lightmap不同无法合批
· 前向渲染模式下,一个物体接受多个光照会产生多余的模型提交和绘制,从而
附加了多个Pass导致无法合批
3. GPU Instancing
条件:相同