前言
降低游戏的Drawcall,是渲染优化很重要的手段,接下来从以下4个方面来分析如何降低DrawCall:
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀
降低Drawcall的意义是什么?如何查看游戏的Drawcall
总结一下降低Drawcall次数的意义:
a:避免CPU反复多次的提交数据给GPU而产生的开销;
b:每次提交尽可能多的物体,能最大限度发挥GPU的性能,提升GPU的吞吐量;
Drawcall合批的常用的技术手段原理与优缺点
静态合批:
游戏引擎会将"能够合批“(同一个材质球)的"静态物体"(所以你要标记为静态不可移动物体) 预先合并好成一个新的整体的网格,提交给GPU渲染。
静态合批处理的局限性(缺点)
动态合批:
GPU Instancing合批:
组织项目让Drawcall更小需要注意的点
合理的安排物体, 注意不要打乱物体的合批。3D物体的渲染顺序是引擎自动计算出来的,尽可能的在3D场景里面让物体使用同一个材质,尽可能的在同一个渲染队列里面使用同一个材质,尽可能的在3D场景里面使用同一个种shader,不要根据物体渲染的需顺序来回切换shader(Set Pass Call开销很大)。2D UI物体尽可能的安排同一个图集的物体在一起,如任务系统UI,尽量的让任务系统这些UI物体在一个图集里,这样可以合批渲染;
将多个物体的纹理合并到一起,如游戏地图上的障碍物,可以将这些障碍物与地图的纹理合并到一起,这样地图和障碍物可以由合批的可能。
最后 美术把能合批的物体生成到一个fbx模型里面,这样从美术的层次来减少渲染批次。
今天的分享就到这里了,关注我们可以获得更详细的官方给出的合批的一些规定,帮助大家优化Drawcall。