【渲染篇】新时代的SRP Batcher 和尴尬的Dynamic Batching
本系列基于:BDFramework 、Unity3D 2019.4 BDFramework:Simple! Easy! Beautiful! This is a powerful Unity3d game workflow! 框架地址: GayHub: https://github.com/yimengfan/BDFramework.Core , 码云 : https://gitee.com/yimengfan/BDFramework.Core , 欢迎赏星。 第九艺术 、第十艺术讨论群 : 763141410 搜索关键字:Unity3d Draw call,Dynamic Batching,Srp Batcher
前言水文(可直接跳到正文):
没想到吧,沉寂了半年的我又回来了!!! 这半年主要太忙了,公司有项目,私下还在做一个项目,然后还要维护框架,各种杂事.. 为了证明我没偷懒看看我的小绿墙。
0x001 阅前小姿势:
首先,枯燥的开始老生常谈的话题 :Draw Call,我们来同步下大家的阅读前知识 : 1.Unity 有3个降低Draw Call的方式: Static Batching , Dynamic Batching , Instancing 2.为什么要降低Draw Call?Draw Call的消耗点在哪? 这里简单讲下,后面细讲。 简单来说DC高了会增加Cpu的消耗,手机上CPU和GPU是共享一个SOC,无论哪个消耗高了,温度增加,都会导致一起降频,就是卡! 对于unity来说,主要在 SetPass Call 这个参数上体现,并不是 Batches 。
0x010:新时代的SRP Batcher
先简单说说 SRP 、 URP 、 HDRP ,很多人对着三个名字有点混,特别SRP和URP,还有Unity搞得UPR: SRP是Unity的可编程渲染管线,URP 和 HDRP 是在此之上具体的2个实现! 其实也不存在什么一个只能在手机上,一个只能在pc上,其实都能在手机上跑, 各自根据自己项目可以调节,哪些流程不需要,哪些流程加点什么处理.... 好,我们再说SRP Batcher: 进入新管线设置后有下面选项 然后,这里片文章,讲的挺不错的,我就不重复去讲了。 琅琅:Unity SRP Batcher的工作原理 https://zhuanlan.zhihu.com/p/165574008
0x011:尴尬的Dynamic Batching
这里不是为了捧SRP Batcher 才说他尴尬,而是说Dynamic Batching本身就很尴尬~ 我们回想下为什么要Dynamic Batching? 减少DC! 为什么减少DC? 减少CPU消耗! 好了问题来了,那么Dynamic Batching是怎么回事,引擎不写功能,管线又不会自动给你合批。 如果你了解过 场景管理、OSG 之类的,可能很快能理解: 整个Dynamic Batching 都是引擎帮你按一定规则(经验),去算出来的! 那你想想整个场景上的东西那么多,要是把能合批的都合批了,那得计算量多大? 所以Unity就给了一堆限制,在之上进行合批的计算,减少Cpu消耗。。。 有个热心网友,给你统计过了20多条。 鹏wp:Unity常见合批失败 https://zhuanlan.zhihu.com/p/109200416 所以你能理解,为什么要有这么多限制了吧? 在这些限制之下,能减少合批的计算,再想想,合批之下哪些模块最容易符合这些要求? UI,没错,UI仔你们又可以沸腾了!到了你们的专场! 再想想为啥有那么诡异的UI合批规则,比如图片重叠打断合批等。。。。 再想想Mesh Rebuild怎么回事? 再想想UI 本质是怎么回事? 这下都通了吧!这下都通了吧!这下都通了吧! 好的 打住,再收回来: 我们想想 Dynamic Batching为什么尴尬? 因为减少DC是为了减少CPU消耗,而合批计算又需要消耗CPU! 因为减少DC是为了减少CPU消耗,而合批计算又需要消耗CPU! 因为减少DC是为了减少CPU消耗,而合批计算又需要消耗CPU! 当然,这在一些情况下是有用的,比如UI,(但是也不一定,具体取决于合批的计算消耗,比如跨的mesh太大了)。 但是你在游戏场景中做的动态合批,大概率都是无效的~~ 只是看到的数字下降了而已。 所以dynamic batching本身是有点尴尬的,算力换算力~ 能静态绑定的就静态绑定吧,别偷懒。。。 据小道消息,Unity不久后会干掉Dynamic Batching... 还有 unity Blog这文本编辑器真难用。。。。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
