隆重介紹 NVIDIA Reflex:可在競技遊戲中最佳化和測量延遲的技術組合

Seth Schneider 發表於 2020年9月1日 | Featured Stories FramesWinGames GeForce RTX GPUs Guides NVIDIA Reflex

現今有 73% 的 GeForce 玩家在遊玩多人競技遊戲,也就是電競。最受矚目的電競《英雄聯盟 (League of Legends) 》在 2019 年的冠軍賽吸引了 1 億多名觀眾,超過去年的 NFL 超級盃。電競在觀眾數量和遊戲時間上都與傳統體育賽事不相上下,而玩家為了能夠發揮最佳遊戲表現,比以往更注重 PC 和顯示卡硬體的調整。這就是為什麼 NVIDIA 在幾年前投資了由 NVIDIA 研究團隊科學家所組成的電競實驗室,致力於瞭解電競中的玩家和硬體效能。今天,我們很高興能與你分享此項研究的第一個重大成果。

除了我們全新的 GeForce RTX 30 系列 GPU,我們也要發表 NVIDIA Reflex,革命性的系列組合涵蓋 GPU、G-SYNC 顯示器,以及可在競技遊戲中測量並降低系統延遲的軟體技術 (即為從按下按鈕到顯示器的延遲時間) 。降低系統延遲對於競技遊戲的玩家來說至關重要,因為 PC 和顯示器能因此更迅速地回應使用者的滑鼠和鍵盤輸入,讓玩家能更快地掌握敵人位置,並更精準地射擊。

 

NVIDIA Reflex 具備兩種主要全新技術:

NVIDIA Reflex SDK:一套讓遊戲開發人員能夠降低和測量渲染延遲的全新系列 API。Reflex 低延遲模式可與遊戲直接整合,與遊戲引擎密切合作,藉以即時完成渲染、消除 GPU 渲染佇列,並降低 CPU 的背壓。此模式所降低的延遲超越現有僅限驅動程式的技術 (如 NVIDIA 超低延遲模式)。

Reflex 低延遲模式即將在熱門競技遊戲上推出,包括《Apex 英雄》《決勝時刻:黑色行動冷戰》《決勝時刻: 現代戰爭 - 現代戰域 (Call of Duty: Modern Warfare - Warzone) 》《天命 2 (Destiny 2) 》《要塞英雄》及《特戰英豪》,且將支援在 GeForce GTX 900 和更高階的 NVIDIA 顯示卡上,改善需耗費大量 GPU 效能的遊戲場景延遲。

NVIDIA Reflex 延遲分析工具:一款革命性的系統延遲測量工具,整合了 Acer、ASUS、MSI 和 Dell 的全新 360Hz G-SYNC 電競顯示器,並由 ASUS、Logitech 和 Razer 的頂尖電競週邊設備支援。

Reflex 延遲分析工具可偵測從滑鼠的點擊,並測量在畫面上呈現像素變化 (如槍口火光) 所需的時間。在這之前,玩家幾乎不可能完成這種類型的測量,因為會需要花費超過 7000 美元購買專用的高速攝影機和裝備。

 

過去玩家必須根據每秒顯示畫面數 (FPS) 等輸送量指標猜測系統的反應速度,但現在使用 Reflex 延遲分析工具就能夠更完整且更準確地瞭解滑鼠、PC 和顯示器的效能。現在競技遊戲玩家只要透過 Reflex 延遲分析工具,就能確認他們的系統是否正常運作,可以滿懷自信地準備開戰。

 

請準備好透過這篇文章,和我們一起深入瞭解系統延遲及 NVIDIA Reflex 技術吧!

延遲到底是什麼?

延遲是一種時間的測量方法,描述想做出的動作與預期結果之間的延遲時間。當我們使用信用卡在線上或在雜貨店消費時,確認購買所需的延遲時間就是延遲。

玩家主要會經歷兩種延遲:系統延遲網路延遲

網路延遲是遊戲用戶端和多人伺服器之間的往返延遲,另一個更常見的說法是「ping」。

 

這種延遲對於我們的遊戲體驗,會依據遊戲網路程式碼處理網路延遲的方式,而有幾種不同的影響。以下是一些案例:

  • 延遲的命中確認,例如你的射擊命中後,需要過一段時間才會獲得擊殺確認。這可能會導致彈藥的浪費,或在轉移到下一個目標時延遲瞄準。
  • 與遊戲世界中物件的延遲互動,例如開門或打開戰利品寶箱。
  • 延遲的對手位置,造成「探頭者優勢 (peeker’s advantage)」(稍後將會詳細介紹)
 

