來源:騰訊游戲學堂
光線追蹤可以說是近些年游戲行業最熱門的技術之一,對比傳統的3D渲染,它為我們帶來了更為逼真的陰影與反射效果,讓游戲畫面呈現更為真實的視覺體驗。但目前光追的普遍應用仍是在PC端,對于廣大的移動端玩家來說,所需要的并不只是硬件的升級,還需要更多軟件的支持。
針對這一痛點,在由騰訊游戲學堂舉辦的TGDC2022騰訊游戲開發者大會上,來自Imagination Technologies公司的圖形技術美工專家Alekos Caporali就以從業者的角度,為我們分享了手游光線追蹤的技術實現原理、工作流程與優點。
以下是演講實錄:我是Alekos Caporali,我是Imagination Technologies公司演示團隊的圖形技術美工專家。
首先請允許我簡單介紹一下我所在的公司——Imagination Technologies。在過去的30年時間里,我們一直致力于設計GPU并且在在移動設備有很強大的表現大,同時,我們也為臺式、汽車和許多其他應用市場提供IP技術在一些最早的主機游戲中就有我們的技術,例如世嘉公司的Dreamcast。正是有了這些經驗,我們有機會從2007年起開創硬件光線追蹤研究的先河。如今,我們已成為移動GPU領域和移動硬件光線追蹤領域的引領者。
并非所有的光線追蹤硬件都一樣,因此,在評估不同解決方案的性能時我們需要考慮幾個要點。為了幫助識別現代硬件中不同等級的光線追蹤能力,我們設計了一張圖表。每上升一個等級,對效率的關注就會提高,市場并非總是基于效率而變化。
比如說最近發布了帶有光線追蹤功能的第二代臺式電腦硬件,僅提供更多的光線追蹤處理便提高了性能,這自然需要更大面積的硅片和更多的功耗,但這種粗暴的方法并非是可行的解決方案,因為有些移動設備等需要在功耗預算內運行。
今天我不會詳細介紹這里顯示的所有等級,但大家需要明白,0級和1級是以前的解決方案,如今已經很少見了,它們是開啟光線追蹤的初級解決方案;2級和3級最流行,也就是當今常用的基于軟件的光線追蹤;最后是我們今天要集中討論的兩個等級。
4級在層次型包圍盒上增加了相干性排序的硬件,也是目前移動硬件光線追蹤的最佳實現方式,這是我們公司GPU中的硬件光線追蹤技術。
然后是5級,也是由我們公司開發的更先進的系統,并在2016年首次展示于PowerVR GR6500測試板,BVH處理也是通過專門的硬件解決方案來分類,這也更有效。
我們公司研究出了基于以下方式提高效率的系統——一個表面上反彈角度一致的光線會被排在一起,因此稱為相干性排序,這種技術以智能的方式優化整個光線分選過程,減少硬件運行的壓力,這使得其成為非常適合的移動解決方案。
讓我們進入正題,本次演講我會分為兩個部分。
第一部分,我會給大家演示如何實現全光線追蹤,解釋其背后的一些功能,并就如何創建針對游戲中光線追蹤的資源提供建議。
第二部分,我會給大家展示我們最新的光線追蹤,它完全建立在O3DE的游戲引擎上,該引擎可以輕松實現實時光線追蹤的全局光照。我會指導大家完成不同步驟,以便讓大家能夠首先了解RTGI的功能,使其在游戲引擎中起作用。
我們在之前的演示中是如何實現光線追蹤的呢?
我要播放的一個我們公司開發的產品的演示,以便展示我們如何實現完全光線追蹤。在明顯的移動端游戲環境中,有針對移動性能預算的優化功能。這個演示視頻在我們內部引擎上運行。
以防大家還不了解,我先介紹一下光線追蹤的概念。光線追蹤其實是改變游戲規則的3D圖形技術,它模仿了光線在現實世界中的行動方式,而我們將要看到的僅僅展示了其部分能力。我們一起來看這段演示視頻。這是我們在2020-2021年開發的,它在移動預算中實現了光線追蹤的大部分功能。
大家可以在這張圖片上看到概要情況。
首先,不同材質表面形成了逼真的反射(紅框中),硬邊的光柵化陰影替換成了光線追蹤軟陰影(綠框中),這極大地增強了場景的真實性,最后還有實時全局光照(黃框中)。
如何助力環境光以實現與現實生活中一樣更好更真實的效果?現在我們了解了光線追蹤能夠提供的主要功能,但這對我們技術美工和開發人員來說意味著什么?
對我們這些想實現這些功能的人來說意味著什么?我們在資源創建工作流程中需要改變哪些部分以使資源在開啟光線追蹤的引擎中正確地可視化?最重要的一點是:這是否很難做到?
好消息是這一流程與大家所習慣的流程幾乎別無二致!
只是更注重了一些細節——防止光線追蹤時可能出現惱人的偽影,稍后我會深入講解。
現在我先談模型優化。
光線追蹤的性能顯然也取決于場景的復雜性和模型的復雜性,所以在建模時需要注意——
首先要保持低多邊形數量,管理拓撲結構使其干凈平衡(這取決于你真正需要的網格細節數量);然后使用平滑組讓低多邊形的邊緣有正確的法線投影;最后,合理分割紋理資源,防止顏色滲出。在需要的情形下,可以通過多紋理疊加來降低紋理尺寸。有了以上要點,再適當使用精細模型,就可以制作出高質量的資源,渲染出完美的畫質。
第二組主題是繼續深入研究功能技術實現,比如說動畫,特別是攝像機動畫,這些動畫在光線追蹤環境中緩慢移動時效果更好,這是因為光線追蹤陰影和光線追蹤反射的去噪器有時需要聚合。
最后我想談談在為(PBR)物理材質生成紋理時需要采取的方法,也是在光線使用方面強度較低的一種。大家可以先看看這個演示視頻。正如大家所看到的一樣,它大大地改進了移動視頻游戲的總體外觀。
展示了該功能的外觀后,我最后會更為詳細地介紹RTGI如何工作,還會向大家展示如何輕松地在現代游戲引擎中實現這一功能。我將在O3DE中實現,這個引擎也用來做演示。在了解如何設置和激活該功能之前,我們需要先了解什么是真正的光線追蹤全局光照,以及它在現實生活和引擎中如何運行。我首先要說的是全局光照在游戲引擎中并非全新系統,我們經常看到全局光照作為單一的烘焙實例來實現,但是新的游戲引擎的真正創新之處在于:只有通過光線追蹤才能做到這一點,那就是實時計算全局光照系統。有了RTGI 這個系統完全動態化,對光的幾何形狀作出反應,在場景中材質實時發生變化。大家在這段視頻中可以看到全局光照在實時適應引擎視窗內的材質變化。
值得一提的是,RTGI旨在再現現實生活中的物理現象,從一個物體上反彈的光線會很自然地動態擴散到附近其他物體上。通過簡單的演示,我可以很容易地向大家展示它在現實世界中如何工作。如果我打開手機的手電筒,將手電筒直接對準一個藍色物體,從該物體擴散出來的光被藍色色調所覆蓋;要是我對準一個紅色物體,擴散的光線便是紅色色調。我們可以再看一下并注意以下區別:第一個物體和第二個物體所散射的光線之間存在差異。
那游戲引擎又是如何在軟件中使用光線追蹤技術來實現同樣的結果的呢?那便是使用“擴散式探針”。場景中基本上布滿了探針的光柵,光線追蹤在每個探針周圍投下數百條光線,擴散式探針檢測光線與附近幾何體的相交位置,并根據這些信息產生輻照度紋理,然后把這些信息投射到幾何體上,傳播光線的強度和顏色。這發生在實時激活探針和取消激活的整個場景中,根據活動幾何體的位置達到優化目的。
我們現在來看看這個系統如何幫助增強環境光的真實性。RTGI有幾個好處:第一,O3DE中的動態全局光照可以在同一場景中同時考慮到多個光源,對于提供光線追蹤的大家來說,它可以實時計算;第二,它也可像普通全局光照一樣烘焙;第三,它在活動光線方面非常省錢,不需要很高的預算便能正常工作;第四,還有一個好處是非常容易實現。那我們如何做到這一點?在開放3D中需要進入關卡添加新的組件,這就是漫反射全局光照。你可以直接設置系統質量,我選擇中等。然后可以創建新的實體或對象作為全局光照的容器,我將其重命名為全局光照。隨后,你需要在這個實體中添加新的組件。也就是漫反射探針光柵,它將決定環境中探針的光柵。但如果不定義邊界就無法工作,所以我將新的立方體作為一個定義,設置立方體的尺寸和立方體在三維空間中的位置,而這實際上已足以開啟可視化全局光照了。現在可以激活探針可視化了。也許我們可以開始在環境中更好地分配探針,我將采用1.5米x 1.5米的間距。最后可以設置偏置,可以設置每個探針的光線數量,我選擇144條光線來優化這一功能。這基本上是在O3DE等游戲引擎中激活全局光照所需要做的一切。大家現在已經能夠理解RTGI的基本功能了,并最終知道如何在新的游戲引擎中實現。
最后,我想提一下光線追蹤系統的前景,即我們的下一步探索方向是什么?目前,我們公司的開發者和技術美工都還在充分探索這種支持光線追蹤的系統。但幸運的是,我們能更容易地接受這種技術和相關的知識,我們公司正努力讓光線追蹤技術盡快在移動設備中被大家使用。相信在不久的將來,游戲玩家、技術美工、開發者和工程師能使用和享受這種技術。我們看到移動游戲行業有著光明的未來,或許也可以說是光線追蹤有著光明的未來,這讓我們滿懷期待!
-
imagination
+關注
關注
1文章
574瀏覽量
61374 -
光線追蹤
+關注
關注
0文章
183瀏覽量
21503
發布評論請先 登錄
相關推薦
評論