隆重推出 NVIDIA Reflex:一套用于在竞技游戏中优化和测量延迟的技术

由 Seth Schneider 发表于 2020年9月1日 | 精选故事 FramesWinGames GeForce RTX GPU 指南 NVIDIA Reflex

如今,73% 的 GeForce 游戏玩家都在玩竞技类多人游戏(也称为电竞游戏)。备受追捧的电竞游戏“英雄联盟 (League of Legends)”在 2019 年的冠军赛中吸引了 1 亿多名观众,超过了去年的 NFL 超级碗。随着电竞赛事在收视率与游戏时间上均已达到可与传统运动相媲美的程度,对于游戏玩家来说,优化 PC 和图形硬件以使其发挥最佳性能比以往任何时候都更为重要。正因如此,NVIDIA 在几年前投资建设了由 NVIDIA Research 科学家组成的电竞实验室,致力于探究玩家和硬件在电竞中的表现。今天,我们很高兴与您分享这项研究的首个重大成果。

除了新的 GeForce RTX 30 系列 GPU 之外,我们还将推出 NVIDIA Reflex,这是一款革命性的组合,包含 GPU 和 G-SYNC 显示器,以及可测量和降低竞技游戏延迟(也就是从点击到显示之间的延迟)的软件技术。降低系统延迟对于竞技类游戏玩家至关重要,因为这能保证 PC 和显示器更迅捷地响应用户的鼠标和键盘输入操作,从而让玩家更迅速地发现敌人的踪迹,更精准地击毙敌人。

NVIDIA Reflex 采用两种主要的新技术:

NVIDIA Reflex SDK:是面向游戏开发者的一套新 API,旨在减少和测量渲染延迟。通过直接与游戏集成,Reflex 低延迟模式能够让游戏引擎即时完成渲染任务,从而消除 GPU 渲染排队现象,降低 CPU反压。与现有的仅使用驱动的技术(如 NVIDIA 超低延迟模式)相比,这能提供更低的延迟。

Reflex 低延迟模式即将在多款热门竞技类游戏中一展身手,包括“Apex 英雄 (Apex Legends)”,“使命召唤:黑色行动 (Call of Duty: Black Ops)”系列最新游戏、“使命召唤:现代战争 – 战区 (Call of Duty: Modern Warfare – Warzone)”,“命运 2 (Destiny 2)”、VALORANT,同时将改善基于 GeForce GTX 900 以及更高规格的 NVIDIA GeForce 显卡的 GPU集中型游戏场景中的延迟。

NVIDIA Reflex延迟分析器:这款革命性的系统延迟测量工具集成在宏碁、华硕、MSI 和戴尔推出的新款 360Hz G-SYNC 电竞显示器中,并得到了华硕、罗技和雷蛇等优秀电竞外设厂商的支持。

Reflex 延迟分析器能够监测到鼠标点击,并测量屏幕上的相应像素(比如枪焰)产生变化所需的时间。在此之前,这种测量需要使用价格超过 7000 美元的专用高速相机和设备来执行,游戏玩家几乎无法实现。

 

过去,游戏玩家必须根据吞吐量指标(例如每秒帧数 (FPS))来推测系统的响应能力,而 Reflex 延迟分析器让玩家可以更全面、精准地了解鼠标、PC 和显示器的性能。现在,通过 Reflex 延迟分析器,竞技游戏玩家可在确知其系统达到理想性能表现的情况下,满怀信心地投入比赛。

 

在本文中,我们将深入探讨系统延迟和 NVIDIA Reflex 技术 – 赶快做好准备吧,即将为您奉上精彩内容!

延迟究竟是什么?

延迟是一种时间指标,用于描述执行所需操作和取得预期结果之间的延时。当我们使用信用卡在网上或在杂货店付款时,系统确认购买时的延时就是延迟。

游戏玩家主要经历两种延迟:系统延迟网络延迟

网络延迟是游戏客户端与多人服务器之间的往返延迟,通常称为“ping”值。

 

这种延迟可能会以多种不同的方式影响我们的游戏,具体取决于游戏的网络相关代码处理网络延迟的方式。以下是几个示例:

  • 命中确认延迟,比如说您在射击时命中了敌人,但要延后一段时间才能得到击杀确认。这可能会导致弹药浪费,或者转移到下一个攻击目标时发生拖延。
  • 与游戏中物体之间的交互延迟,例如开门或获取战利品。
  • 对手定位延迟,这会造成被称为“探头优势”的问题(稍后我们会详细介绍)
 