請注意,網路延遲與網路不穩定問題 (如封包遺失和封包失序) 並不相同。網路不穩定可能會造成拉橡皮筋 (rubberbanding) 機制,或不同步等問題。拉橡皮筋 (rubberbanding) 機制是當你在遊戲中移動時,卻重設回你幾秒鐘前的位置。就像橡皮筋一樣,你回彈到先前伺服器所見的位置。不同步則是當你遺失資料包時,會導致網路斷斷續續。看起來就像是敵人暫停了一秒鐘,然後才往前傳送至正確的位置。這兩個常見問題都不是網路延遲問題,但經常會在封包需要長程傳送時發生,因此會與高度延遲有關。

系統延遲是滑鼠或鍵盤動作到顯示器上產生像素變化之間的延遲,如槍口火光或角色移動。也稱為從按下按鈕到顯示器的延遲時間,或端對端系統延遲。這種延遲與遊戲伺服器無關,只與你的週邊設備、PC 和顯示器有關。

 

這種延遲會在不同方面影響遊戲體驗。以下是一些案例:

  • 延遲的反應速度,例如當你移動滑鼠時,在螢幕上的瞄準卻發生延遲。
  • 延遲的射擊,例如在你射擊之後,彈孔圖案、曳光彈及武器後坐力的產生晚於實際滑鼠點擊的時間。
  • 對手位置的延遲,稱為「探頭者優勢 (peeker’s advantage)」。(是的,「探頭者優勢」也會受到系統延遲的影響!)
 

概要來看,系統延遲有三個主要階段:週邊設備 (如滑鼠)、PC 和顯示器。遺憾的是,這種延遲很難描述,因為「input latency」或「input lag」這兩種輸入延遲的術語是用於描述不同部分的系統延遲。

舉例來說,關於滑鼠處理點擊需要花多少時間,你可以在滑鼠的盒子上找到「輸入延遲 (input Latency)」。你也可以在顯示器的盒子上找到這個術語,告訴你顯示器處理畫面所需的時間。這個術語也會在遊戲和軟體工具中出現,告訴你遊戲處理輸入所需的時間。如果全部都稱為「輸入延遲」,那麼這個術語指的是什麼?

端對端系統延遲

讓我們花點時間深入瞭解,並定義一些比「輸入延遲(Input lag)」更準確的術語:

  • 週邊設備延遲輸入裝置處理機械輸入,並將輸入事件傳送至 PC 所需的時間
  • 遊戲延遲CPU 處理輸入或更改世界,並將新畫面提交給 GPU 進行渲染所需的時間
  • 渲染延遲從畫面排列好等待渲染,到 GPU 完全渲染畫面所需的時間
  • PC 延遲畫面傳送至 PC 所需的時間。包括遊戲和渲染延遲
  • 顯示器延遲GPU 完成渲染畫面後,至顯示器呈現出新影像所需的時間
  • 系統延遲包含整個端對端測量的時間 (從周邊設備延遲到顯示器延遲結束)。

這些概要定義雖然缺乏了部分細節描述,不過卻提供了良好的基礎,讓我們能夠有效率地討論延遲。我們稍後也會在文章中深入探討每個階段,所以如果你想要瞭解更多技術上的資訊,請跳至「進階」部分。

FPS 和系統延遲有什麼差別?

一般而言,FPS 越高,系統延遲就越低,但是兩者之間的相互關係並不是一對一的對應關係。為了更瞭解透徹,讓我們退一步思考可以如何測量我們與 PC 之間的互動性。第一種方式是透過顯示器每秒可以顯示的畫面數量,也就是一種稱為 FPS (每秒顯示畫面數) 的輸送量速率。第二種方式是我們的動作在其中一個畫面中反應出來所需的時間,而這個時間就稱為系統延遲。

如果我們擁有能渲染 1000 FPS 的 PC,但我們的輸入送達顯示器卻需要一秒鐘的時間,這就會是差勁的體驗。反之,如果我們的動作可以立即反應,但畫面播放速率是 5 FPS,也不會是優良的體驗。

那麼,哪個方面比較重要呢?我們在一年多前開始研究這個問題,而結果十分有趣。我們在 SIGGRAPH Asia 發表了完整的研究,不過簡而言之,以受試者在瞄準訓練工具中完成瞄準任務的能力來說,我們發現與顯示器上呈現的畫面播放速率相比,系統延遲有著更重大的影響。但其中的原因是什麼呢?

