當前位置:
首頁 > 遊戲 > 《漫威蜘蛛俠》光線追蹤分析:現階段光追會做出怎樣的平衡?

《漫威蜘蛛俠》光線追蹤分析:現階段光追會做出怎樣的平衡?

? ? 近期開發商 Insomniac Games 放出了《漫威蜘蛛俠 Remastered》和《蜘蛛俠 邁爾斯·莫拉萊斯》的實機演示片段。遊戲技術分析媒體 Digital Foundry 深入詳解了兩個片段,解答為何有些效果看起來不是很理想。(筆者註:本文結合了 Digital Foundry文章和視頻兩部分內容而成。截圖皆來自 DF 的視頻)

? ? 先說基本情況。《漫威蜘蛛俠》在 PS5 上有 4K 30 幀高畫質模式和 60 幀高幀數模式。高幀數模式依然使用了 PS4 版本的屏幕空間反射技術(SSR),該技術只能針對屏幕畫面里的物體進行反射,畫面之外的物體就束手無策,會導致視覺表現不連貫的問題。

? ? 而高畫質模式採用了光線追蹤反射(ray traced reflections),還有光線追蹤環境光遮蔽(ray traced ambient occlusion,下文簡稱 RTAO)。RTAO 因為通過視頻或者截圖是很難向觀眾展現出來,因此不作為本次重點討論部分,但總之 RTAO 可以提供諸如僻暗的角落這種地方更加真實的黑暗效果。

光線追蹤反射原理

? ? 光線追蹤確確實實帶來了畫面提升,但截圖展現的效果還是有瑕疵。光線追蹤的表現過程和幀數表現之間敏感度很高,而開發者受制於有限的資源去實現光追效果。效果不夠理想具體要從光線追蹤反射的原理出發來進行解釋。

槽點很多的官方截圖

? ? 光線追蹤反射大約分成四個步驟。我們用 4K 30 幀畫面進行討論,這樣每一幀的運算時間是 33.3 毫秒,假設其中 8 毫秒用戶光追反射運算。(筆者註:此處和下文的所有運算時間僅為理論模型,幫助讀者更好地進行理解,並非實際數據)

? ? 第一步,光追反射基於能從任何方向發射出來的光而實現——可以從屏幕畫面以外的地方發出,以及非常非常遠的地方發出。遊戲需要生成一個簡單易讀的版本場景來給後續的步驟做計算。越龐大越複雜的細節,越多動態的物體,那就需要越多的 GPU 時間來生成它。

? ? 第二步就是光線追蹤了,也是有專門硬體進行加速的步驟。光線照射到第一步建立好的簡單版本場景。為了準確繪製出與幾何體的碰撞,所有場景里的物體周圍都有一個看不見的長方體輪廓。當光線打到了一個物體的輪廓上,就會被標記為後續需要著色的地方。越多數量的光線,越多數量的物體,就會有越多的碰撞,由此帶來更長的處理時間。

? ? 第三步就是給第二步標記的像素點著色。越多擊中的像素點,以及越複雜的著色方式,就需要 GPU 更長的處理時間。因為光線的數量是有限的(跟現實世界中近乎無限的光無法比擬),最終結果會看起來很粗糙,充滿了噪點。所以還需要最後第四步對畫面進行降噪處理。最終,呈現出更加真實令人信服的反射。

? ? 即便第二步有專門的硬體加速,但整個過程對於 GPU 的負擔仍然很大,妥協是不可避免的。

? ? 現在,假設這四步分別消耗了 6、6、6、1 毫秒,總共是 19 毫秒,這與先前設定的 8 毫秒相差甚遠。那麼該如何做出有效的妥協來讓畫面看起來仍然不錯,同時符合遊戲設計目標呢?通常前三步比較適合降低效果。

下一頁:如何平衡

如何平衡? ? ? 一是降低反射解析度,這樣第二步的光線數量、第三步的著色數量會大大減少。從截圖來看,《漫威蜘蛛俠》的反射解析度基本上是遊戲解析度的四分之一,也就是 1080P。

? ? 不僅僅是主機遊戲,PC 遊戲也有針對反射解析度進行調節的情況。DF 使用了一塊 RTX 2060 Super 對《幽靈行者》繼續了測試。(筆者註:DF 表示雖然這是一款虛幻 4 引擎的光追遊戲,但作為近似比較是可行的。同時 RTX 2060S 表現與 RTX2070 和 RX5700 接近,顯存帶寬與 PS5 的 GPU 相同,適合與 PS5 進行比較。)

? ? 在 4K 解析度和 4K 光追反射下,一個小場景下保持畫面不動勉強能保持 30 幀的水平。若將光追反射解析度調整至 1080P,幀數會增加到接近 40 幀附近,這就給 GPU 留出了充足的資源去運算其他部分。到了一個戶外場景下,4K 光追反射讓幀數下降到了 20 幀出頭,而 1080P 光追反射讓幀數提升至 30 幀出頭。

