图形学基础 | UnityShader入门精要学习笔记(16章)

Unity Shader学习 第十六章 Unity中的渲染优化技术

本章内容:
Unity中常见的优化技术:

  • 批处理
  • LOD(Level Of Detail)

移动平台的特点

影响性能的因素

计算资源: CPU 和 GPU .
让一个游戏在预计的 帧率分辨率 下工作

CPU 负责保证帧率!
GPU主要负责 分辨率 相关的一些处理!

可以将造成游戏性能瓶颈的主要原因分为以下几个方面:

CPU
  1. 过多的DrawCall -> OverDraw
  2. 复杂的脚本或者物理模拟

CPU优化:

  • 使用批处理来减少 Draw Call的数目

动态批处理:
若场景内有一些模型共享了同一个材质 并满足一些条件. 可以将他们进行动态批处理.
只用一次 draw call 绘制所有模型.
基本原理: 每一帧将可以进行批处理的模型网格进行合并. 再将合并后的数据传给GPU. 然后使用同一个材质进行渲染.

动态批处理. 每一帧都需要重新合成网格. 所以经过动态批处理的物体仍可以移动.

静态批处理:
静态批处理适合于任何大小的几何体.
它的原理就是 还在运行开始的时候, 将需要进行静态批处理的模型合并到一个新的网格结构中. 这意味着这些模型不可以在运行时候被移动.只需要一次移动的操作.

它往往需要更多的内存来存储合并后的几何结构.

注意:
不论是静态批处理 还是 动态批处理. 都要求 模型之间要共享同一个材质.

GPU
  • 顶点处理:
    • 过多的顶点
    • 过多的逐顶点计算
  • 片元处理
    • 过多的片元 (即可能是分辨率造成的. 也可能是OverDraw造成的)
    • 过多的逐片元计算

GPU优化:

减少需要处理的顶点数目

  • 优化几何体
  • 使用模型的 LOD技术 (Level Of Detail)
  • 使用遮挡剔除技术

优化几何体:

  • 尽量减少模型的三角形面片数
  • 对于GPU来说.本质上是只关心顶点的数目.尽可能减少顶点数目才是核心

模型的LOD技术

  • 当一个物体原理摄像机的时候. 模型上的很多细节无法被察觉. 因此. 减少模型的面片数量. 而提升渲染器的性能

遮挡剔除技术:

  • 是一种顶点优化策略.
  • 需要将 遮挡剔除摄像机视椎体剔除(Frustum Culling) 区分开来.
  • 视椎体只会剔除那些不在视域内的对象. 但不能判断一个物体是否被一个物体遮挡.
  • 遮挡剔除 会用一个虚拟的摄像机来遍历场景. 从而构建一个潜在可见的对象几何的层级结构.

减少需要处理的片元数目

  • 控制绘制的顺序
  • 警惕透明物体
  • 减少实时光照

绘制顺序.

  • 由于深度测试的存在. 若从前往后进行渲染. 则可以很大程度地减少OverDraw.

警惕透明物体:

  • 对于半透明物体来说. 不开深度测试. 而是开着深度读取. 从后向前进行渲染. 那么可以说一定上造成 OverDraw.

减少实时光照

  • 实时光照对于移动平台是一种非常昂贵的操作.
  • 所以. 游戏中常常使用 烘焙 的技术! 把光照 烘焙 到一张光照纹理上 lightmap 然后运行时根据纹理采样即可.
  • 实时阴影也非常消耗性能. 优化: 例如将静态物体的阴影信息存储到 光照纹理中. 只对场景中动态物体使用适当的实时阴影计算.
带宽
  • 使用了尺寸很大的未压缩的纹理
  • 分辨率过高的帧缓冲

带宽优化:

  • 减少纹理大小
  • 利用分辨率缩放

纹理最好长与宽相同.且是2的整数幂.
尽可能使用 纹理压缩 和 多级渐远纹理技术(mipmaping)

减少计算复杂度
  • 使用Shader的 LOD 技术
  • 代码方面的优化

shader的LOD技术:

  • 它的原理. 只有shader的LOD值小于某个设定的值.才会被使用. 安歇超过LOD值的不会被渲染.

代码方面的优化:

  • 尽可能使用低精度的浮点运算.
  • 尽可能不要使用全局的屏幕后处理效果.
  • 尽可能不要使用分支 和 复杂数学运算. 可以使用查表来 代替!!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值