系統延遲為何重要?

讓我們看看真實遊戲中的案例,再來回答這個問題:

 

首先,讓我們來看看「傷害同步率 (hit registration)」。「傷害同步率」是一種玩家用語,指的是遊戲同步他們命中其他玩家的準確程度。當我們「相信」自己有命中目標時,我們通常會責怪傷害同步率。我們都遇過這種事。但真的是傷害同步率的問題嗎?

 

在上面的射擊中,滑鼠按鈕是在十字線在目標上時按下,但卻仍然沒有命中。因為系統延遲,且對手正在移動,遊戲引擎會認定你的十字線位置實際上是在目標後方。事實上,你在顯示器上看到的畫面落後於遊戲引擎目前的狀態。這單純是因為 PC 在處理資訊、渲染畫面到呈現在顯示器上,會需要一段時間。在遊戲中,每一毫秒都很重要,多出 30-40 毫秒的延遲可能就會錯失遊戲的勝利旗幟。

第二,讓我們來介紹「探頭者優勢」。簡單來說,在競技遊戲中,你通常會在具備極致的角度優勢時 (當你比對手更遠離轉角時),抓好角度等待機會,藉以抵消稱為「探頭者優勢」的線上遊戲特徵。

探頭者優勢可讓攻擊者在有玩家待命的轉角附近探頭時,獲得毫秒之差的優勢。因為攻擊方玩家的位置資訊需要時間才能透過網路傳到防守方,所以攻擊方玩家會具備先天優勢。為了抵消這項優勢,玩家會在轉角「來回探頭 (jiggle peek)」,也就是快速探頭後再躲回轉角,讓玩家可以在被看到之前就先看見敵人,獲得毫秒之差的優勢。這種現象通常被視為遊戲網路程式碼或網路延遲的特徵。然而,系統延遲對於探頭者優勢而言非常重要。

 

正如在上面的截圖中,兩位玩家與轉角的距離相同,且網路延遲是一樣的。唯一不同之處是他們的系統延遲。

與傷害同步率的道理相似,在較高的系統延遲中,你看見的世界是延遲的,因此在你看見目標之前,就會先被目標看見。如果你的系統延遲比對手低出許多,就有可能完全消除探頭者優勢。在這種情況下,遊戲網路仍會有影響,但一般而言,較低的系統延遲不僅有助於削弱防禦方的探頭者優勢,亦有利於攻擊。

最後,讓我們來探討瞄準精準度。尤其是快速射擊。在《絕對武力:全球攻勢 (CS:GO) 》《特戰英豪 (Valorant) 》等競技遊戲中,快速射擊可能是你能做的所有訓練中最重要的。你必須在毫秒之間掌握目標位置、快速射擊,並以毫秒計算的驚人精準度命中。但你是否覺得不論怎麼做,射擊都無法一致呢?

 

瞄準目標涉及一系列子動作和潛意識的修正,取決於十字線相對於目標位置的目前位置。在較高延遲時,這項回饋迴圈時間就會增加,導致精準度變低。此外,在高於平均延遲時,延遲會有更多的變化,表示你的身體會更難預測和調整。最終結果相當清楚:在高延遲中精準度會變低。

這就讓我們得出前面提到的研究結果。在下方的圖表中,你可以看到在測量快速射擊的精準度時,較低延遲會有較大的影響。

                             

在競技遊戲中,較高的 FPS 和更新率 (Hz) 可降低延遲,讓你的輸入更有機會出現在畫面上。就算只降低一點延遲,也會對快速射擊效能產生影響。在我們最新的電競研究部落格中,NVIDIA 研究團隊探索了不同程度的系統延遲會如何影響玩家的表現。

NVIDIA 研究團隊發現,即使系統延遲只是 12 毫秒和 20 毫秒間的細微差異,也會在瞄準效能上產生顯著的不同。事實上,在 12 毫秒與 20 毫秒的 PC 上完成瞄準工作的平均差異 (掌握目標位置到射擊所需的時間) 為 182 毫秒,大約是系統延遲差異的 22 倍。正確來說,在 12 毫秒的 PC 設定上,你在 128 tick 的《特戰英豪》《絕對武力:全球攻勢》伺服器中的射擊,平均會早 23 tick 命中目標。但大多數玩家都在系統延遲 50 至 100 毫秒的系統上玩遊戲!

