游戏打call是什么意思啊 游戏打call是什么意思( 二 )


由上可知,动态合批是一个双刃剑,虽然可以获得合批提升的渲染性能,但同时CPU计算出顶点的世界坐标会产生额外的运算开销, 使用动态的合批的时候,我们要关注一下, 付出+得到是不是成比例 。
动态合批是引擎会自动处理的,所以引擎会对能够动态合批的物体,会有一些条件的限制,引擎和系统给的合批的限制是顶点数目不应过多;
最后总结一下动态合批的缺点:CPU的开销和drawcall减少得到性能提升之间来做平衡;
GPU Instancing合批:
同一个网格对象的N个实例的绘制可以采用GPU Instancing合批 。它的本质就是提交一次网格物体给GPU, GPU绘制出这个物体的N个实例到不同的地方(位置,旋转 , 缩放) 。如1000个小兵采用GPU Instancing 合批,提交一个小兵的网格对象给GPU, GPU根据1000个小兵的位置来绘制出来我们1000个实例 。
1000个实例,可以在同一个批次进行完成(1000个实例< GPU每次处理的极限),如果1000个兵一起合批超过了显卡的极限就分多批如: 800兵一批 , 200兵一批;
GPU Instacing合批是非常好的一种方式,它的缺点就是有些老的显卡不支持 。
组织项目让Drawcall更小需要注意的点
合理的安排物体, 注意不要打乱物体的合批 。3D物体的渲染顺序是引擎自动计算出来的 , 尽可能的在3D场景里面让物体使用同一个材质,尽可能的在同一个渲染队列里面使用同一个材质,尽可能的在3D场景里面使用同一个种shader,不要根据物体渲染的需顺序来回切换shader(Set Pass Call开销很大) 。2D UI物体尽可能的安排同一个图集的物体在一起 , 如任务系统UI,尽量的让任务系统这些UI物体在一个图集里,这样可以合批渲染;
将多个物体的纹理合并到一起,如游戏地图上的障碍物,可以将这些障碍物与地图的纹理合并到一起,这样地图和障碍物可以由合批的可能 。
最后 美术把能合批的物体生成到一个fbx模型里面,这样从美术的层次来减少渲染批次 。
今天的分享就到这里了,关注我们可以获得更详细的官方给出的合批的一些规定,帮助大家优化Drawcall 。

推荐阅读