什么是光線追蹤,它是如何啟用實(shí)時(shí)3d圖形
我們周圍的世界充滿了太陽(yáng)或其他人造光源所發(fā)出的數(shù)十億種光線。當(dāng)光線擊中物體和物體表面時(shí),光線以各種方式反彈、斷裂和反射,直到它們最終到達(dá)我們的眼睛;正是這種復(fù)雜的互動(dòng)創(chuàng)造了我們對(duì)現(xiàn)實(shí)的看法。光線追蹤是一種三維圖形的照明技術(shù),模仿現(xiàn)實(shí)世界的方法,雖然它產(chǎn)生了最現(xiàn)實(shí)的結(jié)果,但這一過(guò)程傳統(tǒng)上過(guò)于復(fù)雜,計(jì)算機(jī)無(wú)法實(shí)時(shí)生成3d圖形。
如今,它被廣泛用于為廣告和電影制作超現(xiàn)實(shí)的畫(huà)面,但在這些情況下,即使是在當(dāng)今強(qiáng)大的計(jì)算機(jī)服務(wù)器上,也需要花費(fèi)數(shù)小時(shí)來(lái)生成每一個(gè)畫(huà)面。射線追蹤是一個(gè)流行詞,它可以產(chǎn)生大量的興奮(或大肆宣傳,視你的觀點(diǎn)而定),作為實(shí)時(shí)圖形的前進(jìn)之路。在這篇文章中,我們研究了射線追蹤,以及是什么使它成為現(xiàn)實(shí)。
減少問(wèn)題
在3d游戲中,世界是由物體組成的,如果結(jié)合起來(lái),它由數(shù)百萬(wàn)個(gè)三角形組成。射線追蹤的最基本功能是發(fā)出光線,沿著它的路徑穿過(guò)3D世界,找到它到達(dá)的第一個(gè)物體,以確定該如何照明。即使是用每一個(gè)場(chǎng)景中的物體來(lái)測(cè)試一個(gè)光線,看它們是否相互交叉,都是效率太低,計(jì)算成本太高,無(wú)法實(shí)時(shí)應(yīng)用。
為了使用射線追蹤,我們需要解決這個(gè)問(wèn)題。
利用場(chǎng)景層次結(jié)構(gòu)將這只兔子分成幾個(gè)盒子
這可以通過(guò)建立射線追蹤加速度結(jié)構(gòu)來(lái)實(shí)現(xiàn)。為了做到這一點(diǎn),我們?cè)谟螒蚴澜缰挟?huà)了一個(gè)盒子,然后我們將它細(xì)分為更小的盒子,然后再將那些盒子細(xì)分為更小的盒子,直到我們最終擁有一個(gè)小盒子,里面包含可以控制的三角形數(shù)量。我們稱之為場(chǎng)景層次結(jié)構(gòu),正是這個(gè)幫助我們將問(wèn)題減少到當(dāng)前圖形處理器能夠有效處理的東西。
它之所以有效,是因?yàn)楫?dāng)我們向游戲世界發(fā)送光線時(shí),我們首先在最大的盒子上檢查光線。光線會(huì)擊中我們的世界嗎?如果是的話,我們會(huì)檢查下一級(jí)別的小盒子。在這個(gè)階段,我們發(fā)現(xiàn)我們的射線已經(jīng)穿透了一些盒子,而不是其他的。因此,我們排除了它所錯(cuò)過(guò)的東西,只深入到被光線擊中的盒子里,直到我們找到光線與三角形交叉的地方。在這一點(diǎn)上,我們最終找到了目標(biāo)。
這種分層結(jié)構(gòu)使我們能夠找到最近的光線和三角形的交叉點(diǎn),而不必測(cè)試場(chǎng)景中的每一個(gè)三角形。它大大簡(jiǎn)化了問(wèn)題,因此可以更快地完成。
在硬件完成動(dòng)畫(huà)化對(duì)象工作的幾何處理階段之后,我們將這些三角形輸入到一個(gè)名為"場(chǎng)景層次生成器"的專門硬件中,它生成了上面描述的加速度結(jié)構(gòu)。我們還增加了一些專用的射線/盒/三角測(cè)試器,它們是專用的固定功能硬件,通過(guò)這種加速度結(jié)構(gòu)來(lái)追蹤光線,并定位射線和三角形的交點(diǎn)。與使用可編程的軟件管道相比,在專用硬件中完成所有這些工作要快得多,面積更大,效率更高。
那么,一旦硬件確定光線擊中三角形,下一步是什么?所發(fā)生的是,我們觸發(fā)了一個(gè)片段著色器,一個(gè)小程序,它決定了該三角形特定位置的顏色,這一步驟與傳統(tǒng)的呈現(xiàn)基本相似。通過(guò)這個(gè)片段著色程序,我們將更多的光線發(fā)送到3D世界,當(dāng)這個(gè)過(guò)程被重復(fù)時(shí),它建立了我們的光線追蹤場(chǎng)景。
連貫性問(wèn)題
但現(xiàn)在我們有了新問(wèn)題。我們正在向現(xiàn)場(chǎng)發(fā)送大量的射線,但是我們?nèi)绾斡行У靥幚硭羞@些?我們需要從我們的內(nèi)存中的加速度結(jié)構(gòu)中獲取盒子和三角形,每個(gè)光線每次擊中一個(gè)物體時(shí)都會(huì)觸發(fā)一個(gè)片段程序。
不幸的是,光線是不穩(wěn)定的東西,它們不一定是朝同一方向移動(dòng)的。從技術(shù)上講,我們將其描述為不連貫--這是個(gè)問(wèn)題。不連貫的數(shù)據(jù)訪問(wèn)是不良的現(xiàn)代GPS。這有點(diǎn)像試圖在字母表中查找信息,但是這些名字是完全隨機(jī)地給我們的--提示我們來(lái)回閃爍,占用寶貴的時(shí)間和寶貴的精力。
射線追蹤加速度結(jié)構(gòu)
更糟糕的是,當(dāng)光線在周圍隨機(jī)反彈時(shí),它們也會(huì)擊中不同的物體和三角形,這些物體需要不同的顏色和陰影,這將觸發(fā)不同的著色程序。然而,GPS喜歡以并行的方式處理著色器。這正是GPS強(qiáng)大的地方:他們能夠以大規(guī)模并行的方式處理數(shù)據(jù),這使他們比CPU等其他處理器更有優(yōu)勢(shì)。這是因?yàn)樗麄兊乃阈g(shù)邏輯單元(Alus)本質(zhì)上是單個(gè)指令、多個(gè)線程(Simt)。如果每一個(gè)射線觸發(fā)一個(gè)不同的著色器,它將不會(huì)工作在一個(gè)GPU上,因?yàn)檫@將需要一個(gè)多重指令,多個(gè)線程(MIMT)架構(gòu),這是硅面積和功率效率低下。
一種解決辦法是通過(guò)想象技術(shù)開(kāi)發(fā)出的連貫性引擎,它追蹤光線,并在場(chǎng)景中所有光線的混亂中找到秩序。
如果你觀察圖片(下面),光線最初可能看起來(lái)是隨機(jī)的。然而,如果你更仔細(xì)地看,你會(huì)注意到,實(shí)際上,有一致性。
為了解釋,請(qǐng)注意物體的某些部分是如何反映同一個(gè)黃色物體的。盡管表面上看起來(lái)很混亂,但一些射線正朝著同一個(gè)方向運(yùn)動(dòng),并擊中類似的物體。我們的一致性引擎尋找這一點(diǎn),將這些射線分類成組,從而使它們更容易處理的GPU。這就是"魔力",因?yàn)槲覀冎匦芦@得數(shù)據(jù)訪問(wèn)和執(zhí)行效率,從而降低了處理中的功率和帶寬。
混合繪制的好處
這太棒了,我們現(xiàn)在可以追蹤光線,并且有效地進(jìn)行。然而,正如我們之前所說(shuō)的,現(xiàn)實(shí)在周圍反射了數(shù)十億的光線,使我們的眼睛看到的圖像,所以即使我們的效率提高了,使用射線追蹤創(chuàng)造了一個(gè)完整的場(chǎng)景,仍然是個(gè)問(wèn)題。答案是什么?混合繪制。
雖然傳統(tǒng)的光柵化繪制今天做得很好,但它與空間相互作用,如光/影,反射和折射--正是光線追蹤擅長(zhǎng)的復(fù)雜事物。通過(guò)混合繪制,我們抓住了兩個(gè)世界中最好的東西,用光柵化處理簡(jiǎn)單的物體,然后從我們的著色器中選擇性地產(chǎn)生有限數(shù)量的空間射線跟蹤查詢,以產(chǎn)生超現(xiàn)實(shí)的陰影、照明效果和精確的反射。通過(guò)使用這種混合方法,我們大幅度地減少了我們需要追蹤的射線數(shù)量,這最終使我們進(jìn)入了實(shí)時(shí)性能的領(lǐng)域。
雷追蹤電話:真的有可能嗎?
簡(jiǎn)單的回答是是。如今智能手機(jī)中的gp自首次推出以來(lái),不僅在功能集方面,而且在現(xiàn)實(shí)世界中的性能方面都取得了巨大的進(jìn)步。事實(shí)上,高端智能手機(jī)已經(jīng)突破了TFLOPS計(jì)算障礙,這是以前專用游戲機(jī)的唯一領(lǐng)域。這里真正的問(wèn)題是效率。智能手機(jī)依賴于電池壽命,由于射線追蹤比傳統(tǒng)的繪制方法更有效,它很有可能很快被添加到移動(dòng)體驗(yàn)中。
利用上述的創(chuàng)新,想象力使有效的射線追蹤成為可能。在智能手機(jī)中,在游戲中假裝陰影和反射的成本已經(jīng)很高了。在現(xiàn)代游戲引擎中,如統(tǒng)一或不真實(shí),反射是使用級(jí)聯(lián)陰影映射生成的。這就需要多次繪制屏幕的幾何形狀,并將陰影映射查找表寫(xiě)入內(nèi)存,所有這些都需要周期和帶寬,耗費(fèi)大量的GPU和系統(tǒng)力量。
通過(guò)光線追蹤,我們向光源發(fā)送一個(gè)光線,如果光線擊中光以外的任何東西,我們知道碎片在陰影中。使用我們的流線型超優(yōu)化射線追蹤解決方案,這要簡(jiǎn)單得多,因此比級(jí)聯(lián)陰影映射所需的預(yù)處理功率更低。
在分析2016年的原型射線追蹤硬件時(shí),我們發(fā)現(xiàn),對(duì)于陰影、反射和其他技術(shù),功率消耗往往不到一半,由此產(chǎn)生的質(zhì)量更高。這里的認(rèn)識(shí)是,一種復(fù)雜但"假冒"的技術(shù)比簡(jiǎn)單的射線追蹤更消耗能量,這提供了更現(xiàn)實(shí)的結(jié)果,使它不僅適合而且可取于現(xiàn)代高端智能手機(jī)。
人工智能和超分辨率
雖然基于智能手機(jī)的射線追蹤是一種選擇,但我們同樣為云游戲日益流行而興奮,這是由于5G網(wǎng)絡(luò)和邊緣計(jì)算的增長(zhǎng)所支撐。在這里,我們的光線追蹤架構(gòu)所支持的帶寬和功率效率可能是至關(guān)重要的。
創(chuàng)新總是需要以更少的成本提供更多的產(chǎn)品,因此,我們對(duì)人工智能加工的快速進(jìn)步感到非常興奮。再加上神經(jīng)網(wǎng)絡(luò),這些可以與射線追蹤相結(jié)合,從而提供更高的效率。例如,由于我們只是為了提高效率而追蹤相對(duì)較多的射線,我們可能會(huì)得到較多的結(jié)果。神經(jīng)網(wǎng)絡(luò)顯示出巨大的希望,減少噪音填補(bǔ)缺失的細(xì)節(jié),使用學(xué)習(xí)的"智能"。同樣,這也是現(xiàn)實(shí)的運(yùn)作方式,因?yàn)槲覀兊拇竽X也填補(bǔ)了我們有限的人類視覺(jué)系統(tǒng)留下的許多空白。
神經(jīng)網(wǎng)絡(luò)可以用來(lái)提高質(zhì)量,而不必轉(zhuǎn)移到更高的分辨率
另一個(gè)巨大的潛在概念是超分辨率。這再次利用了神經(jīng)網(wǎng)絡(luò)的力量,這一次聰明地學(xué)習(xí)如何填補(bǔ)缺失的細(xì)節(jié),使GPS能夠在較低的分辨率呈現(xiàn),從而提高性能和減少耗電,同時(shí)仍然保持視覺(jué)質(zhì)量。
未來(lái)
毫無(wú)疑問(wèn),實(shí)時(shí)射線追蹤有著光明的未來(lái),這無(wú)疑是對(duì)3D圖形感興趣的人興奮的時(shí)刻。由于它基于現(xiàn)實(shí)世界的物理學(xué),射線追蹤提供了最高水平的現(xiàn)實(shí)主義,但它也提供了很高的效率,相對(duì)于我們迄今為止一直在使用的黑客和近似。低功率光柵化圖形,開(kāi)拓性的射線追蹤工作,以及在人工智能和神經(jīng)網(wǎng)絡(luò)中持續(xù)的創(chuàng)新,所有這些結(jié)合起來(lái),幫助將圖形提升到下一個(gè)層次。