那麼這真的可以讓你在遊戲中更成功嗎?要成為競技射擊遊戲中的高手,需要的不僅僅是機械技巧。在遊戲中的敏銳度和經驗豐富的戰術可以幫助你大獲全勝,或是在劣勢中力挽狂瀾取得勝利。不過,檢視我們《絕地求生 (PUBG) 》《要塞英雄》的資料後,可以發現較高的 FPS (較低延遲) 與 K/D 比 (擊殺數/死亡數比) 之間有類似的相互關係。

相互關係並不等於因果關係。但是將上述科學應用於此相互關係後,我們發現許多證據都支持較高 FPS 和較低系統延遲可以更頻繁地成功射擊,進而增加 K/D 比。

利用 NVIDIA Reflex 降低系統延遲

我們藉由推出 NVIDIA Reflex,利用 SDK 與驅動程式最佳化的結合,將延遲渲染管道的各個方面最佳化。其中有些技術可以大量節省延遲,而其他技術則會依情況不同而有較輕微的改善。無論如何,NVIDIA Reflex 就是我們承諾提供玩家和開發人員最佳化系統延遲的工具。

NVIDIA Reflex SDK

Reflex SDK 讓遊戲開發人員可以執行低延遲模式,與遊戲引擎密切合作,進而即時完成渲染、消除 GPU 渲染佇列,並在 GPU 密集型的場景中降低 CPU 的背壓。

在上面的影像中,我們可以看到佇列中充滿了畫面。CPU 處理畫面的速度比 GPU 渲染畫面更快,造成備份也因此增加渲染延遲。Reflex SDK 與驅動程式中的超低延遲模式有些相似之處,但是 Reflex SDK 可以直接整合到遊戲中,讓我們能夠控制 CPU 從渲染佇列和其他管道中後期階段接收的背壓。在超低延遲模式中,驅動程式的控制幅度相較更低。雖然超低延遲模式經常能降低渲染佇列,但無法消除遊戲和 CPU 端增加的背壓。因此,整體而言,採用 Reflex SDK 的延遲會比驅動程式中的超低延遲模式更有優勢。

當開發人員整合 Reflex SDK 時,可以透過動態調整渲染工作提交至 GPU 的時間,進而有效率地延遲輸入和遊戲模擬的取樣,便能即時處理渲染工作。

此外,SDK 還提供了名為「低延遲提升」的功能。此功能可覆寫 GPU 中的省電功能,讓 GPU 時脈在處於高度 CPU-Bound 的情況下仍能保持高效能。即使遊戲是 CPU-Bound,渲染的時間變長,就會增加延遲。將時脈保持在高效能會大幅增加耗電量,但當 GPU 的利用率大幅降低,且 CPU 可以大批提交最終渲染工作時,則可以稍微降低延遲。請注意,如果不想增加耗電量,你可以使用 Reflex 低延遲模式,但不啟用提升功能。

競技射擊遊戲玩家會在 GPU 與 CPU 限制的情況之間動態調整。如果有多個粒子發生爆炸,而且遊戲成為 GPU-Bound,Reflex SDK 不會讓 GPU 以佇列形式等待工作,藉以保持低延遲。如果渲染很簡單,而且遊戲是 CPU 密集型,Reflex SDK 會維持高 GPU 時脈頻率,藉以保持低延遲。不論渲染管道的狀態如何,Reflex SDK 都可以聰明地降低原先設定的渲染延遲。透過 Reflex SDK,玩家可以將渲染延遲保持在最佳狀態,且不需要將所有設定都調低。

在 Reflex SDK 發布時,下列遊戲計畫在 2020 年 9 月 17 日,使用我們的新一代 Game Ready 驅動程式來支援 NVIDIA Reflex:《Apex 英雄》《要塞英雄》及《特戰英豪》。此外,下列遊戲已宣佈支援即將推出的 NVIDIA Reflex:《決勝時刻:黑色行動冷戰》《決勝時刻:現代戰域 (Call of Duty: Warzone) 》《Cuisine Royale》《天命 2》、《Enlisted》《雷擊劍鬥 (Mordhau) 》

NVIDIA Reflex SDK 可完全支援從 2014 年 GeForce GTX 900 系列產品的 GPU到至今。然而,GeForce RTX 30 系列 GPU 的低延遲提升會維持稍高的時脈速率,藉以進一步降低延遲。

如果你真的想深入瞭解 SDK 如何運作,我們會在 [進階] 部分更詳細地介紹渲染管道、CPU/GPU-Bound,以及降低延遲的方式。

