开启G 您所在的位置:网站首页 英伟达垂直同步开不开启 开启G

开启G

2024-05-21 17:03| 来源: 网络整理| 查看: 265

先引用一段NVIDIA官网对G-SYNC Compatible的描述:“虽然没有使用 NVIDIA G-SYNC 处理器,但是已通过 NVIDIA 认证。通过最基本的可变刷新率特性 (VRR),为您带来无撕裂、无卡顿的游戏体验。”

G-sync宣称可以“无撕裂”,但在仅使用这项技术时,并不能完全无撕裂。下面讲一讲原因(以守望先锋2为例,配置是RTX3070+LG 27GL850 2K144)。

有天我在NGA发了一篇帖子,询问即使锁帧到略低于刷新率,显示器OSD显示的刷新率(Hz数)依然波动原因。有一位大佬为我解答,如下图。

NGA问题NGA回答1NGA回答2

为此我画了一个示意图。

游戏内锁帧示意图

这张示意图我并不保证一定正确。原因是守望先锋没有开源,我不清楚它内部锁帧的机制。可以明确的是守望先锋游戏内锁帧是CPU锁帧,即限制CPU的指令生成速率。问题在于我不清楚它是限制 指令开始生成的时间 还是 指令发送给GPU的时间。暂且猜测它限制的是 指令开始生成的时间,这也有利于后面的分析。

假设游戏锁帧100fps,游戏严格限制CPU开始生成指令的间隔为10ms。假设CPU生成指令需要2ms。CPU生成指令消耗2ms,交给GPU渲染,假设这一帧需要5ms。GPU渲染完成后,在7ms时发送给显示器。10ms时,CPU开始生成下一帧的指令,同样在17ms时发送给显示器。显示器计算刷新率/帧率的方式只能是用1除以收到两帧的时间差,即1/(17-7)=100Hz,与锁帧数值相同。然而,游戏的不同画面对显卡的渲染压力不同。有的画面简单,比如目视天空,有的画面复杂,比如5V5团战,GPU渲染帧的时间就会有差异。例如下一帧,GPU消耗了5.5ms渲染,在27.5ms时发送给显示器,这样显示器计算瞬时刷新率,就是95Hz。

同样道理,如果GPU渲染帧的时间大幅度缩短,使得显示器收到两帧的间隔低于1/最大刷新率(即瞬时帧率高于刷新率),G-sync瞬时失效,画面依然会撕裂。同样道理,CPU生成指令的时间波动,也会导致该现象。

显示器OSD显示的刷新率波动是必然现象,只要是CPU锁帧都会如此,但开启G-sync画面依然撕裂的问题是可以解决的。方法是在驱动控制面板为该游戏设置垂直同步 开。

驱动控制面板

注意是在管理3D设置--程序设置--添加。非必要不要修改全局设置。

这个方案是著名文章“Gsync101”所建议的设置,即开启G-sync,游戏内关闭垂直同步/三重缓冲,驱动内为该游戏开启垂直同步,并在游戏内锁帧到略低于刷新率3帧(若游戏内没有锁帧功能,则使用RTSS或驱动)。但NVIDIA驱动更新过,这个方案有一点问题。

以守望先锋为例,当驱动内设置垂直同步 开 之后,144Hz的屏幕,游戏内会自动锁138帧。不是说游戏内的锁帧设置被锁定,而是即使你游戏内设置锁帧600帧,游戏依然最高138帧。左上角显示两个小点,即游戏认为是GPU瓶颈,其实不是,只是因为游戏不知道驱动的锁帧操作。

如果驱动内设置 垂直同步 默认,在游戏内开启垂直同步,关闭三重缓冲,游戏也是最高138帧,但左上角是0个小点。

这两种情况,GFE的“平均PC延迟”和关闭垂直同步是没有区别的。也就是说,在G-sync生效的情况下,V-sync不会造成极高的操作延迟。也就是说,突然遇到生成非常迅速的帧,显卡会等待显示器刷完上一帧之后,再发送。也可以理解为瞬时恢复到V-sync行为,画面一定不会撕裂。

那么回到前面的问题,Gsync101的方案不合适的话,应该怎样设置呢?默认G-sync处于开启状态,其它设置参考我之前发的关于守望先锋的文章。

1 游戏内关闭垂直同步和三重缓冲,锁帧600(OW2的最大值,其它游戏尽量设置为不锁帧),驱动里为该游戏设置垂直同步 开。

