遊戲幀數暴漲&無需讀圖?談談PS5和RTX3000的黑科技
[PConline 雜談]對於遊戲玩家來説,最近可謂是重磅消息連連。新一代遊戲主機無論是PS5還是Xbox SX,都公佈了售價,即將在年底開售;而在PC領域老黃也祭出了新核彈RTX3000系列,性價比高得嚇人。這些全新的遊戲硬件,除了在性能和價格方面帶來驚喜,它們所帶來的全新技術,也會徹底改變未來遊戲的體驗。
關於新硬件帶來的遊戲技術,大家提及最多的可能就是光線追蹤,它可以帶來更加逼真的畫面。不過對於遊戲整體的體驗,可能卻是另一方面的技術,會產生更加翻天覆地的影響。而這方面技術,卻被很多玩家所忽視。今天,就來談談新一代遊戲硬件,在遊戲數據傳輸I/O機制上的革新,會為遊戲帶來怎樣驚人的變化吧。
現今遊戲的大問題:數據I/O瓶頸
如果你是一名有一定閲歷的遊戲玩家,應該都不難發現,多年來遊戲始終存在一個尾大不掉的問題——需要讀圖。在以往,這可能不是什麼大問題,但在近十年來越來越多遊戲擁抱開放世界,地圖做得越來越大,讀圖的時間愈發誇張。某些遊戲即在SSD的環境下,讀圖時間仍然足夠你去泡杯茶,體驗相當抓狂。
這其實就體現出了遊戲在I/O方面的瓶頸。在傳統的流程中,數據存儲在硬盤上,玩遊戲數據得先從硬盤讀取到內存,然後經由CPU分配,再傳輸到顯存中,最後由GPU來進行處理。可見,遊戲數據是需要經由硬盤-內存-顯存這個冗長的傳輸環節的,而且在這些環節當中還需要依賴CPU的調度,這並不高效。
隨着遊戲的地圖越來越大、畫面越來越精細,遊戲數據I/O方面的瓶頸愈發凸顯。這主要制約了遊戲在以下方面的表現。
·讀圖。首先影響的自然是前面提到過的讀圖。只要地圖足夠大,就算用上了SSD,仍會有明顯的等待時間,這點就不多贅述了。
作為一個古老的遊戲機制,讀圖伴隨玩家已久。但為何遊戲必須要讀圖?甚至遊戲為什麼要做成不同的關卡?在遊戲數據I/O瓶頸愈發突出的今天,越來越多人開始思考這個問題。
·場景製作。遊戲數據的I/O效率不高,導致遊戲製作者沒辦法一次性調用太多的數據,去製作理想中的龐大場景。
遊戲運行時,GPU所處理的數據來自於顯存,顯存乃至內存的容量和硬盤不可同日而語。遊戲製作者必須在螺螄殼裏做道場,用幾個G的數據,來構建當前畫面所有的遊戲場景;否則,數據就需要重新從硬盤讀取,替換當前顯存和內存的數據。
如此一來,遊戲場景要麼犧牲精細度,要麼縮減規模,不然就會頻頻讀圖——實際上很多遊戲也的確需要頻頻讀圖。為了掩飾讀圖、避免遊戲體驗中斷,遊戲製作者採用了很多巧妙的方法,例如《神秘海域》中,當玩家爬山爬了一段後,背後會發生懸崖崩落之類的情節,緊張刺激的同時,隨着崩落,舊的地圖也被刪掉了,顯存中的數據得到了清空,開始讀取下一個場景的數據,而讀圖過程則被CG動畫播片等手段掩飾。
但無論如何,這也只是權宜之策。受限於容量有限的顯存、低下的I/O效率,遊戲場景始終難以隨心所欲地擴張。在畫面越來越精細、高精度貼圖紋理佔據越來越多容量的現今,遊戲場景製作受到遊戲數據I/O瓶頸的掣肘,愈發明顯。很多遊戲都做了大量鑽山洞之類的場景,就是不得已而為之——鑽山洞不需要太多數據堆砌場景,還可以藉此時機加載下一個大場景的數據。想要像超人一樣數秒內連續飛越幾個城市?對不起,現在的遊戲做不到。
·幀數上限。近幾年,市面上出現了很多高刷新率顯示器,佼佼者甚至把刷新率堆到了240Hz。然而大家不難發現,就算降低遊戲畫質,很多遊戲的幀數也依然沒法達到這個水平,而此時的GPU佔用率其實並不高,這其實也是遊戲數據I/O瓶頸導致的。
前面提到,遊戲數據從硬盤傳輸到內存最後到顯存,這些過程當中,需要CPU參與調度。在高頻調度數據時,CPU成為了瓶頸,遊戲幀數無法進一步提高。
次時代的遊戲硬件,往往肩負着引領遊戲改革的使命,這次PS5和RTX3000“安培”GPU,正是如此。
先來説説PS5。無論是Xbox SX還是PS5,都是用了SSD作為存儲介質。但是,雙方又有所不同,PS5的架構更多地為打破遊戲I/O的瓶頸而設計。
根據當前信息,PS5的SSD傳輸速率達到了5.5 GB/s,但這不是關鍵。關鍵在於,PS5的遊戲數據讀取,和傳統流程是不同的。在PS5的架構中,在一定程度上,GPU可以直接向SSD索取所需要的遊戲數據,這減少了數據中轉的環節,效率大為提升。
PS5是如何做到這一點的呢?這需要從當前遊戲的數據存儲架構説起。
當前遊戲的數據,是以打包的形式存放在硬盤中的。一張張貼圖、各種紋理的文件,往往會集中打包,當遊戲需要相應數據時,才會解包輸送到顯存當中,隨後再交給GPU渲染。
如此一來,顯存就不得不存放大量未必用得到的貼圖紋理數據,每次切換新場景都必須歷經一次讀包-解包的過程,這在遊玩過程中,就體現為讀圖。
為什麼遊戲數據要打包放置?在傳統HDD硬盤中,將零散文件統一打包,有助於減少磁頭尋道,HDD硬盤的性能瓶頸就在於此。將遊戲數據打包為大文件,可以讓HDD持續傳輸數據,提升性能。
現在已經進入了SSD時代,SSD沒有尋道這一概念,對零散文件的讀取速度是HDD的百倍不止,更合理的機制是GPU需要什麼貼圖紋理,就直接讀取什麼貼圖紋理。但由於當前的遊戲主機PS4、Xbox One依然採用HDD,遊戲也只能隨主流適配HDD,因此遊戲的做法還是將數據打包在一起,這令SSD需要讀取額外的大量數據,並沒有發揮出應有特長。大家從HDD換用SSD,感覺到的變化也就是讀圖更快了,但讀圖始終是一道邁不過去的檻。
在PS5中,情況終於得以改變。根據目前透露的消息,針對PS5開發的遊戲,其貼圖等數據不再集中打包,而是分佈放置(或是打成更小的包),遊戲可以僅僅讀取所需數據到顯存,效率大為提升。
PS5的獨到設計,有兩個好處。
·消滅讀圖的過程。遊戲數據不再需要統一打包、讀取,可以按需實時讀取,更加靈活,沒有了統一載入也就是讀圖的過程;
·解除場景規模限制。前面提到,遊戲場景規模受限,是由於顯存難以承載大場景所需的海量數據。在PS5的新存儲架構中,場景所需要的數據分散存儲在SSD中,實際需要的時候才會實時讀取,這些數據再無必要一次性載入顯存,大大減輕了顯存負擔,也令更大場景的製作成為了可能。
理論上如此,實際也是如此。索尼早前演示了運行中PS5中的《蜘蛛俠》新作,演示中蜘蛛俠在地圖上自由飛蕩過一座座高樓,儘管地圖非常廣闊,但PS5基本不需要讀圖。
索尼自己的演示信不過?再來看看第三方的演示。Epic之前放出了新一代引擎虛幻5的演示,這段Demo全程運行在PS5實機上,從中可以看到場景非常遼闊,而且人物可以在場景中高速移動,一氣呵成,毫無讀圖痕跡,非常爽快。
虛幻5引擎的官方演示,運行於PS5實機上,可以直接跳轉到7:50,體會一下無縫大地圖的高速移動
RTX3000“安培”GPU:開創性的RTX IO
改善遊戲數據讀取流程這一思路,不僅索尼有想到,老黃也意識到了。在最近發佈的RTX3000系列“安培”GPU中,帶來了DirectX Storage的特性,它有望打破PC遊戲的I/O瓶頸。
DirectX Storage其實是微軟推出新DirectX API,而NV在安培GPU中,對其進行了支持,推出了RTX IO技術。簡單來説,RTX IO可以讓PC遊戲的數據傳輸繞過CPU,直接傳輸到顯存供GPU使用,這其實和PS5的設計是有相似之處的。
毫無疑問,RTX IO可以大大增加PC遊戲數據傳輸的效率,根據NV給出的數據,通過RTX IO,GPU解壓遊戲數據的性能甚至超過了PCIe Gen4下SSD的傳輸速度。這一方面可以大大減少讀圖時間,另一方面可以突破CPU瓶頸,讓PC遊戲的幀數更加“電競級”。
前面提到過,很多PC電競遊戲,幀數上不去,其實不是GPU的問題。通過軟件觀察到,GPU的佔用率其實根本不高,但CPU卻已經是滿頻率運行,幀數的瓶頸在於CPU。CPU調度的數據“喂不飽”GPU?現在RTX IO可以讓遊戲數據I/O繞開CPU,從根本上解決這問題。如此一來,遊戲幀數就有了更高的上限,在高刷新率屏幕逐漸普及的今天,無論對於職業電競選手還是普通玩家,這項技術都意義重大。
另外,RTX IO也可以帶來解除場景規模限制的好處,這和上面PS5文段中所敍述的是類似的,這裏就不多作贅述了。
總結
很多老玩家都感概,近年來遊戲畫面,已經沒有什麼質的提升了。現在的大部分遊戲的畫面對比的《孤島危機》,有質變的提升麼?《孤島危機》誕生於2007年,用《孤島危機》對比它五年前也就是2002年的遊戲,再用現在的遊戲對比距離現在十多年前《孤島危機》,不能難發現最近十幾年遊戲畫質提升之小,是遠慢於之前的。
之所以如此,是因為遊戲的圖形技術,久久未有根本性的革新。PS4、Xbox One這代遊戲主機,將光柵化等圖形技術發揮到了一個新高度,然而遊戲的渲染流程沒有質變。PS3/Xbox360時代開始出現的法線貼圖、環境光遮蔽、動態光照、體積光等,當今依然是提升遊戲畫質的法寶。同樣,遊戲的渲染流程,也依然停留在從硬盤讀取數據包、傳輸到內存顯存解壓,再交由GPU渲染的傳統。從這個角度來看,其實PS4、Xbox One是設計相當保守、缺乏開創性的一代遊戲主機。
在這個世代,轉機終於來了。支持光線追蹤的GPU實裝在了PS5、Xbox SX等下一代遊戲主機以及PC顯卡中,SSD也成為了遊戲硬件的標配。遊戲全方位發生質變,終於有了前提條件。
光線追蹤大大提升了遊戲畫面的上限,而遊戲數據I/O的變革,則可以讓遊戲流程天翻地覆。相信隨着新一代遊戲硬件的普及,越來越多的玩家會感嘆“原來遊戲還可以這麼做”,共同期待吧。