欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群


一:Batching批处理须知

1.如果多个对象使用了同一个材质,则unity会一次性将使用了同一材质的对象绘制信息传递给GPU
进行批处理,这极大减少了CPU和GPU之间的频繁交互,所以在开发过程中尝试要让多对象共用同一材质

2.批处理所需的操作均由unity自动完成,无需我们开发人员参与,我们在这里需要了解的只是如何配合Unity3d引擎完成这些工作,这些内容对提高性能有很大的帮助

二:批处理unity设置

Edit→Project Settings→Player中勾选Static Batching静态合批和Dynamic Batching动态合批复选框,项目默认都是自动勾选的

静态批处理:

1.空项目默认会有2次Batches(天空盒和相机),创建一个模型后会增加2次,模型的网格Mesh和模型的material

2.设置模型为静态Static后,会发现bactches的次数减少了,主要是mesh被合并了


3.如果材质不同,就会发现这个材质会增加一次Batches,就只会把mesh合并处理

总结:
1.静态物体的Mesh Filter会自动生成一个新的Mesh,如果有相同材质 Shader 并且参数一致的话,就会合并DrawCall
2.静态合批的最大顶点数是65535,如果定点数超过了它,Unity就会自动合并出多个Mesh。
4.另外运行游戏后合并过的Mesh 对象是不可以发生位移的,但是可以移动他们指定的Root节点。
5.可以利用脚本来动态设置需要合并在一起的游戏对象,游戏对象不需要选中Static标记。

public GameObject[] gos;
private void Start()
{StaticBatchingUtility.Combine(gos, gameObject);
}

隐患需要注意:
自动的静态合批用起来很方便,但是也是有隐患。加入场景很大,合并出来的Mesh就会很大。游戏运行后只要有一小部分出现在摄像机内,那么整个大的Mesh都需要参与渲染,所以就需要开发人员自定义处理以及最大定点数的限制。静态合批的原理就是自动生成Mesh,但是不同的Mesh保存的信息可能是不同的。例如Mesh中可能会保存color 和 tangent,但是大部分Mesh都是不需要这个信息的,如果静态合批中有一个Mesh包含了这个信息,那么合并后整个Mesh都会带上它,这样无疑会增加一些额外的开销。所以最好是在美术层面就杜绝这类问题的出现


动态批处理

1.动态批处理无需开发人员设置,unity自动处理,且只对Mesh顶点小于300的有效,如果Shader中使用了顶点位置 法线 UV0 UV1 和切线,Mesh的定点数必须小于180。(在粒子特效中它发挥了很大的优势)。

2.以下情况不进行动态批处理

a.分别拥有缩放尺度(1,1,1)和(2,2,2)的两个物体将不会进行批处理。不要使用缩放尺度(scale)。
b.拥有LightMap的对象由于多出了一个光照烘焙材质所以这些对象也不会被进行批处理,
c.接受了阴影的的对象也是不会被批处理的
d.包含多个渲染通道pass的Shader着色器也一样


欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群

【Unity项目优化宝典】静态批处理和动态批处理相关推荐

  1. 【Unity项目优化宝典】Unity3d打包后移动端启动黑屏时间太久

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群,行业纵横颇多,每个人精通领域各异,旨在交流, .公司性质使然,经手很多小项目.在美术资源少,代码框架简单的情况下一般不会考虑到 ...

  2. Unity项目优化详解(持续补充ing)

    Unity开发项目总结的几项优化点,比较适合中小项目优化,拿来即用,大型项目需要考虑定制化渲染管线.剔除.光照等.针对优化更多的还是需要结合项目去考虑. 一.模型 Read/Write:同Textur ...

  3. 【Unity性能优化】静态资源优化——Audio优化

    文章目录 写在前面 1. 前言 2. 使用Asset Checker进行资源检测 3. Audio优化 3.1 启用Force to Mono 3.2 压缩格式与采样率 3.3 音乐加载类型 3.4 ...

  4. Unity 项目优化细节

    优化思路 个人优化原则: 三原则: 注意细节.注意细节.注意细节! 优化手段: 1.善于使用工具 2.减少总量 3.空间.时间互换 4.由浅入深 1.善于使用工具: 一定要善于使用工具来分析性能问题( ...

  5. gcc编译多文件项目(包含静态库和动态库)

    gcc背景介绍 谈到 GCC,就不得不提 GNU 计划.GNU 全称 GNU's Not UNIX,又被称为"革奴计划",由理查德·斯托曼于 1983 年发起.GNU 计划的最终目 ...

  6. Unity项目优化-Alpha通道分离

    前段时间由于项目打包生成的apk太大,所以引入了Alpha通道分离,后面在用的时候发现实际效果不是那么理想就移除了,但还是觉得有必要记录一下 前言 我们都知道,一个图片有RGBA四个通道,其中R红色. ...

  7. java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...

    在开发网站时候我们会遇到下面问题? - 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径? - 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径 - ...

  8. Unity 性能优化(力荐)

    开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...

  9. 深入浅出聊Unity3D项目优化:从Draw Calls到GC (难度2 推荐5)

    原文出处: 慕容小匹夫的博客(@慕容小匹夫) 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实, ...

最新文章

  1. coverage代码覆盖率测试工具:基本原理分析与使用
  2. 修改Intellij IDEA中工程对应的Java SDK、Scala SDK
  3. 持续集成-软件和库的统一
  4. 滚动条滚动加载图片或则请求的实现方法
  5. 201671030125+词频统计软件项目报告
  6. Android中文API(97)—— ContextMenu
  7. 初识图机器学习(part2)--图数据
  8. ansi编码转换_8b/1b编码是个什么东东
  9. js判断数组里是否有重复元素的方法
  10. 49 字符大小写排序
  11. POODLE SSLv3 安全漏洞 (CVE-2014-3566)
  12. uefi+gpt分区修复esp引导
  13. 查看计算机硬件配置方法(包括内存条、显卡型号,卡槽还剩几个)
  14. 局域网电脑打印机显示未连接到服务器,win7局域网连接打印机显示本地打印后台处理程序服务没有运行...
  15. 看了这篇干货,再也不怕Mac内存不足了!
  16. matlab+字体设置大小,Matlab中如何修改字体的大小?
  17. python随机出现外星人飞船_python外星人入侵游戏如何改变飞船的大小
  18. 一个既有趣又简单的整人代码——关机代码
  19. Mysql InnoDB一棵B+树能存多少行数据?为什么要用B+树?而不是其他树?
  20. 高级项目经理十大领域背诵口诀与论文模板

热门文章

  1. 如何把学到的知识系统化?思维导图帮你知识管理
  2. android 5寸屏分辨率是多少钱,720p精细分辨率
  3. 基因测序行业解决方案
  4. html文本框与按钮对不齐,不能挨一起的问题
  5. eBUS Player查找相机的型号等信息
  6. VTK之MPR重建源码分析(VTK官方例子)
  7. 一键清理Eclipse版
  8. 微信接入探秘(一)——从零认识微信接口
  9. SMC电缸 LECPA控制模式修改
  10. 嵌入式Linux中几种image的区别