虛幻引擎中的實時光線追蹤(一):起源

遊資網發表於2019-10-15
自從2018年3月在GDC首次公開以來,虛幻引擎中的實時光線追蹤技術在過去的18個月裡已經有了長足進步,而且還在繼續發展。本文概述了它從原型程式碼到經過實測的免費功能的歷程,我們將在其中講述這種技術的發展以及未來的進步空間。

言歸正傳,什麼是光線追蹤?

首先還是讓我們快速給出光線追蹤的定義,並概要論述它與光柵化的區別,後者是實時光線追蹤出現前在遊戲引擎中使用的傳統渲染方法。

光線追蹤是一種決定在最終渲染中每個畫素顏色的方法,它以攝像機為出發點,追蹤光線在場景中到處反射的路徑,在此過程中收集並儲存顏色。因為它模擬了光的實際行為,所以能提供比光柵化逼真得多的結果,例如柔和的、帶細節的陰影,以及來自螢幕外物體的反光。

另一方面,光柵化的工作方式是在場景中從後向前繪製物體,通過變換矩陣將3D物體對映到2D平面。它根據網格體上儲存的資訊(顏色、紋理、法線),結合場景中的光照來確定每個畫素的顏色。通常它要比光線追蹤快得多,但無法描繪出真實反光、半透明和環境光遮蔽等依賴反射光照的效果。

技術催化劑

光線追蹤已經被追求極致真實影像的人們在故事長片中使用了幾十年。但是直到最近,對達到影視級解析度的一幀畫面進行光線追蹤運算還需要幾個小時甚至幾天時間。以24幀/秒(fps)或更高速度渲染光線追蹤畫面是難以想象的。

後來同時出現了兩種改變業界格局的技術:微軟的 DXR(DirectX光線追蹤)框架和英偉達的RTX平臺。Epic Games與英偉達和ILMxLAB合作,在GDC 2018上通過我們的Reflections技術演示短片首次展示了實時光線追蹤技術,出演該短片的是《星球大戰:最後的絕地武士》中的角色。

虛幻引擎中的實時光線追蹤(一):起源
“Reflections”中的影像

這部短片演示了紋理區域光源、光線追蹤區域光源陰影、光線追蹤反光、光線追蹤環境光遮蔽、影視級景深和NVIDIA GameWorks光線追蹤降噪——全部都是實時執行的。由於虛幻引擎綜合採用了多種方法,不能受益於光線追蹤的通道將繼續使用光柵化技術,大大提高了整體效能。

虛幻引擎中的實時光線追蹤(一):起源
光線追蹤區域光源陰影

這時候該技術處於發展初期。虛幻引擎原始程式碼尚未對使用者提供;實時執行該演示短片所需的硬體是一臺裝有四個Tesla V100 GPU的NVIDIA DGX工作站,其價位在100000美元左右——因此無論軟體還是硬體,都不是普通使用者所能企及的。

實時光線追蹤的平民化

5個月以後,在SIGGRAPH 2018上,我們再次與英偉達合作,並聯手保時捷,推出了實時電影式體驗“The Speed of Light”保時捷911超跑概念短片。在摩爾定律的影響下,這個演示只需要兩塊NVIDIA Quadro RTX顯示卡——當時每塊的售價超過6000美元,仍然是一筆相當大的投資,但已經明顯比先前的配置便宜了。

虛幻引擎中的實時光線追蹤(一):起源
“The Speed of Light”中的影像

除了先前演示的功能外,The Speed of Light還展現了光線追蹤半透明和透明塗層著色模型,以及彌散全域性光照。團隊除了製作短片,還創作了一個互動式演示來展現場景的實時性。

光陰如箭,轉眼就到了今年3月的GDC 2019,我們已經做好了在虛幻引擎4.22中以測試版形式提供光線追蹤功能的準備。為了展示這種技術在12個月裡的進步有多大,我們的合作伙伴Goodbye Kansas和Deep Forest Films創作了一部以數字化人物為主的實時短片Troll。

