2016年上映的120fps電影《比利·林恩的中場戰事》
幀數是遊戲圈的日常話題,也是最容易引起混亂的話題之一,部分原因是缺少必要的基本知識,另一部分原因是個人評價標準不同,這涉及到審美、閱歷甚至是視力,大家的觀點差異太大,經常是聊到一半就聊不下去了。
個人觀點沒辦法,但是基礎知識還是可以補習的,今天我們就把這個問題談透。
一、30幀的3D遊戲與24幀的電影動畫
關於人類為什麼會將連續播放的靜止圖片看成動態的圖像,目前科學還不能完全解釋清楚,涉及到視覺暫留、似動現象等一大堆科學概念。我們今天不需要研究那麼深,我們要討論的問題很簡單:為什麼同樣的幀數下,電影看上去比遊戲流暢?
因為動態模糊。
電影的本質,是一堆連續播放的照片,而照片有快門時間/曝光時間的概念。電影的一幀,記錄的不是現實的瞬間,而是現實中一段時間內的信息。而遊戲畫面受限於原理,每一張圖像都是絕對的瞬間,相比電影圖像缺失了很多信息。
電影是每秒24張,但電影每張的曝光時間並不是1/24秒,因為膠片捲動和攝影機快門是兩回事。看過一張「索尼影視專業製作樂園」做的教學圖,一般的攝影機,1/200秒快門就已經有明顯的跳躍感了,要保證流暢最好用1/50秒或者說1/48秒的快門,即所謂的180度快門。
話說回來,電影卡不卡要看跟誰比,24幀這個標準太老了,在一些高動態的片子裡已經有明顯的卡頓感,如果遊戲能有240幀,就算不帶動態模糊也能吊打24幀的電影了。好萊塢也認識到了24幀的局限性,所以才會有傑克遜的48幀電影和李安的超高幀電影出現,希望高幀率電影未來有一天能普及吧。
可能有人會問了,皮克斯的3D動畫電影也是24幀,為什麼不卡呢?
因為預渲染3D動畫會模仿電影攝製過程,加入動態模糊的信息,3D動畫的一幀,並不是只包含了一幀的信息。專業3D動畫軟體有非常複雜的算法實現動態模糊,反正人家幾分鐘甚至幾小時才出一幀,有無窮無盡的算力可以浪費。而遊戲中的實時動態模糊特效當然不可能那麼講究,多數僅僅是高斯模糊的變體,這就是為什麼很多遊戲開了動態模糊效果反而讓人覺得卡。
理論上,如果機器算出120幀畫面,然後合成到30幀,那麼30幀的遊戲畫面會有巨大的提升,然而有那功夫把120幀原樣放出來就行了,沒必要脫了褲子放屁。當然,如果顯示設備或者接口受限於60幀的限制,也可以使用幀合成的動態模糊算法,這應該是未來算力富裕之後的事了。
這是實拍的截圖,注意看左側,圖像模糊的方式非常複雜,車不是作為一個整體模式,而是要考慮到各部分在畫面上移動的速度。
這是GT賽車遊戲畫面在照相模式下進行後期渲染的效果
顯然預渲染動畫的效果要比遊戲機實機畫面好得多,哪怕加上後期處理也是專業軟體更好然後再說動畫。動畫是人手畫的,按理說不會有動態模糊(後期特效另說)。而且日本動畫為了節省成本,一般是不會畫足24幀的,比如一拍三就是24幀只畫8幀,但是我們在看8幀的日本動畫的時候,並沒感覺特別的卡,這是怎麼回事呢?
其實動畫師在繪製時,已經考慮到了動畫的劣勢,做了大量的變形加工。包括迪士尼的十二法則,本質上也是為了彌補手繪的缺陷,才故意做出誇張的處理。
像京都這個手部的動態模糊,就完全是手工畫出來的。
而結合變形後就是這樣了。
有一種特殊情況是轉描動畫,就是先用真人拍一遍然後照著描成動畫,轉描時很難加入動態模糊,所以轉描方式的動畫往往給人以非常楞的感覺。
二、幀數、刷新率、動畫張數
刷新率是一個硬體概念,指的是信號本身和顯示器的特徵,與遊戲無關。之所以很多人搞混,是因為在模擬時代,遊戲的幀數與信號刷新率是綁定的。
美日的N制每秒是29.97幀圖像,每個圖像480行,受限於帶寬,實際傳輸時每幀拆成2組240行的隔行信號,計算時一般取整到60,與59.94大約一分鐘差2幀。而早期街機和遊戲機輸出的是逐行信號,第一幀和第二幀都是奇數行,偶數行空著,CRT遊戲特有的掃描線其實就是解析度不足出現的空行。也就是說老遊戲機每秒輸出60張不同的圖片。
3D時代初期的遊戲機開始採用480I信號,輸出時是隔行的,也就是說奇數偶數幀的圖像是不一樣的,這就是為什麼PS2的遊戲畫面在逐行設備上會出現拉絲的現象。
歐洲與中國大陸的電視標準為PAL,頻率50HZ,也就是50幀。老式遊戲機的運行方式是行掃描,在使用歐亞版遊戲機運行日美版本遊戲時,遊戲內部機制仍然以60HZ為基準,這就導致了圖像壓扁(因為P制信號行數更多)和拖慢。不僅是圖像,連聲音也是一樣,我們之前玩的FC上的盜版遊戲,由於沒有修改遊戲內部時鐘機制,圖像和音樂都是比原版慢的。
老遊戲機的2D在遇到運算不過來的情況時,往往會採取拖慢的方式,這就是STG遊戲中著名的「處理落」,而運算3D遊戲時採用跳幀還是拖慢由設計者決定。像DC上的莎木1,場景人數一多就會拖慢。
幀數(FPS),指的是遊戲內部運算每秒產生多少張圖像,與刷新率是完全不同的概念。
幀數不足是「卡」,突然掉幀也是「卡」,兩者本質上是一樣的。比如遊戲輸出信號是60hz,而遊戲畫面是30幀,那麼顯卡就會把同一張圖輸出2次。如果遊戲突然掉到15幀,顯卡會繼續輸出緩存中的上一張圖,也就是一張圖輸出4次。
萌新常犯的一個錯誤是,認為卡頓是幀數不均勻造成的,這是不對的,30幀的遊戲卡,30幀突然掉到15幀更卡,你覺得30幀不卡僅僅是因為你弱。
動畫張數,這是一個讓很多人糊塗的概念。
像街頭霸王2,角色一個動作也就3、4張動畫,每秒還不到8幀,為什麼遠比3D遊戲的15幀要流暢呢?因為2D遊戲的幀數與動畫張數是完全無關的兩件事,雖然角色的動作沒有變化,但是角色仍然在畫面上運動,遊戲仍然是60幀的。所以你並不會產生3D遊戲的卡的感覺,只會覺得角色動作有點生硬。
比如這3張截圖,只有2張角色動畫,但實際上是3幀不同的畫面。
越新的格鬥遊戲,角色動畫張數越多,有時候會在原有基礎上增加中間幀,目前為止角色動畫張數最多的應該還是街霸3,也並沒有達到全動畫的水平,有的必殺技每秒只有6張圖,換算到動畫僅僅是一拍四而已
三、影響幀數的因素
在2D遊戲時代,遊戲機遊戲的幀數基本是由CPU決定的。這是因為遊戲機的圖像運算完全由顯卡負擔,2D顯卡採用硬體活動塊+硬體捲軸的原理,畫面上能同時出現多少個元素都是硬體定死的。如果畫面上元素太多,不好意思,只能輪流顯示了,所以FC遊戲經常發生畫面缺損。而2D遊戲的拖慢,一般是因為CPU無法負擔邏輯運算造成的,典型的就是STG遊戲的大量活動物體軌跡運算導致的拖慢。
同期的PC遊戲則不一樣,PC的圖像運算由CPU生成,2D顯卡只是一個簡單的合成單元,這就是為什麼早期PC的CPU性能是遊戲機的幾十倍,畫面卻不如遊戲機。
3D遊戲畫面的生成原理與2D完全不同,在光柵化體系下,圖像運算分為空間坐標變換+光影效果,以及光柵化渲染兩部分。早期的3D顯卡比如VOODOO只負責光柵化的像素紋理填充,3D運算的主體由CPU完成。同期的遊戲機比如N64也是一樣的結構。SS和PS結構更加奇葩一些,不過基本也是分成前後兩步。
之後來到以GeFore 256為代表的第二代顯卡,賣點是硬體T&L,也就是顯卡接手空間坐標變換+光影效果的工作,CPU從圖形處理中解放了。
由於CPU負擔的工作越來越少,導致遊戲機的CPU越來越弱。幀數不足的問題,CPU和GPU都有責任,但是GPU可以通過降低特效降低解析度等一系列方法減輕負擔,而CPU的運算是不能打折扣的,所以現在的遊戲機遊戲幀數不足一般都是CPU背鍋。
四、遊戲畫面多少幀才算流暢?
遊戲圈把60幀定為標準,有一定的歷史因素。在80、90年代動作射擊遊戲的黃金時代,大部分街機和遊戲機都是輸出逐行信號的,每秒有60幀不同的畫面。遊戲界所有關於手感、反饋、打擊感的概念,都是在60幀的情況下定義的,包括了從馬裡奧到魂鬥羅,從街霸2到KOF的一系列經典大作。如果新遊戲不夠60幀,老玩家很快就能發覺,然後在媒體上批判一番。
為什麼很多人覺得30幀也能湊合呢?因為90年代興起的RPG AVG AADV這些類型,以及21世紀興起的沙盤遊戲(AADV或者ARPG),對動作性的要求遠不如早期的遊戲,所以30幀也能湊合玩。
同為後起之秀的FPS,對於幀數的要求比老街機遊戲還高,所以你看到PC上的FPS玩家都聲稱非60幀不玩,120幀最佳。
至於現在遍地的30幀,一方面是大部分玩家玩的遊戲類型對幀數要求不高,另一方面是3D時代硬體性能跟不上畫面的發展速度,廠商只能做到30幀。如果遊戲公司真的認為30幀夠用,就不會把60幀特意當作優點吹噓了。廠家認為大多數玩家更在意畫面的特效,解析度和幀數屬於可以犧牲的範疇,所以PS3和PS4兩代主機,越到後期解析度和幀數越糟糕。
除了畫面本身,遊戲的反饋延遲也影響到玩家的感受。FTG玩家要求60幀,是因為遊戲的判定以1/60秒為單位,比如A招在輸入後3/60生效,B招4/60生效,那麼A招就會有優勢。格鬥遊戲的製作公司會主動向玩家灌輸這些專業的概念,比如VR戰士中結城晶的提膝彈腿,明確要求按某個鍵1/60秒,超過這個時間就無效,所以格鬥遊戲玩家也被稱為「生存在1/60秒世界的人」。
當然,人的反應速度是絕對到不了1/60秒的,一般比較快的人有1/10就不錯了,但是實際遊戲過程中,我們的動作都不是憑藉臨時的反應,而是條件反射,如果遊戲反饋慢,會明顯影響感受,真的是1/10秒的話這遊戲也就不用玩了。如果遊戲空有120幀,操作要延遲4幀才能反應到畫面上,那跟30幀就沒有太大差別了。