美文网首页
动态批处理

动态批处理

作者: APP4x | 来源:发表于2020-11-10 14:00 被阅读0次
这是我在《Unity游戏优化 (第2版)》看的,记录一下~

动态批处理可以降低DrawCall,他有啥优势呢?
1.批处理在运行时生成(批处理是动态产生的)
2.批处理中包含对象在不同的帧之间可能有所不同,这取决于哪些网格在主摄像机视图中当前是可见的
3.甚至能在场景中运动的对象也可以批处理

举个例子:


首先需要需要关闭影子显示

关闭静态动态批处理

关闭天空盒子


如图所示,为啥有9个DrawCall呢?
1.有1个批处理渲染场景的背景
2.剩余8个批处理渲染8个对象

那么要是开启动态批处理呢?
减少3个DrawCall(跟在场景的深度有关系,要把球放在方块后面)
因为四个立方体可以合并成一个 Dynamic Batch DrawCall中
但是四个球依然通过独立的DrawCall渲染,因为其不满足合批要求(定点数不超过300)


那么动态批处理的规则是什么呢?
1.所有网格实例必须使用相同的材质引用
2.只有ParticleSystem和MeshRenderer组件可以进行动态批处理(SkinnedMeshRenderer组件和其他所有可渲染的组件都不能进行批处理)
3.每个网格至多有300个顶点
4.着色器使用的顶点属性数不能大于900
5.所有网格实例要么使用等比缩放,要么使用非等比缩放,但是不能两者混用
6.网格实例应引用相同的光照纹理文件
7.材质的着色器不能依赖多个过程
8.网格实例不能接受实时投影
9.整个批处理中网格索引的总数有上限,和GraphicsAPI有关系,一般在32~64K之间


详细解释:
啥玩意是顶点属性?(4)
顶点属性是网格文件中基于每个顶点的一段信息,每一段通常表示为一组浮点数
包括:
a.顶点位置(相对于网格的Root)
b.法线向量(一个从对象表面指向外面的向量)
c.一套或多套纹理UV(定义一张或多张纹理如何包裹网格)
d.每个顶点的颜色信息

只有这些总数小于900的网格才可以进行动态批处理(查看inspterect的Preview里面的verts值)
着色器中,每个顶点使用的属性越多,网格允许拥有的定点数量就越少

比如:
漫反射的定点需要3个属性:位置、法线、UV
如果想用动态批处理就最多有300个顶点的网格
自动生成的球有515个顶点,共有1545个顶点属性,所以不能批处理

啥玩意是网格缩放呢?
等比缩放是xyz三个分量都相同
非等比缩放是xyz至少有一个是不同的

比如:
A(1,1,1),B(2,1,1),C(2,2,1),D(2,2,2)
A和D就是等比缩放,会在一个批处理中
B和C就是非等比缩放,会在另一个批处理中

如果为负数缩放,与负数值的奇偶个数有关
a.如果只有一个或者三个轴是负数,会放在一个批处理中
b.如果没有或者对两个轴是负数,会放在另一个批处理中

V(1,1,1),W(-1,1,1),X(-1,-1,1),Y(-1,-1,-1),Z(1,1,1)
本来以为:V和Z是一样的,会放在一个批处理中
但是却不会


总结:
渲染大量简单网格,动态批处理就很有用
比如大量外观几乎相同的简单物体:
1.到处是石头、树木或者灌木林
2.有很多简单而常见的元素
2.简单的集合体和粒子特效等

啥时候批处理对性能有损害呢?
场景中有数百个简单对象,但是每个批处理只有几个对象
这样检测和生成这么多小批处理组的开销成本就会比为每个单独网格执行DrawCall开销还要多

相关文章

  • Unity3d面向英特尔 x86 平台的 Unity* 优化指南

    目录 编辑器优化 压缩纹理 移动存储着色器 静态批处理 动态批处理 HDR – 高动态范围 选择最佳渲染路径 注意...

  • 动态批处理

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 动态批处理可以降低DrawCall,他有啥优势呢?1....

  • 静态批处理、动态批处理

    静态批处理 定义 标明为 Static 的静态物件,如果在使用相同材质球的条件下,在Build(项目打包)的时候U...

  • 大数据之Storm

    1、批处理与流处理 大数据分类两类:静态数据和动态数据。针对这两类数据的计算模式分别是批处理和流处理。 静态数据:...

  • 动态进行静态批处理优化

    public class Aab : MonoBehaviour {GameObject[] allObjs; }...

  • Windows Bat脚本问题收录

    %time:~0,2% 无效的参数数量 批处理中%time:~0,2%返回小时补零 一般运行bat脚本动态设置...

  • 批处理书目录

    批处理典型业务场景 批处理关键领域模型及关键架构 批处理实现作业的健壮性与扩展性 批处理框架的不足与增强

  • start与call的区别

    1.call是从批处理程序调用另一个批处理程序,并且不终止父批处理程序(如果不用call而直接调用别的批处理文件,...

  • dos之批处理命令学习及常用批处理

    批处理 参考文章 w3cshcoolwindows批处理语法——可可西批处理基本语法整理(一)——正在崛起的小菜菜...

  • 批处理收集

    批处理判断系统执行 批处理读取配置文件 配置文件config.ini内容如下 批处理内容如下 Origin创建桌面...

网友评论

      本文标题:动态批处理

      本文链接:https://www.haomeiwen.com/subject/fdrgvktx.html