虛幻引擎中的實時光線追蹤(一):起源
“Troll”中的影像

Troll的複雜程度比Reflections高出一個數量級。雖然兩者都是以24 fps速度執行,但Troll有6200萬個三角形,而Reflections只有500萬個,前者有16個光源,後者只有4個,前者的光線追蹤通道是以全1080p解析度渲染的,而Reflections是按折半解析度渲染並放大的。Troll還需要對粒子進行光線追蹤,以及與虛幻引擎電影攝製管道中的其他基本元件(包括Alembici幾何體快取、毛髮和皮膚)進行互操作。雖然包含這許多特性,Troll卻只用了一塊NVIDIA RTX 2080 Ti顯示卡渲染,它的當前售價是1199美元。

虛幻引擎中的實時光線追蹤(一):起源
“Troll”中螢幕空間反光(左)和光線追蹤反光(右)的對比

如今,相關軟體已經包含在虛幻引擎中免費提供,顯示卡的需求也不會讓使用者破產,實時光線追蹤已經成為人人可用的技術。

虛幻引擎4.23中的光線追蹤

當我們為了在虛幻引擎中首次實現光線追蹤而努力寫程式碼時,微軟在對DXR框架做最後的調整,而英偉達也在開發新的硬體和驅動程式。此外,為了支援光線追蹤,我們對渲染管道進行了重大重構。在SIGGRAPH 2019上預覽的虛幻引擎4.23中,我們下功夫處理了這兩種因素造成的不穩定問題。

我們還改進了許多方面的效能,包括天空通道、全域性光照和降噪。降噪對於實時光線追蹤很重要,因為我們能夠追蹤的光線數量的預算是非常有限的。

虛幻引擎中的實時光線追蹤(一):起源
在Evil Eye Pictures製作的短片“emergence”中,全域性光照得到了很好的運用

我們還實現了交叉著色器,使使用者能夠支援自己的Primitive型別,並渲染毛髮或不規則碎片等複雜幾何體。我們已經開始著手支援多個GPU;在4.23中新增的低層次支援可控制由哪個GPU來渲染某個通道。我們還會繼續支援更多材質和幾何體型別,包括地形幾何體、例項化靜態網格體、程式性網格體和Niagara Sprite粒子。

UE4中實時光線追蹤的發展道路

我們還沒有大功告成!Epic的團隊仍在努力改進我們的實現。雖然我們的4.23版已經在效能和穩定性方面取得巨大進步,但我們還需要在這些方面做許多工作才能使這一功能正式達到產品級標準。不過,我們有太多使用者不在乎這一點,他們正在開心地把當前的測試版程式碼用於實際作品。他們正在替我們對這些程式碼進行壓力測試,這讓我們很高興,我們內部的《堡壘之夜》動畫團隊也在做著同樣的事,他們確實一直在鞭策著我們。

先前提到過,我們已經在4.23中新增低層次的多GPU支援,不過我們希望大大提高它的“即插即用”性。另外我們也始終在致力於支援更多幾何體型別。最有挑戰性的例子之一就是帶場景位置偏移的植物葉子——這對於某些效果是必需的,比如葉子被風吹動——我們正在努力研究某些辦法。

如果你想對我們迄今為止的工作有更深入的瞭解,請看一看這個SIGGRAPH 2019上的技術講座。

https://www.youtube.com/watch?v=ObjsnVw0QBY&feature=youtu.be

我們要感謝所有已經在虛幻引擎中嘗試過實時光線追蹤並積極向我們提供寶貴反饋的人。如果你還沒有嘗試過,何不馬上下載最新的虛幻引擎呢?我們希望聽到你的想法。


來源:虛幻引擎
原文:https://mp.weixin.qq.com/s/LqId4v1Z6jdrxrZTzMEiNw

相關文章