太不真实了吧? TLDR :限制游戏的帧速率并启用vsync可有效禁用缓冲区排队,从而减少输入延迟。 在此处阅读指南。
问题:没有撕裂VS滞后
在PC上玩游戏时,有两个最常见的问题: 输入滞后 ,即单击按钮到在屏幕上看到结果到撕裂之间的延迟,即垂直拆分图像时的延迟。 由于GPU渲染帧的速率与扫描并发送到监视器的速率不同,因此会导致撕裂。
解决撕裂的最古老的解决方案是VSYNC ,在一个非常简单的解释中,它确保了读取监视器时从中读取的缓冲区不会被交换。 游戏可以继续尽可能快地渲染帧并将其提交到缓冲区队列。 当队列已满时,游戏无法提交其他帧,因此帧速率受到限制。 请注意,由于排队的帧数超过1个,因此在游戏渲染帧与GPU将其发送到显示器之间会有一定的延迟。 因此,输入延迟增加。 关于此问题和解决方案的详细说明,将在下面的这篇文章中介绍。
GSync和FreeSync(与限制在屏幕刷新率以下的1或2帧结合使用)通过略微增加输入延迟来解决此问题。 但是,我目前没有这样的监视器。
FastSync是另一种解决方案,可确保GPU尽可能快地渲染帧,并且最新的帧将被发送到显示器。 虽然听起来像是最终的解决方案,但实际上只有在GPU可以达到帧刷新率至少是屏幕刷新率两倍的帧率时,它才能正常工作。 否则会产生抖动。
这个想法很简单。 我们要确保当游戏将一帧渲染到缓冲区时,它将是要在屏幕上显示的下一个缓冲区,而不是排在另一个缓冲区之后。 方法是:将游戏的帧率保持在屏幕刷新率以下。
例如,如果监视器的刷新频率为59.95 Hz(在Windows设置中显示为59Hz),并且我们将游戏帧速率限制为58 fps,则可以实现“单个缓冲区” VSYNC。 但是,我们每秒减少渲染1帧。 显示屏将在一秒钟内显示一帧两次,这将导致明显的抖动。
为避免这种情况,我们希望将帧速率略微降低至:59,94 fps。 这样,我们得到了“单个缓冲区” VSYNC,并且没有抖动(实际上,监视器将在100秒内重复1帧)。 为了限制游戏的帧速率,我建议使用RTSS。 即使是有限制器的游戏,也不会提供十进制精度,这对于我们来说是必须的。 然后,可以从游戏中或GPU的选项中启用VSYNC。
如果您想自己尝试解决方案,请按照此处的详细指南进行操作。
守望先锋
是时候进行一些测试了。 在第一人称射击游戏中,输入延迟确实很容易“感受到”。 因此,我尝试在启用VSYNC的情况下运行《守望先锋》。 滞后真的很明显。 我通过RTSS启用了帧速率限制,我感到惊讶的是立即感觉到了时滞的减少。 但是,一分钟后,我再次注意到时滞。 我猜还有1个缓冲区排队。 因此,我将帧速率限制降低到59,930 fps,此问题已解决。
我还尝试了FastSync,并将帧速率限制为240 fps。 我可以感觉到输入延迟甚至比建议的解决方案还低。 当然,当不使用同步时,输入延迟是最低的。 将帧速率限制设置为59或240 fps(无同步)比同步方法快。
我将继续玩没有同步的《守望先锋》,因为输入延迟至关重要。 第一人称射击游戏的好主意是,撕裂不是很明显,特别是当帧速率超过刷新速率时。
杯头
Cuphead是一款2D滚动游戏,撕裂真的很容易被发现。 另一方面,由于游戏的快速性,输入滞后很重要。
无法使用FastSync,因为游戏框架限制了自身,并且颤抖非常明显。
提出的解决方案效果很好。 我现在可以尽情享受游戏的乐趣,而又不会流泪或颤抖
GSYNC VS FastSync VS VSYNC
即使我没有进行测量,我仍然可以感觉到输入滞后从最低到最高如下:
没有同步<没有同步+帧限制<FastSync <VSync +帧限制<< VSYNC
我浏览了BlurBusters中的度量,并在下图中将它们合并。 因此,对于60Hz和《守望先锋》:
无同步+ 58fps限制:34毫秒| 0
GSync + 58fps限制:37毫秒| +3毫秒
快速同步:39毫秒| +5毫秒
VSync + 58 fps限制:48毫秒| +14毫秒
垂直同步时间:98毫秒| +64毫秒
提出的方法(VSYNC +限制)比VSYNC快50ms。
No Sync增加的延迟仅为14ms。 请注意,没有帧限制的“无同步”没有进行任何测量,但是从CSGO测量(300fps的限制)来看,“无同步300fps VS无同步58fps”之间存在10毫秒的延迟。 因此,“ No Sync 300 fps VS VSYNC 58fps”的附加延迟应为:10 + 14 = 24 ms。
为了使该解决方案起作用,您的PC必须能够始终以指定的帧速率渲染帧。 如果只能以55–65 fps的速度进行渲染,则此解决方案不适用于60Hz显示器。
此处描述的解决方案与nVidia控制面板中的“ 最大预渲染帧 ”设置无关。 这是一个单独的控件,与VSYNC使用的缓冲区队列无关。 将此设置为“ 1”还可以帮助减少输入滞后。
为了测试RTSS是否真正起作用,以及您是否选择了正确的帧速率限制,请暂时不要启用VSYNC。 注意在屏幕的哪一点看到撕裂。 如果工作正常,则撕裂应保持在相同的垂直位置,并真正缓慢地向下移动。 如果它永远保持在同一位置或向上移动,则您的帧速率将高于屏幕的刷新速率,并且在启用VSYNC 2缓冲区时将排队。 如果快速改变位置,则帧速率限制将无法正常工作。