? ? 這就是為什麼 PS5 的《漫威蜘蛛俠》選擇了這種方法去保證幀數的穩定性。類似的做法我們在《GT賽車 7》當中也有見到過。

? ? 假設降低反射解析度讓運算時間分別縮短至 6、2、2、1 毫秒,那麼總共 11 毫秒還與目標的 8 毫秒有一定差距。這時候要對第一步進行處理了。通過減少動態物體可以降低運算量。比如在《邁爾斯·莫拉萊斯》的這些截圖當中,一些 NPC 沒有了反射。這樣一來縮短了第一步的運算時間,假設這樣將運算時間控制在了 3、2、2、1 毫秒,就剛好符合預期的 8 毫秒目標了。

? ? 還有一點是光追反射的距離。要反射越遠的物體和越多的物體就需要在第一步和第二步進行更多的運算。《漫威蜘蛛俠》截圖裡的光追反射距離很遠,這方面觀感良好,應該不會出現遠處物體突然在反射中出現或者消失的情況。《戰地5》調整成低距離光追反射後就可以看到這種突兀的情況。

? ? 但由此也會增加運算資源消耗,假設此時運算時間增加至 4.5、2.5、2、1 毫秒,此時又需要做進一步的平衡。

? ? 我們很容易看到《漫威蜘蛛俠》的截圖中反射部分缺少了很多樹的葉子。樹葉是一種透明物體,這種透明物體和粒子對於第二步光線追蹤的負載非常大。比如在《戰地5》中開啟光追,製造一些粒子效果比如爆炸,以及在有大量樹葉的場景中行動,就會讓幀數出現明顯的下滑。

? ? 因此,《漫威蜘蛛俠》裡面反射出來的樹是光禿禿的,《邁爾斯·莫拉萊斯》片段當中煙霧這種半透明物體沒有反射就是為了減少第二步的運算量。這樣,我們的運算時間就可以來到 4、1.5、2、1 毫秒的水平,還是比 8 毫秒稍微高了些,需進一步平衡。

? ? 我們可以看到蜘蛛俠戰衣表面細膩的編織質感在反射中下降了很多,這樣可以簡化第三步著色的工作量。這種做法並不只有《漫威蜘蛛俠》,《德軍總部 新血脈》也使用了相同的技巧。這樣,我們就可以達到目標的運算時間了。

路還很長

? ? 讓我們來做個總結。《漫威蜘蛛俠》整個光追反射因為有限的資源做了很多妥協,但在最影響觀感的地方做了強化,再進一步從其他地方妥協,這樣達成一個最佳平衡效果。

? ? 在光線追蹤方面進行妥協是很正常的一件事情,因為它所需要的算力實在太大。不過如何妥協則各廠商有不同的做法。我們已經看到索尼的做法是保證原遊戲解析度的情況對光追部分進行降質。英偉達則是讓原遊戲解析度下降,這樣光追解析度也一同降低下去,然後通過 DLSS 深度學習超採樣對畫面進行拉伸,得到優秀的高解析度效果。

DLSS 2.0甚至能做到比原生解析度更好的效果

? ? 如何運用光線追蹤各開發商有點不同,現在大部分有光線追蹤技術的遊戲都是採用傳統的光柵化技術加上部分光線追蹤技術(比如光追反射)的過渡形態,比如《漫威蜘蛛俠》PS5版、《戰爭機器5》次世代Xbox版。

? ? 有些人會提到「路徑追蹤」。微軟此前展示的《我的世界》和英偉達用來做光追演示的技術 Demo 《Marbles》一樣使用的是「路徑追蹤」(Path Tracing)。路徑追蹤是另外一種與本文談論的光追反射等完全不同的光追技術。它確實提供了更真實的畫面效果,但因為光線數量龐大等因素,導致其在實時計算當中需要消耗的算力對於如今的硬體而言還是太大。

? ? 《我的世界》路徑追蹤技術 Demo 效果在 Xbox Series X 上僅有 1080P 30 幀,而且本身就是方塊幾何體的物體也可以更容易地實現出路徑追蹤效果。《Marbles》效果非常出色,但在 RTX 3080 顯卡上也不過 1440P 30 幀的表現。現階段估計還沒到路徑追蹤能夠大展身手的時候。

路徑追蹤短時間內還是難以普及開來

? ? 總之,光線追蹤正式進入消費級遊戲市場也不過兩三年的時間,目前仍然處於初步探索階段。而遊戲主機肩負著新技術普及的重任,未來更多遊戲的運用勢必會讓光線追蹤發揚光大。但畢竟這是一段過程,新老技術共存的過渡形態估計是很長一段時間內開發商的主流做法。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 遊戲時光VGtime 的精彩文章:

3D射擊遊戲《鐵翼少女》2021年2月25日發售
兒童雜誌上《FIFA 21》開箱廣告引來劇烈批評,EA道歉