垂直同步(V-Sync)在可变刷新率(VRR)时代的意义

显卡技术中的“垂直同步”,本是诞生在“固定刷新率”年代的产物。

因为显示器的周期刷新原理,导致显卡需要等到显示器有空显示下一帧了,才应该去绘制它,快了慢了都不行,否则就会因为不同步而发生撕裂。“垂直同步”的概念便是因此而来。

所以当人们终于发明了“可变刷新率”的显示器时,你是否会感到一丝如释重负——

这下终于是显示器等待显卡啦,“垂直同步”这下应该要成为上个时代的产物,退出了历史舞台了吧?

然鹅,现实并非如此。

直到今天,你依然能在大大小小的新游戏和驱动程序设置里,看到“垂直同步”的身影。

所以,我们不禁会问:

为什么?在“可变刷新率”的今天,“垂直同步”还有什么实质的意义?它对于保持画面的不撕裂,还有什么功能性的作用?

我可以回答你的是:

是的,它依然能发挥作用,而且作用还丝毫没有减少过!

为什么?

这是因为,保持某一帧的不撕裂,是双向的一个协同操作,是两边不断逼近的一个结果。这里说的“两边”,指的是显示器和显卡。

这里还有一个我发明的、很扯淡但很有用的概念:“某一帧”其实只是理论存在的,显卡对它的绘制和显示器对它的显示,都只不过是为了在现实中尽可能地对它进行模拟,但显示出来的终归不是这一帧理论的样子。

把微积分中的极限概念代入进来,你就能更好地理解了。

当然了,在进一步解释之前,我首先需要澄清,这里说“垂直同步”依然有效,是特别指在显卡绘制帧率比显示器最大刷新率还低的情况下。

因为若显卡绘制帧率一直大于显示器最大刷新率的话,哪怕显示器有“可变刷新率”技术,这两者也是必然不能够保持同步的。这个场景实质上是退化成了“固定刷新率”的情况,所以“垂直同步”也就必然会被需要,而无法被省略。

所以我特别想讨论和指出的,是显卡绘制帧率小于显示器最大刷新率的情况,比如显卡输出只有110Hz的fps、而显示器是240Hz的可变刷新率显示器的情况——也就是当“可变刷新率”显示器能够跟上显卡节奏的时候,“垂直同步”是否仍需要打开?

显示器对某一帧的逼近

显示器还没有准备好下一帧的帧缓存时,显示器应该等显卡,直到下一帧的帧缓存准备好了,显示器才开始显示下一帧。

因为显卡准备一帧的时间间隔不是固定的,所以这会导致显示器的实质刷新率也不固定,于是可变刷新率的显示器就这么诞生了。“可变刷新率”,就是这么一个原理。

这是大家耳熟能详的,我们对此应该没有任何异议,就不再赘述了。

显卡对于某一帧的逼近

另一方面,对某一帧的保持,显卡也是需要退让的,并非一直猛地向前冲就行。

这是因为,显示器显示完一帧,也是需要时间的。特别是,在有限带宽的前提下,如今的液晶显示器,也还是采用类逐行扫描的技术去更新屏上液晶的。

所以,在显示器显示这一帧的这个原子时间内,这一帧的帧缓存应该加锁,不能被修改,更新屏幕的过程也不能被打扰。

而显卡有没有可能会干扰这个帧缓存呢?特别是显卡绘制的fps低于显示器最大刷新率的情况下?

答案是,依然是可能的。

我们很容易地会陷入一个想当然的情况,就是显卡在任意一秒内,绘制每一帧的耗时是均等的。也就是说,假如当前显卡绘制的fps是110Hz,那我们很容易会认为它在这一秒内,绘制这110幅画面时,在每一幅画面上耗费的时间都是9毫秒的样子。

然鹅,现实并非如此。

显卡对每一帧的计算和绘制,受画面内三角形数量、材质和实时输入干扰的综合影响。这会使得它绘制每一帧的时间并不一样,显卡只能说尽力去绘制下一帧,绘制完了就推送出来,如此这般。

110Hz的fps,只是在间隔一秒的单位时间段内的累积统计,在更小的时间尺度上,每一帧耗时并不一定均等。同样的,拉长考察尺度后,你会发现fps在不同的一秒时间内,也是会变化和浮动的,本质上体现的也是这样的一个原理。

正因为显卡准备一个帧的时间可长可短,并且显示器绘制一个帧也需要时间,所以在显示器正在显示当前帧时,显卡有可能会突然就准备好下一帧了。

这个时候,如果没有打开“垂直同步”,那显卡就可能会鲁莽地去直接覆盖显示器的当前帧的帧缓存,然后被显示器的显示更新电路读取。

对应到显示画面上,也就出现了,画面的上半部仍是当前帧的画面,而画面的下半部,已经是下一帧的画面的情况。

这个情况,就是我们说的“撕裂”。

总结

所以你看,“垂直同步”,在“可变刷新率”的情况下,它仍具备现实意义和使用价值,哪怕是显示器最大刷新率大于显卡绘制帧率的前提下。

对于追求画面纯净的朋友,“垂直同步”仍是推荐打开的选项之一。


关于DREAMSCAPER

I am what I seem.

用Facebook、WordPress或邮箱即可评论