请注意,网络延迟与网络不稳定问题(例如丢包和数据包顺序混乱)并不相同。网络不稳定会导致诸如橡皮筋式弹回和不同步之类的问题。所谓橡皮筋式弹回,就是当您在游戏中四处移动时,会不停弹回到几秒钟之前的位置。就像橡皮筋一样,您会被弹回到服务器所看到的位置。不同步则是指丢包导致网络卡顿的情况。实际效果就像是敌人暂停了一秒,然后突然瞬移到其正确的位置。这两类常见问题均非网络延迟所致,而是通常发生在数据包必须传输更远的距离,并因此导致较高延迟的情况下。

系统延迟是指您的鼠标或键盘操作与显示器上相应的像素变化之间的延迟,例如枪火或角色移动。这也称为“从点击到显示之间的延迟”或者“端到端系统延迟”。这种延迟不涉及游戏服务器 – 仅与您的外设、PC 和显示器有关。

 

这种延迟会以多种不同的方式影响游戏。以下是几个示例:

  • 响应速度延迟,比如说您移动了鼠标,但屏幕上的准星没能及时跟上您的操作。
  • 射击延迟,比如说您开枪射击,但弹孔贴花、弹道和武器后坐力都滞后于实际的鼠标点击操作。
  • 对手定位延迟,也称为“探头优势”。(没错,“探头优势”也受系统延迟的影响!)
 

概括而言,系统延迟分为三个主要阶段:外设(例如鼠标)、PC 和显示器。遗憾的是,由于“输入延迟”或“输入滞后”这种术语用来描述不同部分的系统延迟,因此这种延迟的描述存在一定的难度。

例如,鼠标包装盒上的“输入延迟”表示鼠标需要多长时间处理您的点击操作。显示器的包装盒上的此类术语则表示显示器需要多长时间处理帧。游戏和软件工具则用这类术语来描述游戏需要多长时间处理您的输入。如果所有这些都可以称为“输入延迟”,那“输入延迟”究竟是什么?

端到端系统延迟

让我们花时间进行更深入的探究,并定义一些比“输入滞后”更准确的术语:

  • 外设延迟:输入设备处理机械输入并将这些输入事件发送到 PC 所需的时间
  • 游戏延迟:CPU 处理对游戏世界的输入或更改并提交新帧供 GPU 渲染所需的时间
  • 渲染延迟:从待渲染的帧排队列齐到 GPU 完全渲染帧之间的时间
  • PC 延迟:帧在 PC 上传输所需的时间。这包括游戏延迟和渲染延迟
  • 显示延迟:GPU 完成帧渲染后,显示器呈现新图像所需的时间
  • 系统延迟:涵盖整个端到端测量的时间 – 从外设延迟开始到显示延迟结束

这些概要定义忽略了某些细节,不过它们确实为我们提供了有效说明延迟的良好基础。我们将在本文后面详细介绍每个阶段,因此,如果您想获得更多技术知识,请跳到“高级”部分。

FPS 与系统延迟之间有何区别?

通常,较高的 FPS 与较低的系统延迟相关,但绝非一比一的关系。为了更好地理解这一点,让我们退后一步,思考如何衡量与 PC 之间的交互。首先,我们的显示器每秒会为我们呈现一定数量的画面,这个数量就是名为FPS(每秒帧数)的吞吐率。其次,是我们的操作体现在其中一帧画面中所需的时长——这段时间被称为系统延迟。

如果我们有一台可以实现 1000 FPS 渲染速率的 PC,但是输入要花一秒钟时间才能到达显示器,那么整个体验会非常糟糕。反之,如果我们的操作是即时的,但帧率为 5 FPS,那么也无法实现良好的体验。

那么哪一点更为重要?在一年多之前,我们开展了一项研究以解答这个问题,研究结果非常有趣。我们在 SIGGRAPH Asia 上发表了完整的研究信息,简单来说,我们发现系统延迟对于玩家在瞄准训练器中完成瞄准任务的能力的影响更大,远超过其显示器上显示的帧率。但这是为什么呢?

系统延迟为何如此重要?

让我们来看一个真实游戏中的示例,以开始回答这个问题:

 

首先,我们来看一下命中判定。命中判定是玩家常用的一个术语,表示游戏判定其对另一名玩家的射击的准确程度。在我们确知自己已经准确击中目标,但系统没能正确判定时,我们常常会抱怨命中判定机制。我们都曾经有过这样的经历。但这真要归咎于命中判定机制吗?

 

在上面的动画中,我们在十字准星恰好覆盖目标时按下了鼠标按键,但仍然未命中。由于系统延迟和对手的移动,游戏引擎读取到的十字准星位置实际上是在目标后方。实际上,您在显示器上看到的画面滞后于游戏引擎当时的状态。原因非常简单,PC 需要一定的时间来处理信息、渲染帧并将其呈现在显示器上。在毫秒必争的游戏中,额外的 30 到 40 毫秒延迟也可能意味着错失赢得赛事的机会。

