(二)unity中的渲染优化技术——————(减少draw call数目 方法一:动态批处理)

本文深入探讨Unity中的动态批处理技术,解释其如何减少draw call以提高性能。动态批处理通过合并使用相同材质的物体,降低CPU的draw call负担,允许物体在批处理后仍能移动。文章介绍了动态批处理的工作原理、优势、限制条件以及在不同光照条件下的表现,并对比了与静态批处理的差异。
摘要由CSDN通过智能技术生成

批处理的实现原理就是为了减少每一帧需要的draw call数目。为了把一个对象渲染到屏幕上,CPU需要检查哪些光源影响了该物体,绑定shader并设置它的参数,再把渲染命令发送给GPU。当场景中包含了大量对象时,这些操作就会非常耗时。一个极端的例子是,如果我们需要渲染一千个三角形,把他们按一千个单独的网格进行渲染所花费的时间要远远大于渲染一个包含了一千个三角形的网格。在这两种情况下,GPU的性能消耗其实并没有多大的区别,但CPU的draw call数目就会成为性能瓶颈。因此,批处理的思想很简单,就是在每次调用draw call时尽可能多地处理多个物体。

那么什么样的物体可以一起处理?答案是使用一个材质的物体。因为对于使用一个材质的物体,她们之间的不同仅仅在于顶点数据的差别。我们可以把这些顶点数据合并在一起,在一起发送给GPU,就可以完成一次批处理。

unity中支持两种批处理方式:一种是动态批处理,一种是静态批处理。对于动态批处理来说,优点是一切处理都是unity自动完成的,不需要我们自己做任何操作,而且物体是可以移动的,缺点是限制很多,可能一不小心就破坏了这种机制,导致unity无法动态批处理一些使用了相同材质的物体。而对于静态批处理来说,它的优点是自由度很高,限制很少;但缺点是可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了(即便在脚本中尝试改变物体的位置也是无效的)。

一、动态批处理

如果场景中有一些

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值