Unity 优化总纲

  1. 帧率
  2. 阴影方案
  3. shader 优化
  4. 多核的利用

帧率

  • 1:FPS 的概念:FPS 是一段时间内的平均值。
    平均 FPS = 帧数 / 一段时长。 通常意义上是讲的 60 帧/S
    帧数可以用每次进入 Update 时加一的变量来统计。一段时长就是进入 Update 时 Time.deltaTime 的累加因为是平均值,所以当时间越长时,这个值才是稳定的。
    帧率 16ms 表示渲染完这一帧花费了 16ms
  • 2 显示器和显卡的概念: 显示器和显卡是 2 个概念,显卡写入帧缓冲区的速度不等于显示器显示画面(扫描枪扫描一次)的速度,大部分显示器是 60HZ,也就是每秒钟显示 60 幅画面.

  • 3 问题:显卡写入缓冲区的速度(画图的速度)超过了显示器每秒钟显示画面的速度!!帧率概念:显卡的 FPS/帧率是显卡画图的速度,假设显卡每秒可以画 90 幅画面,显示器每秒只能展示 60 幅画面,也就是当显示器正在显示第 A 帧的画面,显卡将A帧这个缓冲区覆盖成一半的 A 帧 + B 帧的数据,就造成了显示器显示画面的撕裂.垂直同步就是为了解决这个问题存在的.

  • 4 垂直同步,显卡的画图速度会被限制成显示器显示画面的速度,显卡写入缓冲区的操作会等待显示器的信号,等显示器将每一幅画面都显示完整了,才会显示下一副画面.
    当显卡写入缓冲区的速度/帧率与垂直同步的速度一致,则不会造成画面撕裂,否则就会产生画面撕裂的感觉.
    开启垂直同步,会强制将帧率与显卡写入缓冲区的速度保持一致,显卡就有了空闲时间,就限制了显卡画图的速度/帧率/写入缓冲区的速度.
    有的游戏设置会有三重缓冲,这样就没有必要等待显示器的信号画完才开始写入缓冲区了.

  • 5 其他解决方式,让显示器显示画面的速度跟随显卡画图/帧率/写入缓冲区的速度.AMD,NVIDIA 都有这样的技术.

  • 6:如果 Unity 中的 VSyncCount设置的选项不是 Don’t Sync ,这就是需要显卡跟随显示器显示的速度了,也就是开启了垂直同步.(Every V Blank,每一帧显卡都会有空闲时间)设定显卡的帧率是显示器默认的一半,比如手机默认是 60FPS,则会变成 30FPS

阴影方案

shader 优化

多核的利用


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1487842110@qq.com

Love

Title:Unity 优化总纲

文章字数:685

Author:诸子百家-谁的天下?

Created At:2020-05-08, 11:41:32

Updated At:2021-03-28, 02:59:27

Url:http://yoursite.com/2020/05/08/Unity/Optimize/Unity%E5%B8%A7%E7%8E%87/

Copyright: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

爱你,爱世人