性能优化:动态批处理

动态批处理有如下特点:
(1)批处理在运行时生成【批处理是动态产生的】;
(2)批处理中包含的对象在不同的帧之间可能有所不同,这跟哪些网格在主摄像机视图中当前时可见的有关【批处理的内容是动态的】;
(3)对场景中运动的像也是可以批处理的【对动态对象有效】;

那么对网格要进行成功地动态批处理所需要满足哪些条件呢?
a.所有网格实例必须使用相同的材质引用;
b.只有ParticleSystem和MeshRenderer组件进行动态批处理。SkinnedMeshRenderer组件和其他所有其他可渲染的组件类型不能进行批处理
c.每个网格最多有300个顶点
d.着色器使用的顶点属性数不能大于900
e.所有网格实例要么使用等比缩放,要么使用非等比缩放,但不能两者混用
f.网格实例应该引用相同的光照纹理文件
g.材质的着色器不能依赖多个过程
h.网格实例不能接受实时投影
i.整个批处理中网格索引的总数有上限,这与所用的Graphics API和平台有关

顶点属性:网格文件中基于每一个顶点的一段信息,每一段通常表示为一组浮点数。它包括但不限于以下:
1)顶点位置(相对于网格的根)
2)法线向量(一个从对象表面指向外面的向量,通常用于光照计算)
3)一套或多套纹理UV坐标(用于定义一张或多张纹理如何包裹网格)
4)顶点颜色(通常用于自定义光照或扁平化着色、低多边形风格的对象)
值得注意的是,只有着色器使用的顶点属性总数小于900的网格才会进行动态批处理。
举例:Unity生成立方体网格仅包含8个顶点,每个顶点带有位置、法线和UV数据,因此总共24个属性。

网格缩放
1)等比缩放:网格的缩放向量的3个分量(x,y,z)向量是相同的,尽管2个网格的缩放比例不同,它们也是等比缩放。如A网格以(1,1,1) B以(2,2,2)缩放。等比缩放的对象会放到一个批处理中。
2)非等比缩放:3个分量重至少一个和其他的是不同的。如A以(2,1,1)或 B以(2,3,1),它们都是非等比缩放的,而非等比缩放,会合并到另一个动态批处理中。
2)负数缩放会产生奇怪的效果,与3个值(x,y,z)哪一个是负数无关,仅和负数值是奇数或偶数有关

总结:要渲染大量的简单网格时,动态批处理是非常是有用的。比如:到处是石头、树木和灌木的森林;有很多简单而常见的元素如计算机、走廊、管道等的建筑、工厂或空间站;几何战争类型的游戏等。
值得注意的是,动态批处理在满足其条件下开启使用,才会带来开销成本的降低,否则也可能导致更糟糕的性能情况发生。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值