【初级】U3D优化笔记

  • DrawCall

    • Draw Call就是CPU将需要渲染的物体传给GPU让其渲染的过程
    1. 首先unity引擎会先进行可见性测试,确定摄像机可以看到的物体
    2. 开始准备物体的数据。将1中获取到的物体的顶点(本地位置,法线,UV等),索引(顶点如何组成三角形),变换(物体的位置,缩放,旋转以及摄像机位置),相关的光源和纹理,渲染方式(由材质/Shader决定)整理好
    3. 通知图形API开始绘制,将准备好的数据发送至GPU
  • 深度测试

    • 颜色缓存区
    • 深度缓存区
  • 渲染队列

    • 分层
  • Over Draw

    • GPU对同一片区域的重复绘制次数,减少UI控件与控件之间的重叠次数
  • 渲染概念 透明物体的渲染

    • 透明物体不会写入渲染深度,无法判断物体的先后
    • 深度测试的作用,剔除优化作用,有深度可以从前向后渲染
    • 半透明物体,从后向前渲染,造成overdraw(填充率),过度绘制
    • 少用粒子特效,避免
    • UI带有aplha混合,是从后向前的绘制,在Unity中Hierarchy从上到下绘制
  • 网格重建

    • Rebatch(canvas合批,只要Canvas发生变化,canvas下的元素都会重建)
    • Rebuild(单个UI重建) Graphic
  • UI射线

    • Raycast Graphic
  • UGUI合批规则

    • 概念:同一Canvas下,能够合并Mesh的部分合在一起

    • 规则:

      1. Depth计算规则
        1. Depth越小,越先渲染
      • Material ID
      • Texture ID
      • RenderOrder(在Hierarchy的顺序)
      • 材质和贴图相同的相邻UI元素(1、2、3, 如果只有UI元素2的材质和贴图不同,则也不能合批)
    • 合批过程

      1. 遍历Canvas下的所有元素
      2. 按照Depth、MaterialID、TextureID、RenderOrder进行排序
      3. 获得所有元素的排序数组(不包括深度为-1的元素)
      4. 计算是否能够合批(相邻元素不能合批立即打断,批次+1)
    • Mask

      • Mask会打断合批,但是相同Mask之间可以合批,Maks下的子物体可以合批
      • RectMask2D会打断合批,RectMask2D之间不能进行合批,RectMask2D下的子物体可以合批
    • 填充率注意要点

      • 避免UI重合,即使是透明的图片,文本
优化细节
  • 填充率优化
    • 图片切9宫格
  • UI显示和隐藏
    • 单个
    • 一组Canvas
  • 打断合批的操作
    1. 修改localPosition.z 猜测:退出了批处理,打断相邻的元素的批处理
    2. localRotation 旋转读书会影响合批
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值