接下来,我们再来了解一下“探头优势”。在高水准的比赛中,在夹角有优势时(也就是在您比对手离拐角更远时),您通常会固定保持一定角度,以抵消称为“探头优势”的网络游戏特征。

探头优势是指,攻击者在绕过角落窥视时,相对于固定保持一定角度的玩家占有的瞬间优势。由于攻击者的位置信息需要经过一定时间才能通过网络传输给防御者,因此攻击者会占据天然优势。为了弥补这一点,玩家可以“偷窥”角落;快速窥探环境然后躲藏起来,这让玩家可以在敌人发现自己之前先看到敌人,从而获得瞬间优势。这种现象通常被视为游戏网络代码或网络延迟的一项特征。但是,在探头优势中,系统延迟会发挥极大的影响。

 

如您在上图中所见,两个玩家距离转角的距离是相等的,ping 值也是相同的。唯一的区别在于系统延迟。

与命中判定的解释相似,在更高的系统延迟下,您看到的游戏世界的内容会略有延迟 – 这会导致在您看到敌人之前,敌人已经看到了您。如果您的系统延迟大幅低于对手,那么或许可以彻底避免探头优势。在这里,游戏网络仍然发挥着一定的作用,但总体而言,较低的系统延迟有助于抵免探头者在防御方面的优势,并占据攻击方面的优势。

最后,我们来讨论一下瞄准精度,尤其是甩枪。对于诸如 CS:GO VALORANT 之类的竞技游戏,甩枪练习或许是最重要的一项训练。您必须在瞬间找到目标,轻移鼠标并以惊人的精度射击,这需要毫秒级的精确度。但是,您是否曾经有过这样的感受,无论怎样调整,自己的甩枪表现都没法做到前后一致?

 

瞄准涉及一系列细分动作 – 凭借潜意识一般的反应,根据十字准星相对于攻击目标的当前位置做出校正。在较高的延迟下,这种反馈循环的时间会延长,从而导致精度降低。此外,在平均延迟较高的情况下,延迟变化要更大,这意味着您的身体很难做出预测和适应。最终结果非常明确 – 高延迟会降低精度。

这使我们得出了前面提到的研究结果。在下面的图表中,您可以看到在衡量甩枪射击精度时,较低的延迟会产生多大的影响。

在竞技游戏中,较高的 FPS 和刷新率 (Hz) 能降低延迟,提高您的输入操作如愿体现在屏幕上的几率。延迟的减少幅度即便很小,也会影响甩枪表现。在我们的最新电竞研究博客中,NVIDIA 研究团队探索了不同级别的系统延迟对玩家表现有怎样的影响。

NVIDIA 研究发现,即便是微小的系统延迟差异(12 毫秒与 20 毫秒)也会给瞄准表现造成极大的影响。实际上,在一台系统延迟介于 12 毫秒到 20 毫秒之间的 PC 上,完成瞄准任务的平均差异(找到目标并击中目标所需的时间)为 182 毫秒 – 大约是系统延迟差异的 22 倍。为了说明这一点,在相同的目标难度下,使用 12 毫秒 PC 设置时,在 128 tick(每秒对弹道的判定次数)的 VALORANT CS:GO 服务器中,您的射击平均会提前 23 tick 被判定为命中目标。然而,大多数游戏玩家使用的游戏系统延迟高达 50-100 毫秒!

那么,这种机制能否转化为实际游戏中的更高成功率?要想在竞技射击游戏中表现出众,不仅仅需要高超的射击技巧。敏锐的游戏意识和老练的战略的确可以极大地帮您获得“吃鸡”或在决战圈中胜出的机会。但是,在研究“绝地求生 (PUBG)”“堡垒之夜 (Fortnite)”数据后,我们发现较高的 FPS(较低的延迟)和 K/D 比率(击杀死亡比)之间也具有类似的相关性。

这种相关性绝非因果关系。但是,如果将上述科学结论应用于这种相关性,我们会看到有许多证据支持这样的说法,即较高的 FPS 和较低的系统延迟能提高命中几率,从而提高击杀比。

借助 NVIDIA Reflex 减少系统延迟

随着 NVIDIA Reflex 的推出,我们着手结合使用 SDK 和驱动优化来优化渲染管线的各个方面,以降低延迟。根据具体情况,其中部分技术可以大幅缩短延迟时间,而其他一些技术的效用则比较有限。无论如何,NVIDIA Reflex 都体现了我们致力于为游戏玩家和开发者提供优化系统延迟的工具的承诺。

NVIDIA Reflex SDK

使用 Reflex SDK,游戏开发者可以实现低延迟模式,在这种模式下,游戏引擎能够完成即时渲染,从而消除 GPU 渲染排队现象,减轻受 GPU 限制的情况下造成的 CPU 反压。