2 游戏内开启垂直同步,关闭三重缓冲,锁帧600,驱动关于该游戏的部分全默认。

3 游戏内关闭垂直同步和三重缓冲,锁帧135(刷新率-9),驱动里为该游戏设置垂直同步 开。

其中方案3为什么是135,建议看我之前发的关于守望先锋的文章。其实在开启V-sync时,这样设置已经没有意义了。但我更喜欢使用游戏内的锁帧功能(让游戏内锁帧功能生效,而不是驱动限制帧数),因为游戏引擎可以从源头限制帧的生成。

这三种方案,平均PC延迟观察不到区别,在我的平台上都是9-11ms,大部分时候是9.8ms,场景的话依然参考以前的文章,不复读。也不发图了,屏摄图片又大又不清晰。

我之前文章所说的设置方案,依然是可用的。核心区别在于是否开启V-sync。这取决于你对撕裂的容忍程度。像我之前说的,144hz的屏幕,锁141帧,即使撕裂,撕裂线也稳定在屏幕底部,不影响你玩游戏,锁135帧,观察不到撕裂。

另外,这个G+V会导致游戏自动锁帧的现象,我还没有观察其它游戏。我在NGA发的那个贴里,有人说2077也是如此。如果所有游戏都这样,说明NVIDIA选择了傻瓜式的方案,普通用户组完平台之后,游戏内直接开V-sync就可以大概率获取一个比较好的体验。但专业用户还是建议仔细研究研究不同设置下操作延迟的差异。

下一个话题,不同锁帧方式的优劣,包括游戏内,RTSS,驱动。测试均在驱动和游戏均关闭V-sync的条件下进行,防止那个锁138帧的机制影响测试结果。

游戏内RTSS驱动

游戏内锁帧,平均pc延迟为9.3ms。帧生成时间曲线有微弱的波动。

RTSS锁帧(手动设置主动模式,以CPU占用率为代价换取更平滑的帧生成时间),平均pc延迟为15.8ms。帧生成时间曲线非常平滑。

驱动锁帧,平均pc延迟为9.6ms,与游戏内锁帧几乎相同。帧生成时间曲线有微弱波动。场景里的敌对角色忘记换了...应该影响不大。

对于守望先锋,锁帧的选取优先级当然是游戏内>RTSS(仅在追求帧生成时间稳定性时)>驱动,选择一个地方锁帧即可,不要同时设置多个锁帧。但其它游戏不一定是这样。某些游戏的锁帧功能做的非常拉跨,例如CSGO设置FPS MAX之后可能存在掉帧现象,这种时候就需要玩家自行测试三种锁帧方案的优劣。用到的工具就是MSI afterburner/RTSS,和驱动的GFE。

为什么RTSS的锁帧延迟较高?下面是我的猜想。

RTSS在锁帧模式的说明里提到了对齐的是 渲染帧的开始时间。渲染这个词,一般指的是GPU的操作,不包括CPU生成指令。

一种猜想

如图,猜想是RTSS限制的是 CPU发送指令 的时间,或者说GPU开始渲染帧的时间。其中X表示CPU发送指令。A事件发生后,CPU开始生成指令,但等待10ms后才会发送给GPU,GPU收到指令后立即开始渲染,然后发送给显示器。同样的,20ms时,10ms处发生的事件也发送给GPU渲染...观察两个A的距离,再回头看前面我画的图,可以看到这种锁帧会导致1帧的操作延迟,这与Gsync101的结论相同。emmm,RTSS毕竟是一个外部软件,想像游戏引擎那样直接控制指令生成,可能有点难度。Gsync101说驱动锁帧的延迟更高,但我这里没有观察到该现象,这可能是因为驱动更新了。

为什么RTSS锁帧的帧生成时间更平滑,也很好解释,因为在这种锁帧模式下,CPU生成指令的耗时不会影响显示器受到两帧的时间差。

欢迎讨论,有错误欢迎指出。Gsync101写了G+V+锁帧的方案在G-sync compatible显示器上表现可能相比使用G-sync芯片的显示器有区别,所以我不能肯定这样设置是否正确,所以我在之前守望先锋的文章中没有建议打开V-sync...但根据平均pc延迟的和撕裂情况的观察,似乎该方案也适用于G-sync compatible显示器。

欢迎点赞关注。计算机软硬件和网络相关问题,必回的,即使我不知道也会回你我不知道。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有