动态批处理

这是我在《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开销还要多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,430评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,406评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,834评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,543评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,547评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,196评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,776评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,671评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,221评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,303评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,444评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,134评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,810评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,285评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,399评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,837评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,455评论 2 359

推荐阅读更多精彩内容

  • 在Unity3D中,常用的减少Draw call的优化技术就是批处理技术。批处理的原理是减少每一帧需要的Draw ...
    SwordMaster阅读 2,239评论 0 3
  • 在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API(iOS系统中为OpenGL ES)。每个绘制调用需要进...
    沉麟阅读 1,397评论 0 1
  • 这是我在《Unity游戏优化 (第2版)》看的,记录一下~ Unity也提供了第二种批处理机制:静态批处理 其最大...
    APP4x阅读 860评论 0 4
  • 最近开始研究Unity3D游戏场景优化,每次提及游戏优化这个话题的时候,我的脑海中都会浮现出《仙剑奇侠传六》这个让...
    杨夏MX阅读 2,648评论 1 3
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,524评论 16 22