在上图中,我们可以看到队列中已经充满了帧。CPU 处理帧的速度快于 GPU 渲染帧的速度,造成了这种作业积压,从而导致渲染延迟增加。Reflex SDK 与驱动中的超低延迟模式具有一些相似之处。但是,通过将该 SDK 直接集成到游戏中,我们就可以控制 CPU 从渲染队列和管线的其他下游阶段获得的背压量。在超低延迟模式下,驱动的控制能力极低。尽管超低延迟模式通常可以减少渲染队列中的作业,但无法消除游戏和 CPU 方面增加的背压。因此,Reflex SDK 带来的延迟优势通常比驱动中的超低延迟模式要出色得多。

当开发人员在游戏中集成Reflex SDK之后,他们就可以通过动态调整渲染工作提交给GPU的时间,来有效地延缓输入和游戏模拟的采样,以确保能够得到及时的处理。

此外,该 SDK 还提供了一种称为“低延迟加速”的功能。此功能将覆盖 GPU 中的节能功能,以在 CPU 占用大量内存时使 GPU 时钟保持高频率。如果游戏为 CPU 受限型,更长的渲染时间会增加延迟。保持较高的时钟频率会增加功耗,但在 GPU 利用率严重低下而 CPU 大批量提交最终渲染作业时,这种做法能略微减少延迟。请注意,如果您不想在功耗方面做出牺牲,那么可以启用 Reflex 低延迟模式,而非低延迟加速模式。

竞技游戏瞬息万变,因此会在受限于GPU和受限于CPU之间来回转换。如果有爆炸场面,而且存在大量的颗粒物,此时游戏受 GPU 限制,Reflex SDK 将通过避免 GPU 作业大量排队来降低延迟。如果渲染任务非常简单,游戏受 CPU 限制,Reflex SDK 将通过保持较高的 GPU 时钟频率来确保较低的延迟。无论渲染管线的状态如何,Reflex SDK 都会智能地减少给定配置下的渲染延迟。借助 Reflex SDK,游戏玩家可以将渲染延迟保持在最佳状态,而不必将所有游戏设置调为低。

在 Reflex SDK 发布之时,以下游戏计划在 2020 年 9 月 17 日通过我们的下一个 Game Ready 驱动支持 NVIDIA Reflex 技术:“Apex 英雄 (Apex Legends)”“堡垒之夜 (Fortnite)”和 VALORANT。此外,以下游戏已宣布支持即将推出的 NVIDIA Reflex 技术:“使命召唤:黑色行动 (Call of Duty: Black Ops)”“使命召唤:战区 (Call of Duty: Warzone)”“厨房大逃杀 (Cuisine Royale)”“命运 2 (Destiny 2)”“征召 (Enlisted)”“魔都 (Mordhau)”

NVIDIA Reflex SDK 支持自 2014 年发布的 GeForce GTX 900 系列产品起的所有 GPU。但是,GeForce RTX 30 系列 GPU 上的低延迟加速将保持略高的时钟速率,以进一步降低延迟。

如果您想要深入了解 SDK 的工作原理,我们会在“高级”部分中介绍渲染管线、CPU/GPU 受限以及如何降低延迟。

NVIDIA Reflex SDK 支持自 2014 年发布的 GeForce GTX 900 系列产品起的所有 GPU。但是,GeForce RTX 30 系列 GPU 上的低延迟加速将保持略高的时钟速率,以进一步降低延迟。

如果您想要深入了解 SDK 的工作原理,我们会在“高级”部分中介绍渲染管线、CPU/GPU 受限以及如何降低延迟。

针对延迟的增强控制面板选项

超低延迟模式

如果游戏不支持 Reflex SDK,玩家仍可以通过从 NVIDIA 控制面板启用 NVIDIA 超低延迟模式来获得一定的延迟改善。只需打开控制面板并导航到“Manage 3D Settings”(管理 3D 设置),然后依次选择“Low Latency Mode”(低延迟模式)、“Ultra(超)”选项即可。如前文所述,这将有助于降低渲染延迟,但不能完全控制管线。

如果游戏支持 NVIDIA Reflex 低延迟模式,那么我们建议使用这种模式,而非驱动中的超低延迟模式。但是,如果玩家同时开启了这两种模式,Reflex 低延迟模式会自动获得更高优先级。

首选最高性能

NVIDIA 显卡驱动长期以来一直附带有名为“电源管理模式”的选项。此选项允许游戏玩家选择 GPU 在受 CPU 限制情况下的运行方式。在 GPU 作业量饱和时,它将始终以最高性能运行。但是,在 GPU 作业量不饱和时,就有机会通过在保持 FPS 不变的同时通过降低 GPU 时钟频率来降低功耗。

