【U3D性能优化教程——CPU篇】之一:DrawCall概念&DC优化勘误
本文由@唐三十胖子出品,转载请注明出处。
文章链接:https://blog.****.net/iceSony/article/details/83422965
这篇文章由唐三胖ヾ(•ω•`)o网络整理总结,针对DrawCall概念的系列优化教程。
通过这篇文章,你可以知道
1)DrawCall概念
2)DC优化勘误
DrawCall概念
Drawcall:CPU调用图形接口告知GPU开始图像渲染
游戏中数据处理是CPU干的,GPU主要处理的是渲染
那么问题来了GPU的渲染肯最消耗性能,但存在场景渲染简单,DC调用过多的情况导致FPS很低,所以就有了优化的必要。
事实上DC是分批次处理的,相同的材质的物体会同批次渲染,此时DC仅仅为1
而U3D的分批次处理有两种:动态和静态批处理,这一点我们在下一篇中详细展开。
DC优化勘误
测试用版本为5.6.5
首先我们针对网上各种情况
1.不同尺寸的勘误
- 不要使用缩放。分别拥有缩放大小(1,1,1) 和(2,2,2)的两个物体将不会进行批处理。
- 统一缩放的物体不会与非统一缩放的物体进行批处理。
- 使用缩放尺度(1,1,1) 和 (1,2,1)的两个物体将不会进行批处理
事实上在5.6.5的版本中这三种都会进行批处理= . =
2.不同材质顺序
接下来我们的3个对象使用2个材质,A和B使用材质1,C使用材质2,这时候来看,应该是有2个DrawCall,或者3个DrawCall。应该是2个DrawCall啊,为什么会有3个DrawCall???而且是有时候2个,有时候3个。我们按照上面的DrawCall分析流程来分析一下:
1.渲染A,使用材质1
2.渲染B,使用材质1
3.渲染C,使用材质2在这种情况下是2个DrawCall,在下面这种情况下,则是3个DrawCall
1.渲染A,使用材质1
2.渲染C,使用材质2
3.渲染B,使用材质1
事实上在5.6.5的版本,这种情况无论怎么排列A,B,C或者调整A,B,C的远近(画面渲染物体由远到近),都是2个DrawCall
注:在之前的公司开发的时候,不同的图集的调用会显著增加DC数量,比如图片1来自图集1,图片2来自图集2,那么我们开发的时候就要尽量放到一个图集下。
总结:存在老版本的优化没做好的情况,能按批次来的咱们就按照批次来好了。
接下来的文章我们会从动态批处理&静态批处理的使用来进一步优化DC消耗。