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