The NVIDIA Reflex SDK supports GPUs all the way back to 2014’s GeForce GTX 900 Series products. However, the Low Latency Boost on GeForce RTX 30 Series GPUs will maintain a slightly higher clock rate to further reduce latency.

For those of you who really want to dig into how the SDK works, we will cover the rendering pipeline, CPU/GPU-boundedness, and how latency is reduced in more detail in the advanced section.

針對延遲而強化的控制面板選項

超低延遲模式

如果遊戲不支援 Reflex SDK,你還是可以從 NVIDIA 控制面板啟用 NVIDIA 超低延遲模式,就能獲得部分的延遲改善。只需打開控制面板並前往 [Manage 3D Settings] (管理 3D 設定),再到 [Low Latency Mode] (低延遲模式),選擇 [Ultra] (超低) 選項即可。如本文前面所述,這會有助於降低渲染延遲,但不需要完全控制管道。

如果遊戲支援 NVIDIA Reflex 低延遲模式,我們建議在驅動程式中使用低延遲模式,而非超低延遲模式。然而,如果你啟用了兩種模式,Reflex 低延遲模式會自動取得較高的優先順序。

偏好最高效能

NVIDIA 顯示卡驅動程式搭載稱為「電源管理模式」的選項已久。此選項讓玩家可以選擇 GPU 在 CPU-Bound 場景中的運作方式。當 GPU 工作達飽和時,它也可以持續以最高效能執行。然而,當 GPU 工作未達飽和時,在維持 FPS 的情況下降低 GPU 時脈,就有機會能夠省電。

偏好最高效能模式與 Reflex SDK 中的低延遲提升功能相似,可以代替 GPU 中的省電功能,並讓 GPU 能夠持續以更高的時脈執行。如果提升電源功耗,這些較高的時脈就可以降低 CPU-Bound 執行個體中的延遲。此模式專為不論電源情況,都要從管線中減少每一微秒延遲的玩家所設計。

透過 GeForce RTX 30 系列 GPU,我們可以將此時脈值設定得比以往高,讓 GPU 能在 CPU-Bound 時,也能以達成絕對最低的渲染延遲為目標。使用舊版 GPU 的使用者仍然可以開啟偏好最高效能,並將時脈保持在基礎頻率。

GeForce Experience 中的自動調整

全新的 GeForce Experience 更新於 9 月 17 日推出後,在遊戲迷你窗的效能面板中會提供一項全新的 Beta 功能,讓玩家只要按一下就能調整 GPU 以達到較低的渲染延遲。

這款進階自動調諧器會掃描你的 GPU,藉以瞭解曲線上每個電壓點的最大頻率瞬變。在調諧器發現問題並為你的 GPU 套用理想的設定後,也能重複測試並隨時間維持調整,讓你的調整達到穩定狀態。

請密切關注 GeForce.com 以瞭解進一步的詳細資訊,以及如何使用這項令人振奮的新功能。

利用 NVIDIA Reflex 測量系統延遲

系統延遲未受到廣泛談論的主要原因之一是以往要準確地測量非常困難。為了測量延遲,你的測量裝置必須能夠準確瞭解測量開始和結束的時間。

以往只有使用昂貴且操作繁瑣的高速攝影機、工程裝置、修改過的滑鼠,以及可以在滑鼠按鈕按下時進行追蹤的 LED,才能測量系統延遲。使用 1000 FPS 的高速相機可以測量最低 1 毫秒的延遲。然而,要達成這種設定,最低階的設備也約要 7000 美元起。就算設定完成了,每次測量都需要大約 3 分鐘的時間,所以 99.9% 的玩家都會因此卻步。

NVIDIA Reflex 延遲分析工具

今年秋天推出的 360Hz G-SYNC 相容顯示器配有一項全新功能:NVIDIA Reflex 延遲分析工具。這項革命性的新功能讓玩家能夠測量系統的反應速度,因此可以在開戰前徹底瞭解 PC 的效能並進行微調。

 

如果要存取此功能,只要將滑鼠安裝至 360Hz G-SYNC 顯示器上的指定 Reflex 延遲分析工具 USB 連接埠即可。顯示器的 Reflex USB 連接埠能以簡易的方式直接存取監視滑鼠點擊的 PC,且不會增加任何延遲。

Reflex 延遲分析工具的運作方式是偵測滑鼠的點擊,並測量螢幕上產生像素變化 (如槍口火光) 所需的時間,藉以提供你完整的系統延遲測量值。

