龙空技术网

游戏画面撕裂卡顿是怎么一回事,给你科普详解

少数派 983

前言:

现时看官们对“鼠标移动时有粘滞感”大致比较关心,你们都想要分析一些“鼠标移动时有粘滞感”的相关知识。那么小编在网摘上收集了一些有关“鼠标移动时有粘滞感””的相关资讯,希望姐妹们能喜欢,各位老铁们快快来学习一下吧!

不知道这个 618 有多少人买了新的「路由器 Plash Speed5」?

既然国行的 PlayStation5 和 Xbox Series X/S 都已经确认「那个」没有问题了,加上相对合理的价格和预约一般就能买的体验,相信不少人在打算或购买过本世代的主机了。相比于前代,PlayStation5 和 Xbox Series X/S 有更好的画面、更流畅的体验;还带来了动态延迟输入(DLI)、自动低延迟模式(ALLM)、高帧率(HFR)等能进一步改善游戏效果的新特性。但在众多新特性中,可变帧率(VRR)带来的影响最为基础也最为直观。

所以当身边的 ta 问起新换的「路由器」好在哪里的时候,你该怎么跟 ta 解释呢?

游戏画面撕裂卡顿是怎么一回事

不知道大家日常游戏过程里有没有遇到如下图的情况?这就是我和游戏玩家口中的画面「撕裂」,无论是撕裂和卡顿都对游戏时的体验并不友好,但撕裂和卡顿造成的原因却完全不一样。

游戏画面撕裂(图源:Nivdia)

但想要理解「撕裂和卡顿是怎么发生的」还需要从最开始进行解释。

小时候常玩的动画集

我们都知道人眼有视觉暂留的特性,所以当很多张画面超过一定速度从人眼前滑过,我们就会就会认为画面中的内容是运动的,而每张画面则会被叫做。而显示器也是同理,它通过每隔一段时间刷新一次画面,让我们认为屏幕上的元素也都是运动的;日常生活中最常见的 60Hz 的显示器一秒钟会刷新 60 张画面,144Hz 的显示器一秒钟则会刷新 144 张画面。

显示器是如何呈现画面的

日常生活中很多人看的动画都是由画家画出,而游戏画面则是由显卡绘制每帧画面,显卡把每帧画面交给显示器,显示器就会从上到下一行一行地把这一帧画面绘制出来,这种一行一行的绘制方式我们成为「逐行扫描」。也就是说显示器显示画面并不是一下就能呈现一个画面的,仍需要很短的时间进行绘制,只不过因为视觉暂留的特性我们无法分辨而已。

画面在显示器上呈现也需要时间(图源:啃芝士 BV16x411e7bp)

当显卡绘制完成画面以后,需要把交给显存,显示器再从显存中拿到画面才能显示,如果显存中的画面发生了改变,显示器显示的内容也会跟着发生改变。

正常显示画面的方式(图源:啃芝士 BV16x411e7bp)

为了保证显示器能在显示过程中正常显示画面,不至于因为新画面导致撕裂,显存会划分为前缓冲区后缓冲区。显示器只接受前缓冲区的画面,显卡计算完成新画面了以后写入到后缓冲区中;当显示器想要显示下一帧画面时前后缓冲区的名称发生对调,原来的前缓冲区成了后缓冲区,原来的后缓冲区成了前缓冲区,刚刚绘制在后缓冲区的图像就能顺利地传给显示器了。这时显卡可以往新的后缓冲区中写入新画面,而不会影响到显示器正在显示的画面。

为什么发生了卡顿和撕裂

但即使是有了缓冲器依然不能解决游戏中画面出现撕裂的问题,这主要是因为显示器采用了固定刷新率,而游戏中显卡渲染每一帧所需要的时间是在不断波动的。

造成卡顿的主要原因

比如当遇到大面积的反射场景、光线复杂的环境或者物品爆炸等复杂的场景,显卡总是需要花费更多的时间才能渲染一帧,这时只能在一秒内只能输出 48 帧,那么你大概率就能察觉到画面已经发生了卡顿(注意不是撕裂)。这是因为显示器从前缓存读取画面并呈现出来以后,后缓冲区如果没渲染完的话,显示器会等待一个时间再去问前缓冲区索要画面。这时,你往往需要多等一段时间,显示器呈现的帧间隔就不均匀了,刚好人眼对不均匀的帧间隔很敏感,你就能很明显感知到画面发生了卡顿。

造成画面撕裂的主要原因(图源:啃芝士 BV16x411e7bp)

而较为简单的场景可以在一秒内则能输出 90 帧,这时显示器还在逐行呈现前缓存时,后缓冲区这边显卡已经渲染完毕了,前后缓冲区已经再次发生了翻转,这样显示器渲染到一半的画面剩下的就会变成另一个画面了,这时显示器会把新的画面给渲染出来,这就是撕裂。画面撕裂不仅仅影响体验,破坏沉浸感,甚至还会导致眼睛疲劳和头痛。