与 Reflex SDK 中的低延迟加速功能相似,首选最高性能模式的优先级高于GPU 的节能功能,允许 GPU 始终以更高的时钟频率运行。更高的时钟频率会以稍高的功耗为代价,以减少CPU受限情况下的延迟。此模式专为那些不计较功耗,但却希望减少每一微秒延迟的游戏玩家所设计。

在GeForce RTX 30 系列GPU上,我们可以将时钟频率设定得更高,从而让GPU在CPU受限的情况下以最低渲染延迟作为目标。使用较旧型号GPU的用户仍然可以启用首选最高性能模式从而使GPU维持在基准频率上。

GeForce Experience 中的自动优化

在 9 月17 日发布新的 GeForce Experience 更新时,游戏中叠加性能面板中提供了一个新的 Beta 版功能,使游戏玩家可一键调整其 GPU 性能,从而降低渲染延迟。

这种先进的自动优化功能可以扫描 GPU,确定曲线上每个电压点的最大频率凸起。在该功能确定并为您的 GPU 应用理想的设置后,它还会重新执行测试,为您维护始终如一的优化效果,保证您可以获得稳定的优化效果。

请继续关注 GeForce.cn,了解有关这种激动人心的新功能的更多详情和方法说明。

借助 NVIDIA Reflex 测量系统延迟

到目前为止,系统延迟尚未引起广泛关注的主要原因之一是难以精确测量。要测量延迟,您的设备必须能够精确获取测量段的开始和结束的时间。

过去,只能使用昂贵且笨重的高速相机、工程设备以及经过改造的鼠标和 LED 灯来跟踪按下鼠标按键的时间,以此完成系统延迟的测量。使用 1000 FPS 高速相机时,您可以测量低至 1 毫秒的延迟。但是,这样一套测量设备最起码也要花费 7,000 美元。而且在拥有设备之后,每次测量也需要约 3 分钟的时间,对于 99.9% 的游戏玩家而言,这都是难以承受的。

NVIDIA Reflex 延迟分析器

兼容的 360Hz G-SYNC 显示器将于今年秋季发布,并搭载一项新功能 – NVIDIA Reflex 延迟分析器。这一革命性的新增功能让游戏玩家能够衡量其系统的响应速度,从而使他们能够在开始比赛之前完全了解并优化 PC 的性能。

 

要使用此功能,只需将鼠标插入 360Hz G-SYNC 显示屏上指定的 Reflex 延迟分析器 USB 端口即可。显示器的 Reflex USB 端口是通向 PC 的一条简单直接通道,可以在不增加任何延迟的情况下,监控鼠标点击。

Reflex 延迟分析器 的工作原理是检测鼠标的点击操作与屏幕上显示的像素发生变化(即枪火)之间的时间,从而为您提供完整的系统延迟测量数据。

GeForce Experience 的新性能叠加功能可实时报告延迟指标。要查看延迟指标,请在该功能于 9 月份发布后导航到“Performance Overlay”(性能叠加)选项,然后启用“Latency Metrics”(延迟指标)设置。

NVIDIA Reflex 延迟分析器 将系统延迟测量值分解为鼠标延迟、PC + 显示延迟和系统延迟。

您可以将各种鼠标(蓝牙鼠标除外)与 Reflex 延迟分析器 一起使用,以获得 PC + 显示延迟。但是,如果使用罗技雷蛇或者华硕出品的兼容型鼠标,您还将能够测量外设延迟并获得完整的端到端系统延迟。

此外,我们还将发布一个包含平均鼠标延迟的开放式数据库(如果 GeForce Experience 能识别您的鼠标,则可以参考该数据库)。未来,社区将能够向该数据库添加鼠标。我们日后将发布更多相关信息。

在撰写本文时,有三家鼠标合作伙伴宣布支持 NVIDIA Reflex 延迟分析器,他们是:华硕、罗技和雷蛇。请关注他们的网站和社交媒体页面,以查看有关 NVIDIA Reflex 延迟分析器 兼容性的公告。此外,从今年秋季起,华硕、宏碁、戴尔和 MSI 将陆续发布内置有 NVIDIA Reflex 延迟分析器 技术的 360Hz G-SYNC 显示器,敬请关注。

NVIDIA Reflex 软件指标

如果您迫切想开始测量延迟,可以在拿到新款 360Hz 显示器之前这样做。只要游戏集成了 NVIDIA Reflex SDK,就能将游戏延迟和渲染延迟指标添加到游戏统计数据中。此测量值并非您感觉到的完整延迟,但可以帮助您着手优化延迟。

此外,GeForce Experience 现在还提供性能叠加显示功能,让您能够跟踪各种游戏中的渲染呈现延迟。渲染呈现延迟通过渲染队列和 GPU 渲染来跟踪呈现调用。由于它是帧的最终调用,因此,渲染呈现延迟的大小将比使用 NVIDIA Reflex SDK 测量的渲染延迟略小,但仍将让您清楚了解渲染延迟。我们将在未来的更新中将渲染延迟添加至 GeForce Experience。

