您当前的位置:首页 >  快讯 >> 
观察:3_批处理的优势

时间:2023-06-23 12:07:29    来源 : 哔哩哔哩

批处理(batching)用于将多个对象的网格合并到一起,并在一个指令中渲染它们,而不是单独准备和绘制每个几何体


(相关资料图)

DrawCall

DrawCall是从CPU发送到GPU中用于绘制对象的请求,当场景中包含了大量对象时,这些操作就会非常耗时

比如要渲染一千个三角形,把它们按照一千个单独的网格进行渲染,所花费的时间要远大于渲染一个包含了一千个三角形的网格

在这两种情况下GPU的性能消耗其实并没有多大区别,但是CPU的DrawCall数目就会成为性能瓶颈

批处理的主要目的就是减少渲染所需的DrawCall数量

只有同一材质的物体才可以进行批处理,这是因为同一材质的物体,它们之间的不同仅仅在于顶点数据的差别,把这些顶点数据合并到一起发送给GPU,就可以完成一次批处理

动态批处理

动态批处理的要求

所有网格必须使用相同的材质引用

网格顶点属性不能大于900,如果shder中使用了顶点位置,纹理坐标,法线,那么它的顶点数不能超过300(这个数据未来会发生变化,不要依赖于这个数据)

对象的缩放比例要一致(可以是(1,1,1)(1,2,3)但如果其中包含了(-1,1,1)批处理就会失败)

使用了光照纹理的物体应该引用相同的光照纹理文件

使用了多Pass的shader会中断处理

静态批处理

静态批处理会占用更多内存,使用时需要注意

由于不同的图形API限制,合并到静态批处理的顶点数量是有上限的,一般为32000-64000个顶点

静态批处理的要求

对象必须标记为静态

其它需要注意的地方

标签:

热门推荐

X 关闭

X 关闭