我們在玩遊戲的時候,如果畫面變化太大就容易出現錯位的撕裂現象。之前的文章學弟跟大家說了幀是什麼了,幀其實就是靜态畫面,1s顯示的圖片數量就是幀數。比如1s鐘連續播放了20張靜态畫面,那麼幀數就是20,幀數的縮寫是FPS,20FPS就意味着1秒鐘播放了20張靜态畫面。說到這裡大家應該都比較清楚了,幀數指的是顯卡一秒鐘渲染好并發送給顯示器多少張畫面,而刷新率指的是顯示器逐行掃描畫面的速度,他們兩個不是相同的概念,不要搞混了。
什麼是逐行掃描(刷新率)?
要知道,顯示器播放的畫面并不像PPT一樣,一張一張地閃過去。而是一行一行的進行掃描的,當顯示器收到顯卡傳來的畫面時,會從屏幕的左上角開始一行一行的進行繪制,一直繪制到屏幕的右下角,這就是完整的一幀。然後顯示器會将掃描點從屏幕的右下角移回到屏幕的左上角,掃描點移回的這個過程稱為重置掃描點(Vblank),VBlank的速度就是我們常說的屏幕刷新率啦!120Hz的屏幕那就意味着,這塊屏幕能在1s鐘内進行完整的120次逐行掃描。所以,刷新率越高的屏幕,所能表現出的幀數也就越多,畫面延遲也就越低,這也是很多顯示器筆電廠商在宣傳高刷屏時會說能看到更多畫面的原因。
什麼是幀緩存(Frame Buffer)?
看了前面的内容,應該了解什麼是幀數什麼是刷新率了。幀數是指顯卡每秒鐘繪制的靜态圖像數量,而刷新率則是指顯示器每秒鐘進行完整全畫幅逐行掃描的次數。要想了解GSync和FreeSync到底是什麼,這裡還需要知道一個名詞——幀緩存,也叫Frame Buffer。顯卡在渲染畫面的時候,其性能是固定的,而遊戲場景的複雜程度是不同的,不同畫面對于顯卡本身的運算壓力也不同,這就是你在玩遊戲時遊戲幀率飄忽不定的原因。
而顯示器的刷新率是固定的,165Hz的顯示器就是每隔1/165秒完成一幅畫面的逐行掃描,為了讓輸出幀能夠匹配固定的刷新率,顯卡都會設置幀緩存。基本就是兩個畫面的緩存,一個叫前緩存(FrontBuffer),一個叫後緩存(BackBuffer)。顯卡渲染完一幅圖像之後并不是直接交給顯示器顯示,而是先寫入後緩存。後緩存寫入完畢之後,前緩存會跟後緩存發生交替,後緩存就變成了前緩存,前緩存就變成了後緩存,這就是所謂的幀傳遞(Bufferswap)。
如果顯示器的刷新率和遊戲幀數是匹配的,那麼顯卡與前緩存、後緩存、顯示器配合默契,并不會出現畫面撕裂的情況。
前面學弟說了,顯卡的幀率會因為遊戲畫面的難易程度不同而變化,所以實際上并不是那麼如願進行,顯卡渲染圖片的速度可能會跟顯示器不匹配。假設顯卡的渲染速度比顯示器顯示畫面的速度快,顯示器正在顯示的畫面還沒掃描完,顯卡就已經把下一幅畫面渲染好了,那麼剛剛渲染好的畫面會直接被顯示器逐行掃描顯示,上一幅畫面跟新畫面出現了重疊,就會出現畫面撕裂。
還有另一種情況就是顯卡的渲染速度比顯示器慢,這個時候顯示器顯示畫面的速度要比顯卡快,顯示器逐行掃描完一張圖片之後,下一張圖片顯卡還沒渲染完,顯示器隻能一直重複掃描上一張畫面等待顯卡渲染完新圖片,在重複逐行掃描之前畫面的過程中,顯卡突然将新畫面渲染好了,也會出現畫面撕裂現象。如果顯卡的繪圖速度跟顯示器的刷新率差距比較大,就會出現我們玩遊戲時常說的卡屏現象。
什麼是垂直同步?垂直同步技術
前面鋪墊了那麼多,終于可以說一下這兩項技術了。其實看完前面的鋪墊内容,大家不用看後面的内容也會對GSync技術以及FreeSync技術有所了解了。在GSync技術以及FreeSync技術中間還有一種防撕裂的技術,大家幾乎在所有遊戲中都能看到,叫——垂直同步。
垂直同步會強制幀傳遞發生在顯示器的重置掃描點階段,如果你的顯卡提前畫好了後緩存,此時顯示器并沒有畫完前緩存的畫面,就不允許發生幀傳遞。開啟垂直同步之後的畫面也會被鎖定在你顯示器刷新率的數值,假設你的顯示器刷新率為60Hz,你的顯卡性能足夠的情況下,遊戲幀率就會鎖定在60FPS。如果你的顯卡性能不夠,達不到顯示器刷新率的速度,顯示器為了等顯卡會再次重複逐行掃描一次前緩存,相當于顯示器重複顯示了一次畫面,也就是跳過了一幀,這就相當于降低了屏幕的刷新率,這樣也會出現遊戲畫面不流暢的情況。
自适應垂直同步技術
為了解決上述這一問題,NVIDIA推出了自适應的垂直同步技術,在顯卡繪圖速度高于顯示器刷新率時打開垂直同步。在顯卡繪圖速度低于顯示器刷新率時關閉垂直同步,這樣就能改善因顯卡性能不足導緻的畫面卡頓了。
垂直同步存在一個非常大的弊端——延遲!顯卡畫好畫面之後需要等着顯示器進行逐行掃描,不能立馬更新顯卡繪制的畫面。即使顯卡已經畫完了後緩存裡的圖像,但還要等前緩存畫面掃描完畢才能進行幀傳遞,這就意味着你看到的畫面都是滞後的狀态,所以開啟垂直掃描後,你看到的遊戲畫面都會有一定的延遲。
快速(無阻塞)垂直同步技術還是有辦法解決上述問題的,那就是在前緩存和後緩存之間再加一個緩存——中緩存。雖然能有效地解決上述問題,但顯卡性能跟顯示器刷新率差别很大的情況下延遲還是不能根治!
然後,英偉達又發明了一個技術,叫快速垂直同步,來解決垂直同步與三重緩沖延遲的問題。之前的垂直同步,顯卡畫完中緩存跟後緩存的畫面後就會停下來,等待前緩存掃描完畢再進行幀傳遞。開啟快速垂直同步技術後,顯卡畫完中緩存跟後緩存的畫面後并不會停下來,而是繼續畫後緩存的畫面,後緩存跟中緩存在等待前緩存時會一直進行交換,顯示器也會有一張完整的中緩存來替代前緩存進行幀傳遞,所以也就不會出現畫面撕裂的現象。
當然,這種垂直同步技術也有很大的弊端,那就是顯卡在繪制後緩存時,為了等待前緩存掃描完畢,會有很多的畫面被顯卡複寫後抛棄了,這就導緻兩個幀之前間隔差異會比較大,就會有卡頓感。
自适應顯示器刷新率(VRR)既然垂直同步技術不行,顯卡廠家們都在努力尋求解決方法,以解決畫面撕裂和延遲。然後就有了G Sync和Free Sync技術,其中G Sync技術來自NVDIA,Free Sync技術來自AMD。工作原理就是當顯卡輸出幀低于顯示器刷新率的時候,強制延長Vblank時間,讓顯示器持續顯示上一幀畫面,不進行任何操作,等到顯卡渲染完圖像之後在允許發生幀傳遞,以此來讓顯示器的刷新率動态匹配顯卡輸出幀。稍微有些複雜,可能看不太明白,簡單地說垂直同步是顯卡等顯示器,而GSync和FreeSync則是顯示器等顯卡。
VRR
VRR有三種情況,分别為幀率低于刷新率、幀率接近刷新率、幀率高于刷新率。最理想的狀态是幀率接近刷新率,幀率比刷新率低一點,剛好能讓顯示器延長VBlank時間來解決畫面撕裂,并且這種情況下也不存在畫面延遲。
而當幀率高于刷新率時,120Hz的顯示器VBlack的時間為1/120s,當顯卡繪圖的速度高于這個數值時,顯示器後緩存的畫面會被替換,由于沒有垂直同步的約束,前緩存掃描完就會跟後緩存進行幀傳遞,依舊會出現畫面撕裂現象。這也就是說,不管是G-Sync還是Free-Sync都是隻能解決顯卡幀數低于顯示器刷新率時出現的撕裂現象,并不能解決顯卡幀數高于顯示器刷新率時出現的撕裂現象。
如果幀率低于刷新率很多,那麼顯示器就需要延長VBlank很多時間,以降低刷新率來匹配輸出幀。
G-Sync與Free-Sync的區别
G-Sync與Free-Sync的原理其實是一樣的,他們都是通過延長VBlank的時間來讓幀率匹配刷新率。但它們又有所區别,因為剛開始顯示器是沒有自适應刷新率這一項技術的,顯示器的面闆跟驅動闆設計之初都是不支持自适應刷新率技術的。為了解決畫面撕裂問題,NVDIA就和顯示器廠商合作,在顯示器内部植入一顆獨立的芯片,來完成自适用同步功能。要知道這個芯片以及G-Sync技術都是要收取授權費用的,所以搭載G-SYnc技術的顯示器價格都比較高,再就是G-Sync技術是NVDIA搞出來的,當然隻支持自家的N卡啦。這就意味着你想體驗一下G-Sync技術,還需要搭配NVDIA自家的顯卡才能使用。
而AMD這邊就良心多了,Free-Sync是一個免費的标準,這是DP接口中的一個附加協議,AMD顯卡一直沿用了這個附加協議。由于Free-Sync本身不需要付費授權,也不需要單獨的芯片,隻要你的顯示器面闆和驅動闆支持自适應調節VBlank,就可以使用Free-Sync技術。也就是因為其免費,貓貓狗狗的顯示器廠商都能使用這一技術,這就造成了搭載Free-Sync技術的顯示器質量參差不齊。
而英偉達那邊,不僅需要加裝單獨的控制芯片,顯示器廠商還需要配合英偉達進行相關認證,搭載G-Sync技術的顯示器都是經過NV調校過的,自适應刷新率體驗方面要比Free-Sync好一些。既然Free-Sync免費,老黃也想蹭一下,于是就有了G-Sync認證不帶芯片的顯示器,使用的Free-Sync技術。這種不帶芯片的G-Sync認證顯示器叫G-Sync兼容,帶芯片的顯示器還叫G-Sync,支持HDR的G-Sync顯示器叫G-Sync Ultimate。
總結上文非常系統地說了一下當下為了解決遊戲畫面撕裂,各大廠商的技術。不過當下來看,不管是G-Sync還是Free-Sync還不能完全解決遊戲過程中畫面撕裂的問題,當下選顯示器不需要奔着兩個認證去了。相信不久之後的将來,技術會越來越成熟,顯示器的畫面流暢度也會相當連貫。
,