您只需在本月下旬该功能发布时更新至 GeForce Game Ready 驱动和 GeForce Experience 的最新版本,然后选择“Performance”(性能)菜单,选择“Latency Metrics”(延迟指标)设置,接着启用“Performance overlay”(性能叠加显示)。

以更低的延迟进行瞄准训练

除了提供延迟测量工具之外,我们还与 KovaaK 2.0 的开发商 The Meta 合作,在未来的客户端更新中引入新的 NVIDIA 实验模式,以帮助游戏玩家改善表现和磨炼技能。

您可以通过沙盒或训练程序进入 NVIDIA 实验模式。进入 NVIDIA 实验模式后,选择您感兴趣的实验。此外,我们还将 NVIDIA Reflex SDK 集成到 KovaaK 2.0 中,另外还提供了一些其他技术,可帮助游戏玩家感受高低系统延迟之间的差异。

参加实验不仅有助于改进您的准头,而且还能帮助进行重要的电竞研究。通过与 The Meta 在 KovaaK 2.0 上进行合作,我们能够测试并破解竞技游戏领域中的谜团。例如,在我们的首批实验中,有一项是希望根据竞技游戏玩家对 VALORANT 中的目标轮廓颜色的争论科学地确定目标颜色选择偏好。

其他实验将测试不同的延迟范围等项目,同时要求您完成一些具有挑战性的任务。

下一级别:系统延迟 – 专家模式

现在让我们深入内部,在下一个细节级别上看看这一切是如何工作的。本节将介绍鼠标点击操作实际上如何传递到屏幕上的像素、游戏和渲染管线的概念、CPU 和 GPU 受限对延迟的影响以及渲染管线中的重叠,最后介绍一些用于帮助可视化系统中发生的情况的工具。

详解您的操作如何传递到显示器

那么,鼠标点击操作实际上如何传递到显示器?下图分解了管线的各个阶段。请注意,虽然这些阶段之间存在重叠,但它们一定要按照从左到右的顺序开始和完成。

我们来分别介绍上图中第二行的每个框。请注意,框的大小并未按比例。此外,为简单起见,我们将重点关注鼠标,但以下所有内容均适用于连接到 PC 的各种 USB 外设。

  • 鼠标硬件 – 在鼠标准备沿导线发送事件时,此硬件被定义为第一个电接触点。在鼠标中,有几个例程(如防抖)会给鼠标按键按下事件增加延迟。请注意,防抖例程很重要,它可防止您在不想点击鼠标时点击鼠标。这些额外的点击通常称为双击 – 由于防抖例程过于激进,此时会发送两次点击而不是一次。延迟并不是鼠标性能的唯一关键特性。
  • 鼠标 USB 硬件 – 一旦完成防抖,鼠标必须等待下次轮询,以便沿导线发送数据包。此时间会在 USB 硬件中反映出来。
  • 鼠标 USB 软件 – 鼠标 USB 软件是指操作系统和鼠标驱动处理 USB 数据包所需的时间。
  • 采样 – 点击操作根据鼠标的轮询速率进入操作系统中,此时它们可能要等待下一次机会才能让游戏进行采样。该等待时间称为采样延迟。此延迟可以根据 CPU 帧率增大或缩小。
  • 模拟 – 游戏必须不断更新游戏世界的状态。此更新通常称为模拟。模拟包括更新动画、游戏状态和玩家输入导致的变化等工作。模拟是将鼠标输入应用于游戏状态的阶段。
  • 渲染提交 – 随着模拟确定清楚在下一帧中的哪个地方放置相关项,它将开始向图形 API 运行时发送渲染作业。该运行时接着将渲染命令传递给图形驱动。
  • 图形驱动 – 图形驱动负责与 GPU 通信并向其发送命令分组。根据图形 API 的不同,驱动可能会为开发者进行此分组,或者开发者可能要负责对渲染作业进行分组。
  • 渲染队列 – 在驱动提交要让 GPU 执行的作业后,该作业会进入渲染队列。渲染队列的目的是:通过使缓冲区内始终放有需要 GPU 执行的作业,不断向 GPU 提供作业。这有助于更大限度提高 FPS(吞吐量),但可能会带来延迟。
  • 渲染 – GPU 渲染与单个帧相关的所有作业所需的时间。
  • 合成 – 根据显示模式(全屏、无边框、窗口化)的不同,操作系统中的桌面窗口管理器 (DWM) 必须提交另一些渲染作业,以合成特定帧的其余桌面部分。这可能会增加延迟。建议始终处于独占全屏模式,以更大限度地减小合成延迟!
  • 扫描输出 – 合成完成后,最终的帧缓存就已经为显示做好了准备。GPU会指示帧缓存已经可以被显示并更换要读取的帧缓存,以便进行扫描输出。如果启用了垂直同步,帧缓存中的这一“翻转”操作将因为必须等待显示器的垂直同步信号而暂停。准备就绪后,GPU 会根据显示器的刷新率 (Hz),逐行将下一帧画面送入显示器。鉴于扫描输出是刷新率函数,我们将其包含在“显示延迟”中。
  • 显示处理 – 显示处理是指显示器处理传入帧(扫描线)和发起像素响应所需的时间。
  • 像素响应 – 这是指像素从一种颜色变为下一种颜色所需的时间。由于像素是真正的液晶,因此需要时间进行更改。像素响应时间可能取决于所需更改的强度,也将取决于面板技术。

