Unity 优化总纲
帧率
- 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
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" 转载请保留原文链接及作者。