現(xiàn)在大多數(shù)人對一臺電腦的性能參數(shù),局限于幀率,刷新率。這兩個參數(shù)是以“幀/秒”作為單位的,而以一秒作為一個時間段來研究性能是遠遠不夠的,我們應該精細到一個刷新周期來研究。刷新周期指的是沒有G-sync和Freesync的顯示器,顯示兩個畫面之間的時間,也是垂直同步脈沖信號發(fā)送的周期。
這些性能參數(shù)包括幀率,刷新率,幀生成時間(平均),幀生成時間(最大),幀生成時間曲線穩(wěn)定度(也可以用方差或標準差表示),幀時間穩(wěn)定度,操作延遲,是否撕裂等等。FPS游戲?qū)@些參數(shù)非常敏感。
舉個極端的例子,你看到的幀率有300,然而是0-16ms渲染了299幀,17-1000ms渲染了1幀,你將會感受到明顯的卡頓。
在講性能參數(shù)之前,先說說幀生成流程。
鍵盤鼠標的操作代表你的操作(也叫輸入),它們的刷新率極高,可以認為是連續(xù)的。鍵盤鼠標發(fā)出的數(shù)據(jù)通過南橋(South Bridge,SB)進入CPU。CPU做邏輯運算,將“幀的雛形”(command)通過PCIE x16總線輸出給顯卡,這個過程包括CPU與北橋(內(nèi)存控制器)與內(nèi)存的數(shù)據(jù)交互。也就是說CPU全核性能,CPU部分核心性能,CPU內(nèi)部總線性能,內(nèi)存控制器性能,內(nèi)存性能,都會影響到CPU做出“幀的雛形”的時間長短。
顯卡接收到來自CPU的數(shù)據(jù),會渲染這一幀,然后輸出給“后緩沖區(qū)”,前后幀緩沖區(qū)交換之后,前緩沖區(qū)將渲染好的幀輸出給顯示器,顯示器刷新出這一幅畫面,幀生成完成。
完整的操作延遲指的是,從你鍵盤鼠標的操作時間點起,到顯示器輸出這一幀為止的時間。
當然,實際的幀生成流程不是這么簡單的,因為上面說的流程中,GPU會等CPU,CPU會等GPU,這樣反復互相等待,會造成CPU和GPU都不會滿載,性能無法被完美利用。所以CPU會預渲染幀,這個后面會講。
然后開始講性能參數(shù)。
1.幀率
很多人覺得60hz顯示器,幀率達到60fps以上是沒有意義的。這是很明顯錯誤的觀點。高幀率的意義是更短的操作延遲。
以60hz顯示器為例,其中實心點表示顯卡渲染好的一幀。僅考慮顯卡渲染的時候,下面提到的幀發(fā)生的時間(事件時間,操作時間),都是CPU發(fā)送過來的指令的時間,而不是真實的操作時間,因為CPU有預渲染,這個后面會講。
先看60fps,A幀渲染完成之后,顯卡開始渲染C幀。C幀的幀生成時間就是A-C的時間。A幀會在B畫面顯示,C幀會在D畫面顯示。也就是說,A時刻的事件,最終會在D畫面上顯示。A-D的時間段是操作延遲的一部分,即顯卡產(chǎn)生的操作延遲。
再看300fps,A幀代表的事件是G,在B畫面上顯示。幀生成時間為G-A。顯卡造成的操作延遲為G-B。同理下一個刷新周期,C幀代表的事件是H,在D畫面上顯示。幀生成時間是H-C。顯卡造成的操作延遲為H-D。
很明顯,300fps的操作延遲遠低于60fps。更低的操作延遲意味著你看到畫面的時間距離你操作的時間越短。我們看到的畫面一定是有延遲的,也就是我們一直在通過過去的畫面去預判未來的操作,當然,這個“過去”離“現(xiàn)在”越近,你做出的判斷就越準確。
也可以看到,幀生成時間是不穩(wěn)定的,從而造成你看到的每一個畫面所代表的事件發(fā)生的時間是不均勻的。具體表現(xiàn)就是你以恒定的速度橫拉鼠標,而你的準心在屏幕上滑過的軌跡不是勻速的。
你看到的畫面所代表的事件所發(fā)生的時間,我稱之為幀時間。幀時間均勻程度,或者說是穩(wěn)定度,對拉槍和跟槍有很大影響。
FPS游戲?qū)Σ僮餮舆t,幀生成時間穩(wěn)定度,幀時間穩(wěn)定度要求極高。如果你有反對意見,在CSGO里把垂直同步和三重緩沖同時打開,感受一下超長的操作延遲,就知道這感覺有多么吃屎了。
最后看40fps。40fps意味著有些刷新周期里,顯卡可以渲染出一幀,有些不能。不能的那些周期,顯示器就只能重復上一個畫面。這種時而重復,時而不重復(即60fps和30fps隨機出現(xiàn))的現(xiàn)象,可以被稱為卡頓。如果說FPS游戲最忌諱什么,那一定就是卡頓,沒有之一。其實任何游戲,頻繁出現(xiàn)卡頓,都是對游戲體驗的毀滅性打擊。
2.刷新率
很多人覺得人眼看24hz或60hz就夠用了,這也是很明顯錯誤的觀點。高刷新率的意義是提高流暢度,獲取更多的信息。
以300fps為例,分別是60hz,144hz,240hz的顯示器。ABCDEF分別是顯卡渲染好的幀。
60hz,只能在16ms看到F幀,其事件時間是E(顯卡渲染好一幀,才能開始渲染下一幀,所以前幀(E)的完成時間,就是后幀(F)事件發(fā)生時間。特此解釋一下,怕有人不懂)。
144hz,可以在7ms看到C,可以在14ms看到E。240hz,可以在4.167ms看到B,在8.334ms看到C,在12.5ms看到E,在16ms看到F。
結(jié)果很明顯,更高的刷新率,往往可以看到更多的畫面,流暢度也就更高,獲取的信息也更多。而且,我們甚至可以提前看到對方的動作。例如A時刻敵人從掩體后面拉出來了,60hz顯示器要等16ms才能看到,240hz顯示器只需要等4ms左右??雌饋?40hz很厲害對吧。我前面沒提這個優(yōu)勢的原因是,人類的反應速度一般在200ms左右,16變4這種差別,只有天選之子才能感受到。
3.垂直同步與增強同步
現(xiàn)在很多人覺得FPS游戲不能開垂直同步,這樣操作延遲才低。其實FPS游戲可以開增強同步(A卡),或快速同步(N卡)。
對比不開垂直同步,開啟垂直同步后,只要顯卡渲染好了一幀,就會立即停止渲染,等待顯示器的垂直同步脈沖信號,收到之后,前后緩沖區(qū)交換,把A幀輸出給顯示器。這個技術是為了解決撕裂的,但造成了極高的操作延遲,F(xiàn)PS游戲一定不能開垂直同步。
但是不開垂直同步的話,如果某一幀在刷新時刻后一點點的時間渲染完,顯卡會立即交換前后幀緩沖區(qū)。例如C幀處于前緩沖區(qū),正在輸出給顯示器,還未完成,此時D幀渲染完畢,顯卡突然交換幀緩沖區(qū),把D幀輸出給顯示器,這樣顯示器顯示的這個畫面,包含了一部分C,一部分D,中間間隔的地方就是撕裂。
撕裂的位置一般出現(xiàn)在屏幕中線附近,非常影響對槍,尤其是準心位置撕裂。
增強同步的原理是顯卡始終為后緩沖區(qū)寫入幀,只有收到顯示器垂直同步脈沖信號時,前后幀緩沖區(qū)交換,前緩沖區(qū)最后一個完整幀會輸出給顯示器。這樣以極低操作延遲的代價,解決了撕裂。
FPS游戲始終建議打開增強同步。
20200310修改:增強同步和快速同步的原理是存在3個緩沖區(qū),后緩沖區(qū)被填充完整的一幀后,與中緩沖區(qū)交換。顯示器發(fā)送垂直同步信號后,中與前交換。這樣不管顯示器什么時候發(fā)出垂直同步信號,后和中都可以一直交換,即顯卡可以一直渲染幀,不會有鎖幀效果。中與前交換之后,交換后的前(原來的中)把幀輸出給顯示器,顯示器呈現(xiàn)畫面。這樣就可以保證顯示器顯示的幀是完整的一幀,不會撕裂。如果把后和中都當成后,那么我之前的說法其實沒問題。我后來看了一篇NVIDIA的技術文檔,才知道這個細節(jié)。AMD增強同步大概也是這個原理,如果不是也是近似的,效果是一樣的。
4.Freesync
沒有Freesync和Gsync的電競顯示器就是搞笑的。你想不搞笑,以240hz顯示器為例,你要保持所以幀的幀生成時間都小于1/240s,換句話說就是幀率必須恒大于240fps,而且?guī)蓵r間不能出現(xiàn)過大波動。這不僅僅要求你的CPU,內(nèi)存,顯卡性能要非常高,系統(tǒng)本身也要優(yōu)化的相當好。你有錢買高配,技術強,會優(yōu)化系統(tǒng),只玩csgo,是你贏了,是我搞笑了。
但是你除了csgo,別的都不玩了嗎?有幾個高畫質(zhì)游戲的幀率能穩(wěn)定240以上?不能穩(wěn),就會時而重復,時而不重復,上面說了這叫卡頓。對于240hz顯示器來說,這種卡頓感覺明顯小于60hz的,但依然能感覺到。解決方法就是手動鎖60幀或120幀,但你這個240的錢算是白花了,至少在非csgo的游戲上是白花了。
下面說說freesync有什么用。Gsync原理差不多,由于多了芯片,功能會更全一些,例如低幀率補償?shù)鹊?,想了解的話去NV官網(wǎng)和reddit上查資料吧。
對比144hz和144hz帶freesync。其中B幀和D幀可以在7ms和14ms顯示,兩者是一樣的。但14-21這個刷新周期里,由于cpu或內(nèi)存原因,導致掉幀,顯卡沒能渲染出一幀,而是在22ms時候渲染出一幀。沒有freesync的144,這一幀會在28ms時候顯示,而有freesync的,會在22ms時候顯示。提前了6ms,卡頓感降低了6/(28-14)=43%。
如果E之后又生成了其他幀,則沒有freesync的顯示器,E幀直接丟失,有freesync的會顯示出E幀。
freesync一般會有一個范圍,不同顯示器范圍不一樣。如果主玩fps游戲,右端點一定要達到顯示器最大刷新率,否則意義不大。左端點不是很重要,除非你電腦經(jīng)常白給,掉幀那么厲害。
5.Flip queue
翻轉(zhuǎn)隊列,在N卡控制面板里叫最大預渲染幀數(shù)。這個就是前面提到的,CPU預渲染多少幀。
N卡控制面板里可以手動給游戲設置這個參數(shù),A卡不能。DX下(CSGO和OW都是DX渲染API),該值默認是3,最低是1。程序員可以手動改這個值。CSGO在A卡下是1,N卡不知道,不過N卡可以手動調(diào)成1。OW說法比較多,有說開啟減少緩沖是1,不開是2,也有說開啟是2,不開是3。油管上有一篇測試視頻,感興趣的可以去看看。
那么這個參數(shù)有何用呢?
Flip queue=0。該情況在DX下是不會出現(xiàn)的??梢钥吹皆撉闆r下由Flip queue造成的操作延遲最低,但顯卡和CPU反復互相等待,硬件影響無法完美利用,而且一旦CPU或顯卡不能及時輸出一幀,就會導致掉幀卡頓。
假設CPU處理好一幀的指令需要1ms,顯卡渲染這一幀需要4ms。那么5ms時刻CPU開始渲染B事件,6msCPU處理完畢,10msGPU處理完畢,我們看到畫面。完整操作延遲為10-5=5ms。
Flip queue=1。從0開始先是填充隊列,隊列填充完畢后才是正常渲染流程。以C幀為例,C事件在5ms開始處理,6msCPU處理完畢,13msGPU處理完畢。完整操作延遲為13-5=8ms。
可以看到CPU在GPU開始渲染的時候,會提前渲染1幀,寫入指令緩沖區(qū)。正常情況下,顯卡一直在渲染滯后的幀,所以會引起操作延遲。
之所以叫最大預渲染幀數(shù),是因為如果因為cpu或內(nèi)存掉幀,可能在GPU需要幀的時候,CPU指令緩沖區(qū)不能被寫滿,此時GPU會空載,CPU或內(nèi)存瓶頸的地方會瞬時滿載。
Flip queue=3。CPU指令緩沖區(qū)最多可以有3幀。以D幀為例,D事件發(fā)生在5ms時刻,6msCPU處理完畢,17msGPU處理完畢。完整操作延遲為12ms。如果是144hz顯示器,α是20.8ms,是144hz顯示器的一次刷新時刻,它會顯示D幀,但是D幀是滯后12ms的幀,差不多有144hz顯示器的兩個畫面那么多了。
高Flip queue的好處是即時因為CPU或內(nèi)存瘋狂白給而掉幀,也可能不會出現(xiàn)卡頓,因為GPU可以繼續(xù)渲染指令緩沖區(qū)內(nèi)的幀。
那么Flip queue設置多少比較好呢?
如果你的配置足夠高,設置成1不卡頓,那就設置成1。如果始終是GPU滿載,設置成1。如果CPU多核或單核頻繁滿載,或內(nèi)存帶寬瓶頸,設置成2或3。
簡單來說,這個值越低,操作延遲越低,幀率會略微下降;這個值越高,操作延遲越高,幀率會略微提升,會很大程度改善卡頓問題。
總結(jié)一下。
高幀率意味著更低的操作延遲。
高刷新率意味著更流暢,可以看到更多畫面,獲得更多信息,也可以提前看到事件,可以提前開槍(雖然很不明顯)。
穩(wěn)定的幀生成時間和均勻的幀時間,意味著操作更平滑,更低的頓挫感。
增強同步的意義是以極低的操作延遲解決撕裂。
Freesync的意義是解決掉幀造成的頓挫感。
回答一個問的比較多的問題。144hz顯示器,幀率到不了144fps體驗如何?
如果有freesync或gsync并開啟,體驗完爆60hz顯示器。
如果沒有,會出現(xiàn)時而重復時而不重復的卡頓,體驗較差。如果能穩(wěn)定72幀以上,可以鎖72幀,會解決這種卡頓。
240hz同理,鎖60或120幀。
如果主玩CSGO等FPS游戲,可以買1080p,TN面板,1ms響應,120-240hz,帶GS或FS(取決于你的顯卡)的顯示器。
如果主玩高畫質(zhì)3A大作,可以買1080p或2K,IPS面板,60hz,高色域顯示器。
如果兼顧以上這些,可以買大金剛(2K 144或165 GS IPS)或小金剛(2K 144或165 FS IPS),價格比較貴,而且兩者都不專精。
目前上4K代價極高,如果不是很懂視頻技術和游戲渲染技術,很難獲得高質(zhì)量體驗,所以說這是一個既需要錢,又需要技術的領域,沒兩把刷子不要碰4K。
如果你的配置極高,又有技術優(yōu)化配置,優(yōu)化系統(tǒng),可以保證幀率恒大于240hz且不波動嚴重,可以考慮買卓威240hz。
關于CPU買intel還是amd,顯卡買nvidia還是amd,可以參考我前一篇文章。鑒于最近看到幾篇說N卡縮畫質(zhì)實現(xiàn)高幀數(shù)的貼,我覺得有必要研究一下再做結(jié)論。內(nèi)存的話,玩FPS游戲必須上高頻內(nèi)存,以保證幀生成曲線平穩(wěn)。
因為每個人對畫面的畫質(zhì),流暢度,幀時間均勻程度的敏感性不一樣,所以完全沒必要說你覺得怎么怎么樣。你怎樣感覺你就怎樣用。
聯(lián)系客服