GeForce Experience 的全新效能監控工具能即時回報延遲指標。如果要查看延遲指標,請至「效能監控工具」選項,並啟用即將在 9 月推出的「延遲指標」設定。

NVIDIA Reflex 延遲分析工具會將系統延遲的測量值分為滑鼠延遲、PC + 顯示器延遲和系統延遲。

你可以使用搭載 Reflex 延遲分析工具的任何滑鼠來獲得 PC + 顯示器延遲 (藍芽滑鼠除外)。然而,如果你使用與 LogitechRazerASUS 相容的滑鼠,也可以測量週邊設備延遲,並獲得完整的端對端系統延遲。

此外,我們也會發布滑鼠平均延遲的開放式資料庫,如果 GeForce Experience 能夠識別你的滑鼠,就可以參考此資料庫。未來,社群將能夠在資料庫中新增滑鼠。未來將會有更多介紹。

在撰寫本文的同時,有三位滑鼠合作夥伴宣布支援 NVIDIA Reflex 延遲分析工具:ASUS、Logitech 和 Razer。請密切關注他們的網站和社群媒體頁面,以獲得 NVIDIA Reflex 延遲分析工具相容性的發布消息。此外,請自今年秋天開始密切關注 ASUS、ACER、Dell 和 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 更新至最新版本,選取 [效能] 功能表,選擇 [延遲指標] 設定,並啟用 [效能監控工具]。

以較低延遲度訓練你的目標

除了延遲測量工具之外,我們與 KovaaK 2.0 的開發人員 The Meta 合作,在未來的用戶端更新中引進全新的 NVIDIA Experiments 模式,藉以協助玩家提升效能並磨練技巧。

你可以從沙箱或訓練工具進入 NVIDIA Experiments 模式。進入 NVIDIA Experiments 模式後,請選擇一種你感興趣的實驗。此外,除了一些可以協助玩家感受到系統高延遲與低延遲之間差異的其他技術,我們也將 NVIDIA Reflex SDK 與 KovaaK 2.0 整合。

參與實驗不僅有助於提升你的精準度,還能為重要的電競研究做出貢獻。我們在 KovaaK 2.0 上與 The Meta 的合作,讓我們能在競技遊戲空間中測試和打破迷思。例如,我們的首次實驗之一是根據競技遊戲玩家在《特戰英豪》中對目標輪廓顏色的爭論,為目標顏色選擇的偏好加入一些科學依據。

其他實驗會進行延遲的不同範圍等測試,同時會提供困難的任務等你完成。

更進一步:系統延遲 (專家模式)

接下來,讓我們再更進一步瞭解背後技術是如何運作的。本節將介紹你的滑鼠點擊實際上如何反應在螢幕上的像素、遊戲和渲染管道的概念、CPU 和 GPU 密集型延遲的影響、渲染管道內的重疊部分,最後是能以視覺呈現系統變化的工具。

逐步說明你的動作如何呈現在顯示器上

你的點擊是如何顯示在顯示器上的?下方的圖表會分解管線的各階段。請注意,雖然這些階段之間有重疊部分,但還是需要以從左至右的順序來進行。