归根结底还是显示器固定的刷新时间导致了卡顿和撕裂。

要如何解决卡顿和撕裂传统解决方案 — 垂直同步

垂直缓存技术原理

在以前就有一项技术能减少卡顿和撕裂带来不适影响,也就是「垂直同步」。在简单环境下,如果示器还在显示前缓冲,这时显卡画好了后缓冲,垂直同步会禁止显卡进行绘图,直到显示器把前缓冲的画面显示完整,交换前后缓冲区的名字以后,显卡就会继续渲染了。如果你是 60Hz 的显示器,打开垂直同步以后画面就会锁在 60 帧了,144Hz 打开垂直同步以后画面就会锁在 144 帧。

帧率陡然降低的地方(红色)会有明显卡顿(图源:Nvidia)

但垂直同步并不能解决卡顿的问题。在复杂场景下,当帧速率降至低于该 60 帧时,垂直同步会将帧速率锁定在最接近的水平,例如每秒 45 或 30 帧,随着性能的提升,帧速率会回到 60,但是遇到性能瓶颈又会回落到较低的帧率,循环往复,让卡顿的感知反而会更加。

垂直同步还会造成鼠标延迟。如果你移动了1cm 瞄准点,电脑收到这个消息把移动 1cm 瞄准点的坐标输出给显卡,显卡把对应的画面输出给显示器,所有的流程都不会推后,延迟仅有电路延迟。而开启垂直同步以后,你移动瞄准点的时机刚好在显示器还没显示完前缓冲的阶段里,那么你移动瞄准点的指令会和显卡一起等着,直到显卡重新开始渲染;这无疑会增加延迟,表现在游戏中就是鼠标出现了粘滞感,所以大部分的射击游戏和 MOBA 类游戏都不是很推荐打开垂直同步。

更好的解决方案 — 可变帧率

既然垂直同步会增加鼠标延迟,且不能根治卡顿,那么我们不妨换个思路,无论是卡顿还是撕裂实际上都是因为显卡输出的帧数是波动的,那么我们不妨让显示器也跟着波动刷新不就好了?

没错,Nvidia 的 G-Sync 和 AMD 的 FreeSync 解决卡顿和撕裂的思路就是利用的这个,虽然他们背后的技术实现并不太一样,但是大体还是利用到了显示器刷新率的变频技术。而在 HDMI 2.1 版本中也正式引入了这个技术,并且命名为可变帧率(VRR),新的 PlayStation5 和 Xbox Series X/S 也都支持这一项技术。

可变帧率技能保证画面不撕裂也能保证画面不卡顿

显卡输出帧高于显示器刷新率时,可变帧率会暂时不交换前后缓冲区,并用新生成的帧及时放入后缓冲区中覆盖旧帧,保证画面不发生撕裂地情况的同时,尽可能保证延迟和一般情况一致。

可变帧率保证画面不撕裂

而当显卡输出帧低于显示器刷新率时,可变帧率会及时告诉显示器下一次刷新需要等待的实际时间,以及时降低显示器的刷新频率,让用户无法察觉画面出现了掉帧。

可变帧率保证画面不卡顿

可变帧率的目前支持得怎么样

龙争虎斗多年的 PC 平台上的可变帧率

在 PC 上,无论是 Nvida 的 G-Sync,AMD 的 FreeSync 都是可变帧率的一种。在过去 Nvidia 有更严格的验证标注,显示器需要有特殊的模块才能得到 G-Sync 标识,显示器价格普遍较高;而 FreeSync 则是一个相对开放的标准,显示器厂家只要选用支持 FreeSync 的面板就可以支持 FreeSync 了,相对而言价格较低。当然在近两年,Nvidia 也 兼容 了 FreeSync 这个开放标准,当 Nvidia 显卡连接到经过 Nvidia 认证的 FreeSync 显示器上时,Nvidia 会启用 G-SYNC COMPATIBLE 模式,同样能获得既无撕裂也无卡顿的画面。

部分 FreeSync 显示器也能打开 G-SYNC COMPATIBLE 模式了

但在电视上既不需要 FreeSync 认证也不需要 G-Sync 认证就可以支持游戏机的可变帧率,这是 HDMI 2.1 规格的一部分,并开始出现在大部分带有 HDMI 2.1 接口的电视机上。值得一提的是,有些 HDMI 2.0 的电视机也会支持可变帧率,具体还是要看商品的技术规格。

HDMI 2.1 可变帧率

玩梗归玩梗,最后需要提醒大家的是,虽然 PS5 和 Xbox Series X/S 都已经宣布了 HDMI 2.1 的可变帧率支持,但 PlayStation 也有「画饼」不填坑的先例。相比之下 Xbox Series X/S 以及 Xbox One X/S 还支持 FreeSync 的可变帧率,这样即使你没有一台支持 HDMI 2.1 的电视机,也依然可能可以通过 FreeSync 感受可变帧率的魅力。

Xbox One X(图片来自官网)

标签: #鼠标移动时有粘滞感