U3D性能优化之动态合批(Dynamic batching)

动态合批原理:

动态合批条件:①使用相同的材质球②正在视野中

注意:Shadow casters的渲染是个例外,尽管Shadow casters使用不同的材质,但是只要他们的材质中给Shadow Caster Pass使用的参数是相同的,他们也能进行动态合批

动态合批的适用范围:①未勾选Static的网格模型②粒子系统、线条或轨迹渲染器

动态合批能优化性能的原因:

①符合条件的对象将被合并到一个DrawCall中渲染

动态合批的缺点:

①由于模型顶点变换的操作,计算的模型顶点数量不宜太多,否则CPU串行计算耗费的时间太长会造成场景渲染卡顿,所以动态合批只能处理一些小的模型

动态合批失败的情况:

①物体Mesh大于等于900个面

②改变Renderer.material将会造成一份材质的拷贝,导致不满足"使用相同材质球"的合批条件

③如果你的着色器使用顶点位置,法线和UV值三种属性,那么你只能批处理300顶点以下的物体;如果你的着色器需要使用顶点位置,法线,UV0,UV1和切向量,那你只能批处理180顶点以下的物体,否则都无法参与合批

动态合批中断的情况:

①位置不相邻且中间夹杂着不同材质的其他物体

②物体如果都符合条件会优先参与静态合批,然后是GPU Instancing,最后才是动态合批

③物体之间如果有镜像变换则不能进行合批

④拥有lightmap的物体和没有lightmap的物体

⑤使用Multi-pass Shader的物体会禁用动态合批

⑥Unity的Forward Rendering Path(前向渲染路径)中如果一个物体接受多个光照会为每一个per_pixel light产生多余的模型提交和绘制,从而附加了多个Pass导致无法合批

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值