接下來,讓我們分解上方圖表中第二行的每個方塊。請注意,方塊大小不能調整。此外,我們會把重點放在滑鼠以方便描述,但以下一切適用於連接至 PC 的任何 USB 週邊設備。

  • 滑鼠硬體:當滑鼠準備沿電線傳送事件時的第一個電子接觸點。有幾個手式 (如去抖動) 會增加滑鼠按鍵按下的延遲。請注意,去抖動手式很重要,可以在你不想使用滑鼠時避免滑鼠點擊。這些額外的點擊通常稱為雙擊,這是因為去抖動手式太過強化,就會傳送兩次點擊,而不是一次。因此延遲並不是滑鼠效能的唯一關鍵屬性。
  • 滑鼠 USB 硬體:一旦完成去抖動,滑鼠必須等待下一次輪詢,才能沿線送出資料包。這個時間會反應在 USB 硬體中。
  • 滑鼠 USB 軟體:滑鼠 USB 軟體是作業系統和滑鼠驅動程式處理 USB 資料包所需的時間。
  • 取樣:點擊是根據滑鼠的輪詢率進入作業系統,此時則可能需要等待下一次機會才能透過遊戲取樣。這段等待時間稱為取樣延遲。此延遲可能會根據你的 CPU 畫面播放速率而增加或減少。
  • 模擬:遊戲必須不斷更新世界狀態。這項更新通常稱為模擬。模擬包括更新動畫、遊戲狀態和玩家輸入而造成的變化等。模擬會將滑鼠輸入套用至遊戲狀態。
  • 渲染提交:當模擬資料找出在下一個畫面中的放置位置時,就會開始將渲染工作傳送至顯示卡 API 執行階段。執行階段會輪流關閉顯示卡驅動程式的渲染命令。
  • 顯示卡驅動程式:顯示卡驅動程式負責與 GPU 通訊,並傳送命令群組給 GPU。根據顯示卡 API 的不同,驅動程式可能會針對開發人員進行分組,或者可能會由開發人員將渲染工作分組。
  • 渲染佇列:在驅動程式提交要由 GPU 執行的工作後,這項工作便會進入渲染佇列。渲染佇列的設計是透過持續緩衝 GPU 要處理的工作,以保持 GPU 能持續有匯入。這有助於最大化 FPS (輸送量),但會造成延遲。
  • 渲染:GPU 渲染與單一畫面相關的所有工作所需的時間。
  • 組合:根據你的顯示模式 (全螢幕、無邊框、視窗化),作業系統中的桌面視窗管理工具 (DWM) 必須為了特定畫面,提交其他的渲染工作以與桌面的其餘部分組合。這可能會增加延遲。建議保持在獨佔全螢幕模式,以便最小化組合延遲!
  • 掃描輸出:組合完成後,最終的畫面緩衝便會準備就緒,可供顯示。GPU 隨後會發出畫面緩衝已準備好顯示的訊號,並會變更要從掃描輸出讀取的畫面緩衝。如果 VSYNC 已開啟,畫面緩衝中的「翻轉」(flip) 會因為必須等待顯示器的 VSYNC 而停頓。準備就緒後,GPU 會根據顯示器的更新率 (Hz),將下一個畫面逐行匯入顯示器。因為掃描輸出是更新率的功能,我們將其包含在「顯示器延遲」中。
  • 顯示器處理:顯示器處理傳入畫面 (掃描線) 並啟動像素反應所需的時間。
  • 像素反應:像素的顏色變更為另一種所需的時間。由於像素是實際的液態晶體,所以變更需要時間。像素反應時間會依據所需變更的強度而異,而且面板技術也會有所影響。

GPU-Bound 的延遲管道

現在我們瞭解了點擊如何顯示在畫面上,階下來開始深入探討效能。在分析遊戲時,我們經常會嘗試將效能表現分類為 GPU 或 CPU-Bound。這對於瞭解系統效能非常有幫助,但是在實際情況中,遊戲常會來回切換。

讓我們從 VSYNC 關閉的 GPU- Bound 案例開始。

在此範例中,我們會把管道簡化為 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-Bound 的情況下,工作任務持續不斷,而 GPU 是造成瓶頸的原因。
  • 顯示器在這個案例中,VSYNC 是關閉的。當 GPU 完成渲染後,無論顯示器是處於掃描過程的何處,它都會立即掃描輸出新的緩衝區。這就會造成撕裂,但因為它能提供最低的延遲,玩家常常偏好這個選項。請密切關注未來推出的 VSYNC 和 G-SYNC 相關文章。

現在我們瞭解了這裡發生的情況,可以發現 GPU 是造成渲染佇列堆積和 CPU 提前執行的瓶頸。在上方的影像中,我們可以看到畫面速率是我們測量 FPS 的方式。在這種情況下,較快的 GPU 會產生較高的畫面播放速率。

此外,我們也發現系統延遲從滑鼠第一次點擊開始,持續到顯示器完成顯示。在 GPU-Bound 的情況下,延遲通常會較高,因為渲染佇列遊戲在目前區塊之前執行,且會產生延遲提交的新畫面

NVIDIA Reflex SDK 延遲管道

現在,讓我們來看看 NVIDIA Reflex SDK 對 GPU 密集型的管道所造成的影響:

如你所見,渲染佇列幾乎都消失了。但 Reflex SDK 並未停用渲染佇列,而只是將其清空。這是如何運作的?

基本上,遊戲對於 CPU 的執行速度有更佳的控制力,使其無法提前執行。此外,還可以即時提交工作至 GPU,讓 GPU 在 GPU 工作管道中沒有閒置間隔,直接開始工作。如果稍後啟動 CPU 工作,也會提供輸入在最後一毫秒的時間內有取樣的機會,進而降低延遲。

