電腦打遊戲畫面撕裂是什麼原因(電腦玩遊戲畫面撕裂是什麼原因)
不知道這個 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(圖片來自官網)