受 GPU 限制的延迟管线

现在我们已了解点击操作是如何传入屏幕的,接下来让我们深入了解一下性能。分析游戏时,我们通常会尝试将性能定性为受 GPU 或 CPU 限制。这对于了解系统性能非常有帮助,但在现实世界中,游戏通常会在这两种状态中来回切换。

让我们从垂直同步关闭时,受 GPU 限制的情况入手。

在此示例中,我们将管线简化为 5 个主要阶段:外设、CPU、渲染队列、GPU 和显示器。

我们来检查第 4 帧,并查看每个阶段的进展情况:

  • 外设 – 鼠标输入或键盘输入可以随时启动;具体取决于用户。在此示例中,由于在 CPU 准备好接受输入之前鼠标便被点击,因此输入事件只能等待。这就像到达火车站后,等待下一辆火车一样。
  • CPU – CPU(模拟)通常在所谓的呈现块结束之后开始启动。在受 GPU 限制的情况下,CPU 会更快地执行作业,这表示它可以先于 GPU 运行。但是,在大多数图形 API(DX11、DX12、Vulkan 等)中,CPU 渲染提交线程可以提前运行的帧数有限。在上述情况下,可以让 CPU 提前运行两帧。当驱动向 GPU 提交完作业后,CPU 阶段便会结束。实际上,渲染队列存在重叠,但我们将在后面进行讨论。
  • 渲染队列 – 不妨像其他队列一样思考该队列。先进先出,第一个进入的队列就是第一个出来的队列。如果当 CPU 提交更多作业时,GPU 还在处理上一帧,则 CPU 会将渲染作业放入渲染队列中。此队列有助于确保 GPU 不断获得馈送,并帮助平滑帧时间,但这会增加大量延迟。
  • GPU – 这是帧的实际 GPU 渲染。在受 GPU 限制的情况下,作业一个接一个进行,因为 GPU 是瓶颈部分。
  • 显示 – 在此阶段,垂直同步处于关闭状态。当 GPU 完成渲染后,它会立即扫描新缓冲区,而不管显示器处在扫描流程中的哪个阶段。这会导致画面撕裂,但因为它可提供更低的延迟,所以经常受到玩家的青睐。未来我们还将发布有关垂直同步和 G-SYNC 的文章,敬请关注。

好的,现在我们了解了本部分涉及哪些内容,我们可以发现我们因 GPU 瓶颈而停滞,从而导致渲染队列堆积,并导致 CPU 提前运行。在上图中,我们可以看出我们的帧时间是指测量 FPS 的方式。在这种情况下,更快的 GPU 会产生更高的帧率。

此外,我们还可以看到从首次点击鼠标到显示阶段完成的系统延迟。在受 GPU 限制的情况下,由于渲染队列的原因,延迟通常较高,并且游戏先于呈现块运行,并生成会在提交时延迟的新帧

NVIDIA Reflex SDK 延迟管线

下面,我们来看看 NVIDIA Reflex SDK 对受 GPU 限制的管线的影响:

正如您所看到的,渲染队列几乎消失。不过,Reflex SDK 不会禁用它,而只是将其清空。但这是如何运作的呢?

从本质上说,游戏可以更好地控制 CPU 的运行速度,使其无法提前运行。此外,它允许及时向 GPU 提交作业,让 GPU 能够在作业管线中无任何空闲间隙的情况下处理作业。而且,通过将 CPU 作业开始时间略微延后,它为尽可能采样到最后一毫秒的输入创造了机会,从而进一步降低了延迟。

此外,在通过 SDK 采用的方法减少渲染队列中的作业时,游戏延迟也会开始降低。这源自于在 GPU 受限的场景中由渲染队列带来的背压降低。

对于先前已经针对延迟实施了优化的用户来说,这就像是使用优秀的游戏中帧率限制工具来减少延迟一样。优秀的游戏中帧率限制工具会使游戏在合理的位置停止,从而降低延迟和 CPU 反压。

