Unity - 搬砖日志 - UGUI合批优化 - Overlap(UI AABB 有重叠), Z != 0 照样合批的方案

文章介绍了在Unity中,通过将Canvas的RenderMode从ScreenSpace-Overlay改为ScreenSpace-Camera,以及调整UI层次结构和启用特定的Shader设置,如何解决由于UI重叠导致的DrawCall增加问题,从而优化UI性能。这种方法虽然存在一些限制,如影响透明效果和层级管理,但在某些场景下能有效提升性能。
部署运行你感兴趣的模型镜像


环境

Unity : 2020.3.37f1
Pipeline : BRP

(另一个项目在 2021.1.xx 的 LTS 下的 URP 管线同样如此,目测:因为 UGUI 不受渲染管线切换而变化)


目的

便于索引,记录搬砖


Screen Space - Overlay

可以看到,下图
Canvas 的 Render Mode 在使用: Screen Space - Overlay 模式下的DC为 8
在这里插入图片描述

这里导致合批失败的有两个问题:

  1. 图片显示有相互的堆叠遮挡
  2. 部分UI组件的localPosition.z != 0

UI AABB overlap
在这里插入图片描述在这里插入图片描述

localPosition.z != 0
在这里插入图片描述

DrawCall 就会增加很多
在这里插入图片描述

相当于一个都合批不了,要是UI复杂,有多,那么性能就渣渣了


优化

如下图

我们修改了这些内容,即可合批:

  • Canvas Render Mode 调整为:Screen Space - Camera,并指定相机
  • 然后将 UI 的 Hierarchy 层级嵌套要展平,需要同级化
  • 然后 shader 需要开启 alpha test 和 ZWrite On, ZTest LEqual

在这里插入图片描述

Canvas Render Mode 调整为:Screen Space - Camera,并指定相机
在这里插入图片描述

然后将 UI 的 Hierarchy 层级嵌套要展平,需要同级化
在这里插入图片描述

Alpha Test, ZWrite On, ZTest LEqual
在这里插入图片描述

在这里插入图片描述


限制

这个方案目前总结下来有那么一些限制:

  1. 如果透明区域不是偏向 矩形的,那么只能开启 alpha test
  2. 如果开其alpha test 那么边缘效果黑背景混合锯齿感比较强
  3. hierarchy 视图中的 go 层级需要调整,导致无法使用 parent 的整体移动
  4. 如果需要整体移动需要自己写组件同步位置

该方案起源

其他项目组的一位 TA 大佬,分享了一下 UI 的 AABB Overlap 下的合批
结果他自己做了一些尝试,发现可以这么整
这种如果有 UGUI 黑箱部分的合批逻辑,都会比较好处理(比如,如果你们项目有购买 unity 引擎源码,那是可以一探究竟,甚至可以自行修改的)

然后我们没有unity引擎源码,在这种情况下,这位TA大佬都测试出来了,真的牛逼

(然后这种方式其实在 UWA UGUI 优化课程中也有讲到类似的优化,到时连接我就不方便发了,给自己看,我也贴上来吧:Unity - UGUI 优化 (NGUI vs UGUI) - 笔录 - UWA大神推荐学习篇


因此我将这次大佬的研究成果直接记录笔记,便于后续索引,备忘


另外,这些内容纯纯是搬砖,都是基于别人的引擎(unity引擎)下使用UGUI 的一些问题

较真怎么才不属于搬砖:

  • 寻找硬件物质材料
  • 制作硬件
  • 制作芯片
  • 编写硬件芯片驱动程序
  • 编写操作系统
  • 再操作系统上编写编程语言(不使用二进制指令的编写方式,规模大就不可维护)
  • 编写编译器
  • 编写IDE
  • 使用你自己的IDE编写引擎APP
  • 再使用你自己的系统编写引擎的渲染器
  • 再编写渲染与硬件加速渲染结合

那么恭喜你,终于不是搬砖了

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值