UGUI batch 规则和性能优化

(基础) Unity 绘图性能优化 - Draw Call Batching : http://docs.unity3d.com/Manual/DrawCallBatching.html

1.名词

  1)Batch 单词 google 翻译的解释是:批量、批次。
  2)Stats中的Batches参数:意思是batching后产生的批次数。(其实每一个批次就会调用一次DrawCall)
  3)Unity官方文档中的batching是指batch操作和batching技术的称呼。(这里的batching是指“将符合条件的mesh通过CPU变换到统一的世界坐标中”这个操作,也就是合并mesh为一个批次的意思)

2.UGUI 中所有显示物体的网格都是自己填充的,例如Image,UGUI会自动生成四个顶点,和代表两个三角形的顶点索引。所有显示物体如果不设置它的material都会使用同一个默认材质(shader:“UI/Default”,color:RGBA(1,1,1,1),pass count:1,render queue:3000)

3.所以,根据官方文档DrawCallBatching可知,UGUI非常符合DynamicBatching。但是有一点是不符合的那就是UI的图片,所以我们可以把图片打成一张大图集来达到DynamicBatching的效果。这样就能减少batching后的batches个数,也就减少了DrawCall次数。

4.因为UI部分涉及的图片比较多,如果打一个图集在提交到GPU的时候会占用很大的内存,所以一般UI图集都会根据一定的规则进行,texture atlasing。

5.所以一般我们看到的UGUI优化方案,都是基于这些点来说的。这些知识点明白了,才知道为什么要做texture atlasing,为什么要分层,什么时候要合并等等。

UGUI排序规则

1.相邻的层级如果它们的texture在一个atlas中,就会被batching到一起。
2.在同一个层级区间并且没有交叉区域的物体(遮挡会按组件的transform的矩形区域计算),如果texture在一个atlas中,就会被batching到一起。

我们要做的事

1.对于atlas总来的来说就是让同一时刻,UI中平均包含的atlas尽可能少。
经常用的图片要打成一个atlas。
2.其他atlas按功能划分。比如,背包界面,除了公用图集中出现的元素以外,所有出现的图片都打成一个atlas。
3.可重用的组件尽量在前期就都考虑到,因为到后期可能会产生混乱,同一个按钮在A界面出现也在B界面出现。(当然除了为了减少draw call这么做以外)
4.如果在某种情况下对顶点数限制不高,可以考虑将图片做成对称的,然后用原图的一半拼出想要的效果

5.对于drawcall来说,我们UI中有N层,N越大越靠前,会遮住后面的组件。我们从0到N数,然后看每个组件的材质,我们要尽量让这个材质变化的次数减少。
6.相同图集的组件在不影响最终效果的情况下尽量使得相同图集的组件相邻。
7.相同字体的文本控件在不影响最终效果的情况下劲量使得相同字体的组件相邻。
8.对于不同的图集尽量不要去穿插,字体也是一样(纵向交叉,Herichy中的顺序)。
9.如果UI元素可以没有交叉区域尽量不交叉,特别是文字。(横向交叉,矩形区域的交叉)
10.如果可能的话可以把层叠交叉的文字做到图片中

11.如果不用mask可以实现的功能尽量不用。Mask组件用到了透明,所以他会被绘制两次。所以,带mask的组件不适用dynamic batching的规则。

UGUI batch 规则和性能优化的更多相关文章

  1. 网站性能工具-YSlow的23个规则-网站性能优化

    1. 减少HTTP请求次数 合并图片.CSS.JS,改进首次访问用户等待时间. 2. 使用CDN 就近缓存==>智能路由==>负载均衡==>WSA全站动态加速 3. 避免空的src和 ...

  2. UGUI性能优化

    http://www.cnblogs.com/suoluo/p/5417152.html http://blog.csdn.net/uwa4d/article/details/54344423 htt ...

  3. [好文翻译]WEB前端性能优化的14条规则

    作为一个半前端工程师,而且只会写点HTML5和CSS3的“假”前端工程师,为了能更好地理解一下前端的花花世界,最近拜读了<高性能网站建设指南>一书,对作者提出的前端性能优化的14个规则获益 ...

  4. Yahoo网站性能优化的34条规则

    摘自:http://blog.chinaunix.net/uid/20714478/cid-74195-list-1.html Yahoo网站性能优化的34条规则 1.尽量减少HTTP请求次数 终端用 ...

  5. Yahoo关于性能优化的N条规则

    本来这是个老生常谈的问题,上周自成又分享了一些性能优化的建议,我这里再做一个全面的Tips整理,谨作为查阅型的文档,不妥之处,还请指正: 一. Yahoo的规则条例: 谨记:80%-90%的终端响应时 ...

  6. Unity GUI(uGUI)使用心得与性能总结

    Unity GUI(uGUI)使用心得与性能总结 作者 kingshijie 关注 2015.09.26 15:35 字数 3686 阅读 28031评论 10喜欢 49 背景和目的 小哈接触Unit ...

  7. U3D开发性能优化笔记(待增加版本.x)

    http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...

  8. Unity 性能优化(力荐)

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

  9. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

随机推荐

  1. Android程序两种退出的方法

    两种程序退出的方法: Context的finish()方法: android.os.Process的killProcess()方法:(当程序isRegistered()失败,说明程序被修改过,调用ki ...

  2. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

  3. phpstorm 格式化代码方法

    hpstorm 代码格式化方法: 快捷键:Ctrl + Alt + L 设置代码样式:File -> Settings -> Code Style ->PHP 根据个人php代码规范 ...

  4. 基于Redis的在线用户列表解决方案

    前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案可以采用SessionListener来完成 ...

  5. 丑数 LeeTCode

    题目链接:http://www.lintcode.com/zh-cn/problem/ugly-number-ii/ 题目描述:设计一个算法,找出只含素因子2,3,5 的第 n 大的数.符合条件的数如 ...

  6. 说说Android应用的persistent属性

    转载地址:http://my.oschina.net/youranhongcha/blog 摘要 在Android系统中,有一种永久性应用.它们对应的AndroidManifest.xml文件里,会将 ...

  7. iBATIS的多对多 数据库设计及实现

    iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系. iB ...

  8. SQL 复习二(数据查询语言)

    1.1 数据查询语言 DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ FR ...

  9. STM32应用笔记转载

    stm32 外部中断嵌套[操作寄存器+库函数] stm32 NVIC中断管理实现[直接操作寄存器] stm32 SPI通信[操作寄存器+库函数] stm32 i2c通信 [操作寄存器+库函数] stm ...

  10. cron 编辑器修改

    更改 cron 默认编辑工具 Debian 的 crontab 默认的编辑器是 nano,用起来很不习惯,怎么才能转回 VI 呢? 用如下命令即可: #update-alternatives --co ...