另外,使用 SDK 的方法減少渲染佇列,遊戲延遲也會開始降低。之所以能夠降低,是因為在 GPU-Bound 的場景中渲染佇列造成的背壓減少了。

如果你之前已經針對延遲進行了最佳化,這就像是藉由使用優秀的遊戲畫面播放速率限制器來降低延遲。優秀的遊戲畫面播放速率限制器會讓遊戲延遲保持在適當的位置,藉以降低延遲,並減少 CPU 背壓。

然而,使用 NVIDIA Reflex 時不會被鎖定在特定畫面播放速率,反而可以超越限制更快地執行畫面播放速率,進而降低延遲。你可以將其視為「動態」的畫面播放速率限制器,讓你隨時處於最佳延遲位置。

CPU-Bound 的延遲管道

在 GPU-Bound 的情況下使用 Reflex 低延遲模式時,即使 GPU 保持完全的飽和及使用狀態,管道仍然能以 CPU-Bound的方式運作。讓我們來看看 CPU-Bound的管道實際的樣子。

正如你在此圖表中所見,畫面播放速率受 CPU 限制。由於 CPU 無法提前於 GPU 執行,因此在這種情況下也不會有渲染佇列。一般情況下,處於 CPU-Bound 的延遲狀態比 GPU-Bound 時更低。

在這種情況下,速度較快的 GPU 不會產生任何額外的 FPS,但會降低延遲。當 VSYNC 關閉,或啟用 G SYNC 時,GPU 越快就表示渲染完成的影像可以更快地傳送至顯示器。

如果你曾好奇為什麼降低設定會讓遊戲的反應速度更快,這就是原因所在。降低設定通常可以產生 CPU-Bound 的場景 (消除佇列),並同時減少 GPU 渲染時間,進而降低延遲。

在 Reflex 低延遲模式下,玩家不需要回到預設設定,就能將設定一直下調到底。由於我們可以有效率地減少渲染佇列,所以額外的渲染工作只會增加 GPU 渲染時間。

此外,即使你是 CPU 密集型,Reflex 低延遲模式也有提升設定,可停用省電功能以稍微降低延遲。在 CPU-Bound 的情況下,GPU 使用率較低,GPU 時脈便會保持高效能以加速處理,藉以盡可能快速地將畫面傳送至顯示器。一般情況下,此提升設定會提供非常輕微的改善,但有助於從管線中減少每一微秒的延遲。

深入瞭解 PC 延遲和重疊

準備好更深入瞭解了嗎?讓我們來看看單一畫面,但這次需要查看完全重疊的管道。

如你所見,大多數重疊都發生在模擬和 GPU 渲染完成之間的 PC 延遲的核心中。但是為什麼會有這種情況呢?

畫面會渲染在稱為描繪次數 (drawcalls) 的細小片段工作中。這些次數最終會合成多個工作包。接下來,顯示卡驅動程式會將這些資料包傳送至 GPU 進行渲染。藉由把每個畫面分割成細小片段,每個階段都能在前一階段完成前就開始工作。

隨著工作在整個管道中發揮作用,最後就會寫入畫面緩衝。此過程會持續到畫面完全渲染為止。渲染完成後,背景緩衝會換成交換鏈中的另一個可用緩衝,並傳送以供掃描輸出。

在探討渲染延遲和遊戲延遲時,瞭解這一點很重要。遊戲延遲和渲染延遲經常會重疊,這表示光是將它們相加,並不會產生正確的延遲總和。

結語

系統延遲既是你的遊戲體驗的量化測量標準,也是在第一人稱射擊遊戲中影響玩家精準度的關鍵因素。NVIDIA Reflex 讓開發人員和玩家能夠最佳化系統延遲,也讓他們第一次能夠輕鬆測量系統延遲。

總而言之,NVIDIA Reflex 提供完整的延遲技術套件:

  • 低延遲技術:
    • NVIDIA Reflex SDK:用於啟用 NVIDIA Reflex 低延遲以降低 GPU 密集型場景延遲的開發人員 SDK
    • 延遲最佳化驅動程式控制面板設定:強化「偏好最高效能」模式與「超低延遲」模式
    • GeForce Experience 效能微調:適用於 1-click 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 低延遲模式的驅動程式支援,且合作夥伴都會在他們今年的所有遊戲中加入支援。ACER、ASUS、Dell 和 MSI 的 360Hz G-SYNC 遊戲顯示器會從今年秋天開始推出。