如果游戏支持NvidiaReflex低延迟技术,那么可以做以下调整。
接下来我会解答一些可以预见的疑问或争议。上面的结论看不明白的地方你也可能在下文找到答案。
垂直同步干两件事情,一是把帧率锁定在显示器最高刷新率,避免显卡输出多余显示器能处理的帧率;二是阻止显卡在显示器更新完当前帧之前输出新的帧给显示器,显示器处理完这一帧了,显卡才会给显示器下一帧。这样能够完全消除屏幕撕裂,但会带来很高的输入延迟,因为你的操作不会及时的反应到画面上。
然而在基本和丝滑方案里,帧率被限制在显示器刷新率以下,此时垂直同步实际上不起作用的,不会带来输入延迟。
那你可能又要问了,我都开启G-Sync并且限制帧率了,垂直同步不是不起作用呢?为什么还要开呢?那是因为如果不开,G-Sync生效状态下,屏幕底部仍然偶尔会出现撕裂。
此时的垂直同步只会为G-Sync起到稳定帧时的作用,是一种帧补偿机制,避免帧时的并不会带来的屏幕撕裂。细说的话太技术向,这里就不谈了。总之,开启G-Sync+垂直同步+限制帧率低于显示器最高刷新率4帧=最优解。
下面放一些测试数据:
是也不是,限制帧率的原因有两点。
一是为了消除屏幕撕裂。当帧率大于显示器刷新率时就会带来屏幕撕裂,不管你是不是G-Sync的显示器。另外G-Sync在这个时候是不起作用的。
二是为了降低输入延迟。尽管几乎所有人都认为FPS越高就代表着系统延迟越低,但实测结果却出乎意料。实际情况帧数较高而GPU满载时的输入延迟要显著高于帧数较低而GPU非满载时。具体看以下测试数据。
这组数据我们重点看上下红框数据的对比。(其他数据在比较当时A卡推出的Anti-Lag和N卡的低延时模式的效果,这是另外一个话题,而且情况有变,我们先不谈。)
可以看到,当GPU负载率在75%左右的时候,尽管此时的帧数比上面要低20多帧,输入延迟依然比GPU满载的时候降低了40%。提高帧率限制到仅比满载时低个几帧,GPU占用率为97%以下时,输入延迟仍然比满载的时候要低了很多。
我们降低以下渲染分辨率,把帧率拉高,看看高帧率下的表现。结果依然是非满载状态下的输入延迟显著低于满载状态下的输入延迟。
看下别的游戏中,结果也是一样。稍微限制一下帧率,保证GPU不满载,即可降低输入延迟。
这是为什么呢?原因是当GPU满载时,就会进入GPU瓶颈,此时CPU跑在GPU前面,发给GPU的渲染任务不能被及时完成,就会堆积在渲染序列。当渲染序列满了,CPU就得等GPU完成任务之后,再安排新的任务,由此造成延迟。
一个好的帧率限制工具做的事情就是通过限制帧率来创造一个类似CPU瓶颈的场景。CPU不会跑在显卡前面,渲染序列一直是空的,显卡坐等渲染,来一帧渲一帧,完全应付的过来。这样就不会造成渲染延迟。
只要游戏支持,就优先使用游戏自带的设置,因为他是从引擎级别限制的,带来的输入延迟最低。
其他游戏推荐使用RTSS或N卡控制面板,他们的优势是帧时极其稳定,画面最丝滑流畅。
基于问题3中所说的机制,NvidiaReflex使得开发者能够让游戏引擎更好的处理CPU和GPU之间的关系,保证CPU给的每一帧GPU都能及时渲染,从不堆积渲染序列。
你可以把它简单理解为一个进化版的帧率限制器,而且是一个动态的帧率限制器,启用Reflex就不需要限制帧率了。它能够让你享受最大帧率的同时,还能避免进入GPU瓶颈而导致系统延迟增加。
你无需做什么,这是游戏开发者干的事,只要游戏支持,你开启那个选项就好了。很多FPS游戏都支持Reflexl了,如Apex英雄和COD。
可以看到,开启Reflex后,仅仅损失了1fps,输入延迟却降低到与CPU不满载时差不多。
如果没有GPU瓶颈的问题,例如你FPS限制为140,GPU无压力,从来不满载,你的输入延迟已经是最低了,开启Reflex没用但也没有任何负面影响。
还是看图说话吧。作者分别在60Hz、144Hz、240Hz和360Hz的显示器上测试了不同帧率下的输入延迟情况。
看数据我们几个有趣的发现:
我们都知道,当显示器显示一帧画面时,它实际上是从顶部逐行刷新到底部的。读取的是显卡前台缓存中的内容。只不过这个过程很快,我们肉眼分辨不出来。60Hz下,就是16.6ms刷一屏的内容。
当帧率大于显示器刷新率时,显示器还没更新完帧A,显卡把帧B渲染好送过来了,然后显卡接着往下刷新的时候刷出来其实是帧B的内容。
还没刷到底呢,显卡又把帧C送过来了。
此时屏幕上就会出现撕裂,随着帧率超过刷新率越多,撕裂处也就越多。尽管这个时候系统延迟不高,我们移动鼠标还是非常跟手,但是屏幕的严重撕裂会让画面看起来很糟糕,而且并不流畅。
前面提到,垂直同步消除撕裂的机制是让显卡等着,显示器刷完一屏后再从显卡那里拿新的一帧。这样保证了画面的完整无撕裂,但是代价是输入延迟。
而G-Sync和FreeSync的原理就是显示器是可变刷新率,在支持的帧率范围内,刷新率根据帧率变化而实时变化,做到画面刷新的即时且完整无撕裂。为了使这个技术生效,我们要把帧率限制在显示器支持的最大帧率以下,例如使用144Hz显示器就把帧率限制为140fps。
其实还有个快速垂直同步,那个体验很差,就不提了,感兴趣可以自己搜索一下。
我的显示器买的早,华硕PG348Q,3440*1440分辨率,刷新率只有100Hz。
显卡是3080Ti,绝大部分游戏都可以跑满100fps,还能拉高渲染比例。个别画质拉满跑不到100fps的游戏也不是那种对输入延迟要求高的游戏,所以不用考虑。
于是,我在N卡控制面板中设置全局最大帧率设为96,垂直同步设为应用程序控制,并在游戏内开启。我喜欢锐利的画面,于是还开了0.5的图像锐化。
针对竞技类FPS游戏,我在单独程序设置里把最大帧率停用,然后在游戏内限制最大帧数为96。
这样几乎所有的游戏都可以流畅无撕裂运行,切输入延迟低,体验完美。
以后可能会考虑换更高刷新率的屏幕,毕竟对于竞技类FPS游戏,100Hz还是低了点。