但是,使用 NVIDIA Reflex,您不必将帧率锁定为固定值,而是可以按照超越限制的速度运行,从而进一步降低延迟。您可以将其视为一种“动态”帧率限制工具,能始终为您保证最理想的延迟。

受 CPU 限制的延迟管线

在受 GPU 限制的情况下使用 Reflex 低延迟模式时,即使 GPU 保持工作量完全饱和并且得到充分利用,管线的行为也会表现得如同受 CPU 限制一样。让我们看看受 CPU 限制的实际管线是怎样的。

正如您在此图表中所看到的,帧率受 CPU 限制。由于 CPU 无法在 GPU 之前运行,因此在本例中并没有渲染队列。通常,与受 GPU 限制的情况相比,受 CPU 限制时的延迟较低。

在这种情况下,速度更快的 GPU 并不能提高 FPS,但可以降低您的延迟。关闭垂直同步或启用 G-SYNC 时,速度更快的 GPU 意味着可以更快地将经渲染的图像发送到显示器。

您或许也曾好奇,为什么在调低设置后,游戏的响应速度似乎加快了,这就是原因所在。调低设置往往会形成受 CPU 限制的情景(消除队列),同时缩短 GPU 渲染时间,从而进一步降低延迟。

借助 Reflex 低延迟模式,游戏玩家无需再将调低设置作为一种默认做法。由于我们可以有效地缩短渲染队列,因此额外的渲染作业只会延长 GPU 渲染时间。

此外,即使您受 CPU 限制,Reflex 低延迟模式还具有“加速”设置,该设置会禁用省电功能,从而略微减少延迟。在受 CPU 限制、GPU 利用率较低的情况下,GPU 时钟将保持较高频率以加快处理速度,从而可以将帧尽快传递到显示器。通常,这种加速设置能带来的好处并不大,但有助于尽可能降低管线中每一毫秒的延迟。

深入探究 PC 延迟和重叠

准备好更深入地探究了吗?我们来观察一个帧,不过这次要观察拥有完全重叠的管线。

如您所见,大多数重叠发生在模拟和 GPU 渲染完成之间的 PC 延迟核心部分。为什么会出现这种情况呢?

帧通过称为 drawcall 的小作业进行渲染。这些调用最终会分组到作业包中。随后,作业包会被显卡驱动发送到 GPU 进行渲染。这样一来,每个阶段都会在上一阶段完成之前开始工作,从而将帧分成多个小块。

作业通过管线完成处理,最终写入帧缓冲区。这种操作会一直持续,直至帧完全渲染。渲染完成后,后置缓冲区会与交换链中的另一个可用缓冲区交换,并发送以进行扫描。

在研究渲染延迟和游戏延迟时,了解这一点非常重要。通常,游戏延迟和渲染延迟会彼此重叠,这意味着简单的相加没法得出正确的总延迟。

总结

系统延迟既是游戏体验的定量衡量指标,也是影响游戏玩家在第一人称射击游戏中瞄准精度的关键要素。NVIDIA Reflex 让开发者和玩家能够针对系统延迟进行优化,并率先使之轻松地测量系统延迟。

总之,NVIDIA Reflex 提供了一整套延迟技术:

  • 低延迟技术:
    • NVIDIA Reflex SDK – 开发者 SDK,用于启用 NVIDIA Reflex 低延迟模式,从而在 GPU 密集型场景中降低延迟
    • 延迟优化的驱动控制面板设置 – 增强的“首选最高性能”模式和“超低延迟”模式
    • GeForce Experience 性能优化 – 一键式 GPU 超频自动优化工具
  • 延迟测量工具:
    • NVIDIA Reflex SDK 指标 – 游戏和渲染延迟标记使开发者能够在游戏中显示延迟指标
    • NVIDIA Reflex 延迟分析器 – 360Hz G-SYNC 显示器的新功能率先实现了完整的端到端的系统延迟测量
    • GeForce Experience 性能监控 – 提供侧栏和游戏中叠加显示,可显示包括延迟在内的实时性能指标

我们非常高兴地推出 NVIDIA Reflex,帮助您获得响应更加迅捷的游戏体验。在 NVIDIA,我们高度专注降低延迟,并将会继续不断完善 NVIDIA Reflex,发展壮大我们的合作伙伴生态系统。

我们很乐意听取您的反馈意见!请访问 Reflex 社区论坛,探讨延迟相关话题,或者提出有关 NVIDIA Reflex 平台的问题。

9 月 17 日发布的 Game Ready 驱动将提供对 NVIDIA Reflex 低延迟模式的驱动支持,也有多家合作伙伴将在今年不同时间为其游戏作品增加相关游戏支持。从今年秋季起,宏碁、华硕、戴尔和 MSI 将推出 360Hz G-SYNC 游戏显示器