Unity 垂直同步 以及 帧率设置 之间的关系

  • A+
所属分类:Unity3d

什么叫水平同步?什么叫垂直同步?

垂直同步又称场同步(Vertical Hold),垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间。从CRT显示器的显示原理来看,单个象素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。我们平时所说的打开垂直同步指的是将该信号送入显卡3D图形处理部分,从而让显卡在生成3D图形时受垂直同步信号的制约。

水平同步信号决定了CRT画出一条横越屏幕线的时间。

我们可以关闭VSync来提高帧速率,选择edit->project settings->Quality 在右侧面板中可以找到VSync Count ,把它选成Don't Sync。这就关闭了VSync(垂直同步),现在在运行场景看看,你会发现帧速率提高了很多。
现在来说说什么是垂直同步,要知道什么是垂直同步,必须要先明白显示器的工作原理,显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器都有两种同步参数——水平同步和垂直同步。

为什么关闭垂直同步信号会影响游戏中的FPS数值?

道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在75左右把,那么显卡就会每按照75的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是上两次屏幕更新的时间间隔。

如果我们选择等待垂直同步信号(也就是我们平时所说的垂直同步打开),那么在游戏中或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等75单位的信号到达,才可以绘制。这样FPS自然要受到操作系统刷新率运行值的制约。

而如果我们选择不等待垂直同步信号(也就是我们平时所说的关闭垂直同步),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。但是不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面更加平滑和稳定。取消了垂直同步信号,固然可以换来更快的帧率,但是在图像的连续性上势必打折扣,也就是我们所说的分辨率,GPU负责的。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因,究竟如何选择看自己的需求!

附加知识:

 水平同步脉冲(Horizontal synchronization pulse, Hsync):

加在两个扫描行之间。它是一个短小的脉冲,在一行扫描完成之后,它就会出现,指示着这一行扫描完成,同时它也指示着下一行将要开始。 水平同步脉冲出现后,会有一小段叫horizontal back porch的时间,这段时间里的像素信号是不会被显示出来,过了这一小段时间之后,电子枪就开始扫描新的一行,将要显示的内容扫描到显示器上.

    垂直同步脉冲(Vertical synchronization, Vsynce):

 是加在两帧之间。跟水平同步脉冲类似,但它指示着前一帧的结束,和新一帧的开始。 垂直同步脉冲是一个持续时间比较长的脉冲,可能持续一行或几行的扫描时间,但在这段时间内,没有像素信号出现。

     主要作用:

主要区别在于那些高速运行的游戏,比如实况,FPS游戏,打开后能防止游戏画面高速移动时画面撕裂现象,当然打开后如果你的游戏画面FPS数能达到或超过你显示器的刷新率,这时你的游戏画面FPS数被限制为你显示器的刷新率。你会觉得原来移动时的游戏画面是如此舒服,如果达不到会出现不同程度的跳帧现象,FPS与刷新率差距越大跳帧越严重。关闭后除高速运动的游戏外其他游戏基本看不出画面撕裂现象。

 

Application.targetFrameRate 是用来让游戏以指定的帧率运行,如果设置为 -1 就让游戏以最快的速度运行,但不会超过自己设定的Application.targetFrameRate.

Application.targetFrameRate仅在QualitySettings.VsyncCount设置为Don't Sync时生效。

如果设置了垂直同步,那么 就会抛弃这个设定 而根据 屏幕硬件的刷新速度来运行。

假设屏幕刷新率为60帧。

如果设置了垂直同步为1,那么就是 60 帧。

如果设置了为2 ,那么就是 30 帧。

weinxin
我的微信
这是我的微信扫一扫
maple

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: