天天日?qǐng)?bào)丨虛幻引擎 5 Lumen vs 光線追蹤:哪個(gè)更好?
Epic 的 Unreal Engine 4 是上一代最流行的游戲引擎之一。它被 EA、Ubisoft 和 Microsoft 等 3A 巨頭以及大量獨(dú)立工作室廣泛使用。憑借虛幻引擎 5 及其 Lumen 和 Nanite 技術(shù),Epic 正在尋求擴(kuò)大其在視頻游戲行業(yè)的主導(dǎo)地位。在這篇文章中,我們將了解 Lumen,這是虛幻引擎 5 使用的全局照明解決方案,可在預(yù)算內(nèi)為下一代游戲帶來(lái)逼真的照明。我們將 Lumen 與傳統(tǒng)的光線追蹤進(jìn)行比較,并分析兩者在質(zhì)量和性能方面的差異。
(資料圖片僅供參考)
簡(jiǎn)單來(lái)說(shuō),全局照明是通過(guò)計(jì)算屏幕內(nèi)外光源發(fā)出的光(通過(guò)近似或追蹤其路徑)來(lái)照亮或照亮場(chǎng)景的過(guò)程。通過(guò)光線和路徑追蹤,光線從這些光源投射,到達(dá)場(chǎng)景中的各種物體并照亮它們。根據(jù)遇到的對(duì)象的性質(zhì),光線的行為會(huì)有所不同。例如,有光澤(閃亮)的物體會(huì)反射光線,而不透明的物體會(huì)簡(jiǎn)單地阻擋它并將其重定向到其他地方。物體在不同方向上對(duì)光線的這種重定向稱為間接或漫射照明,而重定向的光線稱為漫射光線。
光線追蹤全局照明 (RTGI)然后這些間接或漫射光線充當(dāng)新投射的光線,進(jìn)一步撞擊其他對(duì)象并在此過(guò)程中照亮它們,而對(duì)象將它們重定向基本上充當(dāng)光源。當(dāng)光線最終到達(dá)相機(jī)(你的眼睛)時(shí),它收集的信息用于確定場(chǎng)景的照明。
在大多數(shù)情況下,光線的顏色由反射它的像素的顏色決定。為了節(jié)省性能,直接照射到屏幕(您的眼睛)的光線(顏色、強(qiáng)度等數(shù)據(jù))是通過(guò)復(fù)雜的算法計(jì)算的,而其余的漫射光線則通過(guò)更簡(jiǎn)單、不太復(fù)雜的方程來(lái)計(jì)算。
所以,現(xiàn)在您可能想知道光線是如何在場(chǎng)景中投射的,以及如何確定每個(gè)場(chǎng)景的光線數(shù)。嗯,這是通過(guò)探針完成的,這些探針基本上是開(kāi)發(fā)人員在運(yùn)行前放置在場(chǎng)景中的光源。每個(gè)探頭都充當(dāng)點(diǎn)光源,投射光線并照亮場(chǎng)景。每個(gè)探頭可以放射狀地投射一條或多條射線。
這些探測(cè)器投射的光線被跟蹤、著色,并存儲(chǔ)輻照度和幾何距離等數(shù)據(jù),并用于計(jì)算場(chǎng)景的最終照明。在最初的光線追蹤游戲中,大多數(shù)開(kāi)發(fā)人員使用一個(gè)(或兩個(gè))光探測(cè)器來(lái)計(jì)算漫反射光照。在 Metro Exodus 中,這是太陽(yáng)和天空的紋理。在增強(qiáng)版中,這擴(kuò)展到了 256 個(gè)光源或探頭。因此,總的來(lái)說(shuō),您有256 個(gè)光源,加上來(lái)自太陽(yáng)和天空的光線都用于計(jì)算每個(gè)像素的光照。1080p 顯示器有 200 萬(wàn)像素,1440p 有 400 萬(wàn)像素,4K 有 800 萬(wàn)像素!
為了確保現(xiàn)代硬件能夠真正運(yùn)行游戲,開(kāi)發(fā)人員使用網(wǎng)格單元或集群來(lái)劃分場(chǎng)景。然后類似于屏幕空間效果,范圍內(nèi)(在網(wǎng)格中)的光探針用于計(jì)算場(chǎng)景的照明,主要區(qū)別在于在前者的情況下,屏幕空間被劃分為多個(gè)部分(取決于它們?cè)?Z 緩沖區(qū)中的位置),而在后者的情況下,游戲世界是分區(qū)的,避免了類似的覆蓋問(wèn)題。
另一項(xiàng)優(yōu)化涉及累積來(lái)自先前幀的光線并將它們用于額外的漫反射光反彈,就像時(shí)間放大一樣。這用于生成照明網(wǎng)格,然后可以在連續(xù)幀上重復(fù)使用,從而允許幾乎無(wú)限的光線反彈。您實(shí)際上是在多個(gè)幀上臨時(shí)投射漫射光線,以減少性能影響并使該方法更適合實(shí)時(shí)使用。由于漫射光線的影響是微妙的(但在光線不足的場(chǎng)景中很明顯),它不會(huì)受到通常與時(shí)間渲染技術(shù)相關(guān)的問(wèn)題的影響。
虛幻引擎 5:Lumen與光線追蹤好的,所以在我們開(kāi)始之前,讓我們把一件事說(shuō)清楚。Lumen 基于光線追蹤,盡管它是一種更優(yōu)化的混合形式,可以在不同的圖形架構(gòu)中更廣泛地采用,而無(wú)需擁有 1000 美元的 GPU。
Lumen 是虛幻引擎 5 的全新全動(dòng)態(tài)全局照明和反射系統(tǒng),專為下一代游戲機(jī)而設(shè)計(jì)。Lumen 是 Unreal Engine 5 中默認(rèn)的全局照明和反射系統(tǒng)。它在從毫米到公里的大型詳細(xì)環(huán)境中渲染具有無(wú)限反彈和間接鏡面反射的漫反射。
默認(rèn)情況下,Lumen 使用軟件光線追蹤(不使用 RT 內(nèi)核/加速器),這是一種高度優(yōu)化的形式。它并行使用多種形式的光線追蹤,包括屏幕追蹤 (SSRT)、有符號(hào)距離場(chǎng) (SDF) 和網(wǎng)格距離場(chǎng) (MDF),根據(jù)對(duì)象及其與屏幕的距離計(jì)算場(chǎng)景的全局照明,以及某些其他因素。
有符號(hào)距離場(chǎng)和網(wǎng)格距離場(chǎng)在我們繼續(xù)之前,您需要知道有符號(hào)距離場(chǎng)(和網(wǎng)格距離場(chǎng))是什么。雖然這聽(tīng)起來(lái)像是一個(gè)非常復(fù)雜的術(shù)語(yǔ),但SDF 基本上是一個(gè)特定方向的距離向量。讓我們以下面的例子來(lái)說(shuō)明這一點(diǎn):
光線從相機(jī)投射,穿過(guò)屏幕,然后接近圓形表面。現(xiàn)在,通過(guò)光線追蹤,最重要的部分是確定哪些光線擊中場(chǎng)景中的對(duì)象,哪些未命中。SDF 用于此目的,更具體地說(shuō),是找出(對(duì)于從特定方向開(kāi)始的光線)對(duì)象表面上存在交叉點(diǎn)的最近點(diǎn)。
這里,綠色圓圈代表 SDF。計(jì)算SDF 意味著找出我們可以(至少)沿著射線在那個(gè)方向上走多遠(yuǎn)。然后,覆蓋這么多距離并重新評(píng)估 SDF。這整個(gè)過(guò)程稱為光線行進(jìn)?,F(xiàn)在對(duì)網(wǎng)格采用相同的方法,得到網(wǎng)格距離場(chǎng) (MDF)。無(wú)論哪種方式,在這種情況下,光線實(shí)際上并沒(méi)有擊中圓,因此該過(guò)程在預(yù)定數(shù)量的步驟后結(jié)束。以防萬(wàn)一,SDF 將被用于計(jì)算照明和其他相關(guān)方程。
全局距離場(chǎng)、網(wǎng)格距離場(chǎng)和屏幕跟蹤是最快的,但準(zhǔn)確度要低得多。這對(duì)他們有利,因?yàn)樗鼈冇糜趫?chǎng)景的抽象外骨骼,例如墻壁、地板和大(但簡(jiǎn)單)的紋理塊(例如墊子)。網(wǎng)格距離場(chǎng)更詳細(xì),但僅在對(duì)象表面附近保留稀疏的細(xì)節(jié)。這些 SDF 與 mipmap 一起使用,具體取決于對(duì)象與相機(jī)的距離。
lumen 中的軟件光線追蹤過(guò)程從屏幕空間光線追蹤或屏幕追蹤開(kāi)始,它針對(duì)深度緩沖區(qū)中的幾何體/對(duì)象(在屏幕上可見(jiàn))進(jìn)行。正如您在本節(jié)開(kāi)頭的圖表中看到的那樣,這通常用于邊緣和裂縫,基本上是投射屏幕空間陰影 (SSAO) 的幾何體。在屏幕跟蹤之后,使用 SDF。第一個(gè)網(wǎng)格距離場(chǎng)用于附近的對(duì)象,其次是全局距離場(chǎng)用于場(chǎng)景的其余部分
網(wǎng)格距離場(chǎng)(稱為詳細(xì)跟蹤)跟蹤距離相機(jī)最遠(yuǎn) 2 米的對(duì)象,而其余部分使用全局距離場(chǎng)進(jìn)行跟蹤(稱為全局跟蹤)。如上所示,每種方法都有自己的每個(gè)場(chǎng)景的 2D 體素表示。GDF 不太準(zhǔn)確,因?yàn)槟鷮?shí)際上是根據(jù)對(duì)象輪廓跟蹤它們,但比 MDF 快得多。此外,目標(biāo)對(duì)象的性質(zhì)/距離意味著這非常有效。另一方面,MDF 跟蹤場(chǎng)景中各種對(duì)象的(相對(duì))低多邊形版本以計(jì)算照明(對(duì)于高達(dá) 2 米的對(duì)象)。
為了進(jìn)一步加快這個(gè)過(guò)程,Lumen 使用了Surface Cache。Surface 緩存從各個(gè)角度捕獲對(duì)象的幾何屬性,并以各種圖集(緩存)的形式離線存儲(chǔ)它們。當(dāng)玩家四處移動(dòng)時(shí)會(huì)發(fā)生捕獲,當(dāng)您靠近時(shí)以更高的分辨率進(jìn)行捕獲,而當(dāng)您遠(yuǎn)離對(duì)象時(shí)以較低的分辨率進(jìn)行捕獲。但是,這僅適用于內(nèi)部簡(jiǎn)單的網(wǎng)格。緩存發(fā)生在有限數(shù)量的對(duì)象多邊形(幾百 MB 的 VRAM)中,并且需要各種對(duì)象/部分的 LOD 才能有效利用。
Lumen 軟件 RT的主要缺點(diǎn)之一是它不適用于蒙皮網(wǎng)格(主要是骨架),因?yàn)樗鼈兪莿?dòng)態(tài)的并且隨著每一幀(變形/移動(dòng)等)而改變其形狀。因此,需要為每一幀創(chuàng)建這些對(duì)象的 BVH 結(jié)構(gòu),而 Lumen 的 SW 光線追蹤器無(wú)法做到這一點(diǎn)。Lumen SW 在運(yùn)行時(shí)只為靜態(tài)網(wǎng)格創(chuàng)建一次 BVH 對(duì)象,這大大加快了進(jìn)程,但對(duì)于動(dòng)態(tài)網(wǎng)格卻毫無(wú)用處。
Lumen 還帶有硬件光線追蹤,但大多數(shù)開(kāi)發(fā)人員會(huì)堅(jiān)持使用前者,因?yàn)榧词故褂?RT 內(nèi)核等專用硬件,它也比 SW 實(shí)現(xiàn)慢 50% 。此外,您也不能使用硬件光線追蹤或蒙版網(wǎng)格來(lái)重疊網(wǎng)格,因?yàn)樗鼈儠?huì)大大減慢光線遍歷過(guò)程。如上所述,軟件光線追蹤基本上將所有相互重疊的網(wǎng)格合并到一個(gè)距離場(chǎng)中。
總的來(lái)說(shuō),Lumen 看起來(lái)很驚人,但它的主要缺點(diǎn)是它僅限于 Unreal 5。這意味著與 NVIDIA DLSS 類似,它永遠(yuǎn)不會(huì)看到與其他開(kāi)源技術(shù)(FXAA、SMAA 甚至 TAA)相同的采用量.?從好的方面來(lái)說(shuō),它應(yīng)該允許許多獨(dú)立工作室利用這種先進(jìn)的 GI 技術(shù),而無(wú)需付出太多努力。此外,它還將推動(dòng)其他主要引擎(最著名的是 CryEngine、Frostbyte、Dunia 和 Snowdrop)提出他們自己優(yōu)化的、基于軟件的光線追蹤器,這些光線追蹤器適用于所有硬件。
五棟大樓 翻閱整理 2022 8.15
標(biāo)簽: 光線追蹤 虛幻引擎 具體地說(shuō) UBISOFT 1440P