是我,維生素P。
一文看懂技術原理,深入淺出,簡化模型多圖預警。
所有圖均爲古早配方親手製作,如果大家覺得有幫助記得點一個贊 。
先說結論: GSYNC 與 FreeSync 的技術原理,是控制 VBlank 時間,實現可變的刷新率,來適配變化的遊戲渲染速率(幀數),用較小的延遲代價,解決畫面撕裂問題。
想要了解遊戲顯示器中的 GSYNC 與 FreeSync 技術,我們得先要有一點點的前置背景知識。
爲了更好地簡單解釋很多概念,我們先來做一些好玩的簡化模型,首先我們來造一個顯示器。
顯示器刷新畫面
首先,顯示器是一個有很多很多像素點排列組合的而成的面板。我們這裏假設有一個特別特別簡陋的黑白顯示器,只有 4*4 一共16個像素,每個像素點只能展現黑色或者白色。
現在的顯示器一般採用逐行掃描的方式來刷新屏幕畫面,也就是說,這裏的16個格子全黑的時候是一個固定的畫面,當這個畫面要刷新的時候,屏幕是從最上面的左上角開始,從左往後一行行的進行一個個格子的刷新的。
比如說要從下面的畫面1,變成畫面2,刷新的過程是什麼樣的呢?
爲了更好的直觀顯示我們給每個格子標個編號,然後看下具體的16個像素是怎麼刷新的。
先給兩個畫面編號,分別是1開頭和2開頭的數字字母組合。
然後,顯示器就會開始進行逐行掃描。一步步進行畫面的刷新。
這個刷新完整畫面的過程,就是稱之爲1次刷新。
一般常見顯示器1秒可以完成這樣60次的刷新,也就是1秒能夠刷新出60個畫面。
由於我們這個顯示器比較弱,假設它就只能1秒刷新10次,一個刷新率爲10Hz的屏幕。
也就是說,這一個 4*4 的16像素黑白顯示器,完成上面四行掃描刷新+VBlank時間是 0.1 秒。
每0.1秒,顯示器可以完成這16個格子的刷新來顯示出1幀畫面。
顯示器有了我們現在來造顯卡打遊戲。
顯卡渲染生成畫面
假設我們有臺主機,配了一個 RTAK 3090 GPU 的顯卡來渲染遊戲畫面,要玩一個自走蛇的遊戲,遊戲畫面如下所示,蛇從左上角開始出發,走了一段距離。
理想情況下,假如顯卡和顯示器配合的特別好,恰好每0.1秒 RTAK 3090 就運算完成渲染出來一個畫面。那麼,每次渲染出圖的速率,和顯示畫面的速率,恰好達成一致,那麼就可以有一個完美的畫面呈現效果了。
畫面撕裂
但是,實際上我們的遊戲畫面,不可能顯卡運算渲染是如此穩定的。
打遊戲的時候,如果打開幀數軟件,你就會發現,在一些畫面比較簡單的場景下,幀數會很高,意思就是說,這種簡單畫面顯卡很快就渲染出來了,所以1秒能渲染的幀數會很高。
但如果說散熱不好或者是遇到一些特別複雜的光線畫面,這個時候幀數就會降低,也就是說,顯卡渲染的時間要更長了,所以1秒能出的畫面就少了。
比如說,我們的顯卡不太穩定,在渲染某個畫面的時候,突然運算變快了,不用0.1秒,只需要0.05秒,就完全渲染完了,那麼會發生什麼事情呢?
要知道,顯示器顯示畫面的邏輯,是讀取緩衝區數據,和顯卡沒有直接關係。
所以,在顯示器進行逐行掃描到一半的過程的時候,緩衝器數據進行了交換,那麼後續繼續掃描就會把下一個畫面的像素給掃上來。
也就是說,在這個0.1秒逐行掃描的過程中,有接近一半的掃描是在把畫面3的像素刷出來,後面一半多的掃描,是在把畫面4的像素刷出來。
明明這個自走蛇只有3個格子長度,畫面卻出現了4個格子。
一部分是畫面3,一部分是畫面4,畫面2的刷新過程刷出了兩個畫面的部分。
在一個畫面刷新的過程中,這個畫面就被撕裂成了兩個幀畫面的部分進行組合。
還有另外一種情況,那就是渲染時間稍微慢了,是0.15秒,也會剛好撞上刷新到一半的情況。
只要是顯卡的畫面生成速率和顯示器的畫面刷新速率不一致,就會可能出現畫面撕裂。
這,就是,畫面撕裂。
V-Sync 垂直同步
既然問題是在於顯卡渲染速率,比顯示器的讀取速率快了,導致顯示器讀了一半就開始讀下一個畫面。那麼,讓顯卡渲染不要那麼快,不要直接生成畫面塞進去,讓顯卡等一等,等畫面出來完了,再生成下一個畫面,這不就能解決畫面撕裂了嗎?
確實可以,相當於讓顯卡等一等,但是顯卡的渲染速率不是一個穩定的值呀,萬一顯卡等完之後,渲染又變慢了,會發生什麼事情呢?
假如說,顯卡渲染完畫面3之後就開始等,等到顯示器真正把畫面3刷新完了,然後再開始生成畫面4,但好巧不巧,顯卡累了,這次渲染花了0.2秒,於是顯示器等呀等,等了好久終於纔等來了畫面4.
就像上圖的這個流程,顯示器有2幀都是保持在畫面3沒有刷新,這就相當於導致了遊戲畫面的停頓,也就是感覺卡了。
很顯然,爲了保證體驗,顯卡的運算是最好不要等待停頓的,而是一直來輸出畫面比好,這樣能保證畫面儘可能的減少延遲。
既然是說在逐行掃描的過程中有新畫面插入,那麼可不可以反過來,不讓顯卡等顯示器出畫面,而是反過來,讓顯示器等顯卡下一個畫面呢?
AMD 的 FreeSync 與 NVIDIA 的 G-SYNC
當然是可以的。
這就是遊戲顯示器中的 GSYNC 與 FreeSync 技術, 這個技術的核心就是在於對 Vertical Blank 時間的巧妙使用。
最開始時候,我們提到過,顯示器進行逐行掃描刷新畫面之後,會有一個從右下角復位到左上角第一個像素位置的 Vertical Blank 時間,實際上這個時間是非常短的,但是我們可以用一些技術手段,去控制這個時間。
那麼之前我們顯示器逐行掃描4行+VBlank 時間是 0.1秒,現在通過一些技術可以調整VBlank 時間,那麼也就可以改變顯示器的刷新時間間隔,讓它可以做到等顯卡畫面。
還是用之前渲染用了0.15秒例子來看下。
之前畫面撕裂,是因爲顯示器渲染完畫面3之後,又繼續開始刷新,在刷新一半的時候有新畫面進來。
那麼我們可以通過增加 VBlank 時間,讓顯示器刷新完畫面3之後,等一等,等到新畫面來了,再開始下一次刷新。
這種做法雖然也會有一點點延遲,但是會比垂直同步那種一來一回讓顯卡等顯示器的做法更好,沒有畫面撕裂並且較低的卡頓延遲更容易接受。
所以,這就是 GSYNC 與 FreeSync 的技術原理,是控制 VBlank 時間,實現可變的刷新率,來適配變化的遊戲渲染速率(幀數),用較小的延遲代價,解決畫面撕裂問題。
技術原理相同,但是實現的技術方案有所不同。
G-SYNC 方案來自 NVIDIA,是10年前的一項革命性顯示技術(2013年)。
具體又分爲三類:
G-SYNC Compatible: 普通可變刷新率的軟件兼容方案
G-SYNC: 使用 NVIDIA 專用芯片的硬件方案。
G-SYNC Ultimate: G-SYNC + HDR
比較常見多的是G-SYNC Compatible,它和AMD的 Freesync 其實就一回事,都是符合視頻電子標準協會VESA Adaptive-Sync 標準的。不過標註 G-SYNC兼容的顯示器,是歸NVIDIA來做測試認證罷了。
G-SYNC 方案,相比於G-SYNC Compatible多了獨立的硬件芯片,這就導致成本肯定增加,而且在多數場景下,有穩定性,幀數可變範圍,性能等優勢,但是帶來的直接用戶感知不是特別強,所以這類產品目前市場不是特別多,或者說價格來說沒有特別大優勢。
G-SYNC Ultimate,那就是加錢加到夠強,因爲實現HDR的時候,信號會附帶額外的更多信息來處理高對比內容,所以這時候專用芯片倒是排上了用處,可以同時處理HDR信號和G-SYNC控制信號,基本上是萬元高端顯示器上纔會有的了。
與之對應的 FreeSync 技術,則是出自 AMD。
具體又分爲三類:
FreeSync : 普通可變刷新率的軟件兼容方案
FreeSync Premium : FHD不低於120Hz,增加低幀數補償。
FreeSync Premium Pro: FreeSync Premium + HDR
AMD 的 FreeSync 技術是開源的,所以說只需要在軟件層面加入對應驅動代碼就可以支持,G-Sync 的相關顯示器則是需要交錢去拿給NVIDIA做相關的全套測試,測試通過之後獲取認證授權。
沒有獲得G-SYNC Compatible認證的 FreeSync 顯示器都可以手動開啓 G-Sync,只是不保證體驗。
總結
G-SYNC 與 FreeSync 的技術原理,是控制 VBlank 時間,實現可變的刷新率,來適配變化的遊戲渲染速率(幀數),用較小的延遲代價,解決畫面撕裂問題。
G-SYNC 分三類:
- G-SYNC Compatible: 普通可變刷新率的軟件兼容方案
- G-SYNC: 使用 NVIDIA 專用芯片的硬件方案。
- G-SYNC Ultimate: G-SYNC + HDR
FreeSync 分三類:
- FreeSync : 普通可變刷新率的軟件兼容方案
- FreeSync Premium : FHD不低於120Hz,增加低幀數補償。
- FreeSync Premium Pro: FreeSync Premium + HDR
FreeSync 顯示器都可以手動開啓 G-Sync,但 G-SYNC Compatible 有相關測試認證授權可能表現會好一點。
最後,感謝各位看到這裏,一文看懂技術原理,深入淺出的簡化模型多圖,希望能幫助大家理解。
如果大家覺得有幫助,可以點點贊,充個電,歡迎評論區討論。
是我,維生素P
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com