閆 潤(rùn),黃立波,郭 輝,王永鑫,張?chǎng)武?,張鴻?/p>
國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院,長(zhǎng)沙410073
渲染是將三維場(chǎng)景的描述轉(zhuǎn)換為二維圖像的過程。在動(dòng)畫[1-2]、電影特效[3]、高端游戲[4]、幾何建模、紋理處理等應(yīng)用中都必須通過某種形式的渲染過程傳遞3D 場(chǎng)景的結(jié)果。渲染主要包括光柵化(rasterization)[5]和光線追蹤[6]兩種方式。光柵化渲染采用局部光照原理,根據(jù)光源照射到物體上直接可見的光照效果,將場(chǎng)景中的幾何圖元映射到圖像的像素點(diǎn)上。這種方式用硬件實(shí)現(xiàn)較為簡(jiǎn)單,且便于并行處理,通常用作實(shí)時(shí)渲染處理。光線追蹤采用全局光照模型,通過物理原理對(duì)光線和物質(zhì)之間的交互行為進(jìn)行建模,不僅考慮直接光照的效果,也考慮物體間相互光照影響,比傳統(tǒng)的光柵化渲染效果更加立體,色彩更柔和更逼真,通常用于離線渲染處理。兩種渲染方式的區(qū)別如圖1 所示。
圖1 光柵化與光線追蹤Fig.1 Rasterization and ray tracing
由于光線追蹤渲染計(jì)算量巨大且非常耗時(shí),實(shí)時(shí)光線追蹤存在很多挑戰(zhàn)。首先,光線追蹤算法需要迭代測(cè)試光線與場(chǎng)景圖元是否相交,并計(jì)算光線與圖元的最近交點(diǎn),這個(gè)計(jì)算量是巨大的;其次,光線的反射和折射會(huì)產(chǎn)生大量的二次光線(secondary rays),這些光線隨著迭代次數(shù)的增加會(huì)變得越來越不連續(xù)(incoherent),不規(guī)則的內(nèi)存訪問會(huì)導(dǎo)致帶寬的瓶頸。針對(duì)這些問題,研究者做了大量的工作,為給后續(xù)研究者提供參考。本文從商用光線追蹤平臺(tái)、算法優(yōu)化、硬件優(yōu)化三方面綜述光線追蹤的發(fā)展,并對(duì)未來可能的研究方向做出展望。
1979 年Whitted[6]利用光線的可逆性,提出了光線追蹤算法。這個(gè)算法模擬真實(shí)的光照效果,在場(chǎng)景中的光線與物體相交后會(huì)因反射、折射和陰影等產(chǎn)生二次光線,二次光線再次到場(chǎng)景中進(jìn)行相交測(cè)試。如此進(jìn)行迭代計(jì)算,直到光線的反彈次數(shù)達(dá)到預(yù)期設(shè)置的值。
光線追蹤的本質(zhì)在于尋找與光線相交的最近物體。為了加快遍歷速度,最初的方式是有規(guī)律地劃分空間網(wǎng)格(grid)[7-8],但這種方法存在著空間劃分不合理、冗余計(jì)算較多等問題。在后續(xù)的研究中提出加速數(shù)據(jù)結(jié)構(gòu)(acceleration structure)的概念,其思路是將場(chǎng)景中的圖元?jiǎng)澐值讲煌姆謱涌臻g結(jié)構(gòu)(hierarchical spatial structure)中,在這種結(jié)構(gòu)下,可以快速剔除那些不相關(guān)的空間,進(jìn)而識(shí)別出與光線最接近的圖元?,F(xiàn)在廣泛應(yīng)用在學(xué)術(shù)界和工業(yè)界的是一種樹形數(shù)據(jù)結(jié)構(gòu),樹的葉節(jié)點(diǎn)包含所有場(chǎng)景圖元,樹的內(nèi)部節(jié)點(diǎn)用于將一個(gè)較大的空間表示細(xì)分為多個(gè)較小的空間區(qū)域kd-tree[9]或?qū)?chǎng)景中的對(duì)象分解為更小的對(duì)象集合BVH(bounding volume hierarchy)[10]。為簡(jiǎn)化運(yùn)算,通常采用軸對(duì)齊邊界框(axis-aligned bounding box,AABB)進(jìn)行場(chǎng)景的劃分。
kd-tree 之前被認(rèn)為是最適合光線追蹤的加速數(shù)據(jù)結(jié)構(gòu)[11],但由于kd-tree 在判斷包圍盒與圖元是否有交集等方面存在的局限性,越來越多的研究?jī)A向于使用BVH。相比kd-tree,BVH 有著可預(yù)測(cè)內(nèi)存、更好的魯棒性、更有效的遍歷和多變的構(gòu)建算法等[12]優(yōu)勢(shì),使得BVH 成為離線和實(shí)時(shí)渲染領(lǐng)域應(yīng)用的標(biāo)準(zhǔn)加速數(shù)據(jù)結(jié)構(gòu)。
現(xiàn)代計(jì)算機(jī)、移動(dòng)平臺(tái)和游戲機(jī)使用GPU 進(jìn)行渲染,為滿足日益增長(zhǎng)的視覺需求,GPU 已經(jīng)成為最強(qiáng)大的單芯片計(jì)算單元。GPU 通常分為兩類,通用GPU 和移動(dòng)端GPU,這兩種GPU 是針對(duì)不同應(yīng)用場(chǎng)景和硬件資源約束下設(shè)計(jì)的。前者允許更高的硬件開銷來追求高性能,而后者需要考慮能耗開銷的限制。目前,NVIDIA 和AMD 是高端通用GPU 的兩大廠商,Intel 在中低端GPU 市場(chǎng)占有相當(dāng)大的份額。移動(dòng)端GPU 市場(chǎng)主要包括Imagination Technologies(Power VR)、ARM(Immortalis)和Qualcomm(Snap-Dragon)等。本文選擇NVIDIA Ampere 架構(gòu)[13]、AMD RDNA 2 架 構(gòu)[14]和Imagination PowerVR Photon 架 構(gòu)[15]進(jìn)行介紹。
NVIDIA 于2018 年在Turing 架構(gòu)[16]中推出初代RT core,RT core 被集成到Turing 架構(gòu)的流多處理器(streaming multiprocessors,SM)中。在2021 年推出的Ampere 架構(gòu)[13]對(duì)初代RT core 進(jìn)行了升級(jí),該架構(gòu)的GPU 集成了84 個(gè)二代RT core,相對(duì)于初代RT core,光線與三角形相交測(cè)試的速率提升了一倍。二代RT core見圖2[13]。
圖2 二代RT coreFig.2 The second generation of RT core
兩代支持光線追蹤的GPU 均采用多指令多數(shù)據(jù)流(multiple-instruction,multiple-data,MIMD)架構(gòu)。RT core 可以執(zhí)行BVH 的遍歷以及光線與三角形相交測(cè)試,光線從流多處理器發(fā)送到RT core,RT core獲取并解碼BVH 的內(nèi)存,使用專用的硬件測(cè)試每條光線與BVH 的相交,判斷出當(dāng)前節(jié)點(diǎn)是內(nèi)部節(jié)點(diǎn)或是葉子節(jié)點(diǎn),如此迭代有選擇地找到最近的交點(diǎn)。確定合適的交點(diǎn)后,將結(jié)果返回到流多處理器進(jìn)行進(jìn)一步處理。二代RT core 中增加了差值三角形位置單元,主要用于光線追蹤中的運(yùn)動(dòng)模糊[17]功能。NVIDIA 推出的深度學(xué)習(xí)超級(jí)采樣(deep learning super sampling,DLSS)[18]技術(shù)結(jié)合GeForce RTX GPU上的Tensor Core,利用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)來提高幀率,將視覺保真度提升至全新高度。
2020 年,AMD 不僅在游戲中引入了對(duì)實(shí)時(shí)光線追蹤的支持,而且還發(fā)布了RX 6000 系列的三款GPU。與此同時(shí),引入一些RDNA 2 架構(gòu)設(shè)計(jì)的關(guān)鍵元素來實(shí)現(xiàn)這一功能,為了提高光線追蹤的性能,在核心計(jì)算單元設(shè)計(jì)中加入了光線加速器(ray accelerator)[14],該加速器是用于處理光線相交計(jì)算的專用硬件。RX 6600 XT 集成28 個(gè)光線加速器,2022 年推出RX 6950 XT 集成80 個(gè)光線加速器。RDNA 2 架構(gòu)采用了AMD Infinity Cache 的高效緩存技術(shù),能夠以低功耗和低延遲提供卓越的帶寬性能,整個(gè)顯卡核心均可訪問這個(gè)全局高速緩存。除此之外,還采用了AMD FidelityFXTMSuper Resolution(FSR)[19]的優(yōu)化升級(jí)技術(shù),能夠在無需用戶升級(jí)顯卡的情況下幫助提高部分游戲的幀率,帶來高質(zhì)量、高分辨率的游戲體驗(yàn)。
2016 年,Imagination 公司推出了世界上首個(gè)滿足實(shí)時(shí)光線追蹤的加速器專用芯片。2021 年,Imagination 將PowerVR Photon 架構(gòu)[15]的光線加速集群(ray acceleration cluster,RAC)加入到C 系列的GPU中,為手機(jī)市場(chǎng)提供光線追蹤的IP 技術(shù)。
在IMG CXT 中,使用RAC 來完成所有的光線追蹤活動(dòng),示意圖可見圖3[15]。本文對(duì)RAC 的主要模塊進(jìn)行簡(jiǎn)要說明。每個(gè)RAC 包含多個(gè)光線測(cè)試單元(ray testing units),也即框圖中的BTU(box tester unit)、DTTU(dual triangle tester unit)和PTU(procedural tester unit),這個(gè)模塊主要完成光線和BVH 的遍歷和光線與圖元的測(cè)試。為了提高執(zhí)行效率,在硬件上設(shè)計(jì)了高度并行的“雙三角形測(cè)試(DTTU)單元”,可以同時(shí)進(jìn)行光線對(duì)兩個(gè)三角形的相交測(cè)試,并將測(cè)試結(jié)果用于過程性測(cè)試單元(procedural tester unit),過程性測(cè)試單元主要用于與API 的交互著色;光線存儲(chǔ)(ray store)單元用于保證RAC 中所有單元的高帶寬讀寫訪問;連續(xù)光線束收集(packet coherence gather)單元主要用來分析所有活躍的光線,并創(chuàng)造軌跡相似的連續(xù)(coherence)光線的分組,這里涉及到光線重排序的概念,具體內(nèi)容將在本文3.3 節(jié)中進(jìn)行描述。光線任務(wù)調(diào)度(ray task scheduler)單元主要負(fù)責(zé)RAC 與GPU 的交互以及RAC 內(nèi)部各處理階段之間的協(xié)調(diào)通信。Power VR 架構(gòu)包括許多受專利保護(hù)的創(chuàng)新,其中包括延遲渲染(tile-based deferred rendering,TBDR)技術(shù)、Imagination 圖像壓縮(IMGIC)技術(shù)、去中心化多核(decentralised multi-core)技術(shù)等。
圖3 Imagination PowerVR RAC 架構(gòu)Fig.3 Architecture of imagination PowerVR RAC
Imagination Power IMG CXT 的GPU 分為單核和多核兩款,分別應(yīng)用于移動(dòng)端配置和非移動(dòng)端配置,峰值性能可以達(dá)到1.3 Gray/s和7.8 Gray/s。
表1 列出了三款GPU 的詳細(xì)對(duì)比數(shù)據(jù)??梢钥闯?,AMD RX 6900 XT 系列光線加速器與NVIDIA GeForce RTX30 系列RT core 相比在光線追蹤功能上相似,但RT core 已經(jīng)是第二代產(chǎn)品,在技術(shù)和架構(gòu)上都有了很多改進(jìn),包括使用GPU 中的Tensor Core 利用DLSS 技術(shù)擴(kuò)展性能,這使得RT core 比AMD 的光線加速器實(shí)現(xiàn)更高效、更強(qiáng)大的光線追蹤性能。AMD 的RX 6950 XT 采用了更先進(jìn)的工藝,具有更高的時(shí)鐘頻率。NVIDIA 的GeForce RTX 3090 Ti 擁有更強(qiáng)大的性能和幾乎兩倍的內(nèi)存帶寬。另一個(gè)主要區(qū)別是功耗,NVIDIA 的GPU 比AMD 的多出115 W的功率。除此之外,二者的價(jià)格差距也非常明顯,NVIDIA GeForce RTX 3090 Ti 價(jià)格約為AMD RX 6950 XT 價(jià) 格 的1.7 倍。Imagination PowerVR 架 構(gòu) 主要面向移動(dòng)端的IP 市場(chǎng),相對(duì)于兩款桌面系統(tǒng)的GPU 性能稍差,但是由于其架構(gòu)的優(yōu)異性,可以預(yù)見,將來會(huì)廣泛應(yīng)用在移動(dòng)端市場(chǎng)。
表1 支持光線追蹤GPU 的比較Table 1 Comparison of supporting ray tracing GPU
由于光線追蹤算法需要遞歸地檢查光線與加速數(shù)據(jù)結(jié)構(gòu)和圖元的相交,最終找到與光線相交最近的圖元,這個(gè)過程運(yùn)算量大耗時(shí)長(zhǎng)。為滿足實(shí)時(shí)性需求,研究者提出了基于硬件架構(gòu)的算法優(yōu)化方法,包括光線束并行、無棧遍歷、光線重排序和多分支BVH 等。另一方面,將降噪技術(shù)和神經(jīng)網(wǎng)絡(luò)技術(shù)與光線追蹤相結(jié)合,可以實(shí)現(xiàn)更好的交互性和實(shí)時(shí)性。
在早期利用單指令多數(shù)據(jù)流(single-instruction,multiple-data,SIMD)架構(gòu)進(jìn)行光線遍歷的方法中,光線束是最簡(jiǎn)單的并行組織形式,將多條光線當(dāng)作一個(gè)光線束,調(diào)度到GPU 的線程束(warp)或CPU 的不同線程中進(jìn)行處理,不同光線共享遍歷棧。因此同一個(gè)光線束遍歷的順序是一致的。只要其中的一條光線與某個(gè)節(jié)點(diǎn)相交,那么整個(gè)光線束都遍歷該節(jié)點(diǎn)的子樹,如圖4 所示。光線會(huì)訪問一組節(jié)點(diǎn),包括它們不相交的節(jié)點(diǎn),如果光線的連續(xù)性很好,那么這種方式性能會(huì)十分理想,但是如果連續(xù)性較差,那么執(zhí)行效能會(huì)因?yàn)槿哂嗟挠?jì)算大打折扣,此外該方式的性能也受到內(nèi)存帶寬的限制。
圖4 光線束遍歷Fig.4 Ray packet traversal
Wald等[20]使用CPU 的SSE(streaming SIMD extensions)向量指令最早提出了光線束的遍歷算法,連續(xù)光線和陰影光線性能得到了巨大提升。Boulos 等[21]主要探索在BVH 作為加速數(shù)據(jù)結(jié)構(gòu)的情況下,將二次光線分成陰影光線、反射光線和折射光線三種光線束來進(jìn)行光線追蹤,使得光線束的組合更加合理,性能得到較大的提升。Gunther 等[22]采用了BVH 在GPU 上進(jìn)行光線束的并行處理,同時(shí)利用GPU 快速構(gòu)建BVH,通過實(shí)驗(yàn)結(jié)果來看,渲染速度在1 024×1 024 的分辨率下,可以達(dá)到3 FPS(frame per second)。Mansson 等[23]探索了使用不同的方式來重新組織光線束的連續(xù)性,并在研究中限制4×4 光線束,僅在文獻(xiàn)[24]中的算法使用。Overbeck 等[25]在總結(jié)優(yōu)化先前研究成果基礎(chǔ)上,提出了一種32×32 光線束的更寬遍歷范圍的優(yōu)化算法。Aila等[26]使用NVIDIA GTX285 GPU 對(duì)各類光線追蹤算法進(jìn)行了測(cè)試。實(shí)驗(yàn)數(shù)據(jù)表明,由于連續(xù)的內(nèi)存訪問,在訪問少量冗余節(jié)點(diǎn)的情況下,光線束的性能可能會(huì)達(dá)到模擬的最佳性能,但實(shí)際性能不如預(yù)期。一種可能的解釋是即使連續(xù)光線性能也受到內(nèi)存帶寬的限制,或者也可能是在實(shí)踐中未能充分發(fā)揮架構(gòu)的運(yùn)算能力。Benthin 等[27]提出將光線束遍歷和單條光線遍歷的方式相結(jié)合,根據(jù)光線束的利用率在兩種方式之間進(jìn)行切換。Fuetterling等[28]結(jié)合向量指令提出了一種新穎的單條光線遍歷的WiVe 算法,將這個(gè)算法作為塊來構(gòu)建基于光線束的遍歷用于處理連續(xù)光線。相較于經(jīng)典的光線束遍歷的方式,該方式采用了區(qū)間運(yùn)算(interval arithmetic,IA)的方式減少了包圍盒相交測(cè)試的次數(shù)。根據(jù)他們的工作,總結(jié)光線束遍歷方法如表2 所示。
表2 光線束遍歷的方法Table 2 Methods of ray packet traversal
無棧遍歷算法是光線追蹤中常用的技術(shù)。這種算法的提出源于GPU 或CPU 中有限的寄存器空間,棧的編程復(fù)雜度和定制化硬件單元有限的片上存儲(chǔ)資源。無棧的遍歷算法帶來了兩點(diǎn)好處:一是按照特定的格式構(gòu)造加速數(shù)據(jù)結(jié)構(gòu)在遍歷時(shí)可以減少內(nèi)存的訪問;二是無棧的遍歷算法在GPU 平臺(tái)可以提高并行度,提升計(jì)算性能。但通常需要在加速數(shù)據(jù)結(jié)構(gòu)中設(shè)置標(biāo)記位或進(jìn)行冗余操作才可以完成無棧遍歷。
Smits[29]提出了無棧的方法,使用跳躍指針(skip pointers)的方式將傳統(tǒng)子節(jié)點(diǎn)的連接替換成命中(hit)或未命中(miss)的連接,在遍歷的過程中,選擇合適的連接。在當(dāng)時(shí)的硬件體系結(jié)構(gòu)中獲得了大幅度的加速,但該方法導(dǎo)致代碼的復(fù)雜度顯著提升。Foley 等[30]最早提出了兩種基于kd-tree 的無棧遍歷方法:kd-restart 以及kd-backtrack。其中kd-backtrack 實(shí)現(xiàn)較為復(fù)雜,因此并不常用,之后的許多研究基于kdrestart 進(jìn)行改進(jìn),兩種算法雖然都實(shí)現(xiàn)了遍歷加速數(shù)據(jù)結(jié)構(gòu),但是大量的重復(fù)節(jié)點(diǎn)遍歷,導(dǎo)致效率并不理想。Thrane 等[31]采用BVH 作為加速數(shù)據(jù)結(jié)構(gòu),指出無棧的遍歷方式會(huì)促進(jìn)GPU 的高效實(shí)現(xiàn),但是受制于算法對(duì)訪存帶寬的需求,性能提升仍是有限的。Popov 等[32]提出了可以顯著提升GPU 性能的基于光線束的無棧算法。在這種算法中,采用繩索(ropes)將節(jié)點(diǎn)進(jìn)行連接。該算法在迭代遍歷的過程中,光線束中的一些光線可能不活躍,但是在遞歸返回父節(jié)點(diǎn)時(shí),會(huì)再次激活這些光線。Laine[33]采用了無堆棧的重啟軌跡技術(shù),其主要思路是從根節(jié)點(diǎn)多次遍歷,跳過之前訪問過的子樹,然后繼續(xù)訪問尚未訪問的子樹。為了做到這一點(diǎn),每個(gè)層次結(jié)構(gòu)設(shè)置一位,在遍歷時(shí)設(shè)置一組短棧,當(dāng)短棧不能被彈棧時(shí),遍歷會(huì)重啟。Hapala 等[34]提出了一種新的迭代遍歷算法,這個(gè)算法基于三種狀態(tài),為每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)父指針,使用簡(jiǎn)單的邏輯狀態(tài)推斷下一步要遍歷的節(jié)點(diǎn)。這就意味著整個(gè)BVH 不但可以從上到下遍歷,還可以通過父節(jié)點(diǎn)方向回溯,結(jié)合標(biāo)記可以到達(dá)對(duì)應(yīng)的上一個(gè)待遍歷的節(jié)點(diǎn)。如圖5 所示,當(dāng)遍歷完當(dāng)前節(jié)點(diǎn)C之后,假設(shè)遍歷過程中記錄了節(jié)點(diǎn)C是較近的節(jié)點(diǎn),那么需要遍歷節(jié)點(diǎn)F,因此可以通過讀取父節(jié)點(diǎn)來得到節(jié)點(diǎn)F的地址后繼續(xù)遍歷。如果當(dāng)前節(jié)點(diǎn)是較遠(yuǎn)的,可知節(jié)點(diǎn)N已經(jīng)遍歷過了,再根據(jù)父節(jié)點(diǎn)做類似的決策。但是這樣的算法缺點(diǎn)是顯而易見的,即每次回溯都需要讀取父節(jié)點(diǎn)的數(shù)據(jù),會(huì)造成冗余的讀寫操作。Binder 等[35]提出了一種具有恒定時(shí)間回溯的高效無棧算法。其主要思路是設(shè)置位集(bitset)來保存編碼的當(dāng)前節(jié)點(diǎn)路徑,遍歷的路徑是顯式存儲(chǔ)的。為了在恒定時(shí)間回溯,作者提出了使用完美哈希表將編碼路徑轉(zhuǎn)換為節(jié)點(diǎn)索引的方法。Vaidyanathan 等[36]在文獻(xiàn)[33]的基礎(chǔ)上將加速數(shù)據(jù)結(jié)構(gòu)擴(kuò)展到多分支BVH 無棧遍歷的光線追蹤應(yīng)用中。光線追蹤的無棧算法主要相關(guān)工作的總結(jié)與分析如表3 所示。
圖5 無棧遍歷Fig.5 Stackless traversal
表3 無棧算法的比較Table 3 Comparison of stackless approaches
現(xiàn)代光線追蹤技術(shù)如路徑追蹤由于漫反射和光澤反射會(huì)產(chǎn)生越來越不連續(xù)的光線。光線束的遍歷方法也需要連續(xù)的光線才能夠保證高性能。此外不連續(xù)的光線會(huì)造成更高的內(nèi)存帶寬、更高的cache 缺失率和計(jì)算分支。光線重排序的方法可以在一定程度上緩解這一問題。
通過不同的方法可以實(shí)現(xiàn)不連續(xù)光線的重排序,其中運(yùn)用最廣泛的是將多維光線空間映射到使用標(biāo)準(zhǔn)排序算法排序鍵的一維空間,這個(gè)方法主要包括如下幾種實(shí)現(xiàn)方式:(1)源點(diǎn)。按照源點(diǎn)對(duì)光線進(jìn)行重排序是最簡(jiǎn)單的辦法,形成一個(gè)3D 空間填充曲線,得到的子集有一致的源點(diǎn),但這種方法排序的光線方向可能會(huì)大相徑庭。(2)源點(diǎn)-方向。Reis 等[37]將方向的低位排到鍵中來參數(shù)化方向,使用這個(gè)鍵來對(duì)相同的源點(diǎn)進(jìn)行排序,而后整合到同一個(gè)光線子集中,這個(gè)子集的光線個(gè)數(shù)是由排序鍵中表示分配的位數(shù)來確定。這種技術(shù)提高了光線的連續(xù)性,但是如果使用太多位數(shù)排序方向,光線的子集可能會(huì)覆蓋整個(gè)方向范圍。(3)方向-源點(diǎn)。該方法是源點(diǎn)-方向的一種替代方法,由Costa 等[38]提出主要用于陰影光線(shadow)和環(huán)境光遮蔽(ambient occlusion)排序,這種技術(shù)解決了排序鍵中方向和源點(diǎn)位數(shù)分配的問題。(4)源點(diǎn)-方向交叉。Aila 等[39]利用該技術(shù)研究了追蹤不連續(xù)光線的行為。該策略采用排序鍵交替編碼了源點(diǎn)和方向,因此它對(duì)于源點(diǎn)或方向占據(jù)的位數(shù)并不敏感。(5)兩點(diǎn)鍵排序。該方法由Moon 等[40]提出,主要通過光線源點(diǎn)和終點(diǎn)來對(duì)光線進(jìn)行排序來增強(qiáng)它們的連續(xù)性。這種劃分方法會(huì)導(dǎo)致空間中不相交的光線子集重疊更小。但問題在于排序鍵需要知道光線的終點(diǎn)。(6)估計(jì)終點(diǎn)。Meister等[41]提出了兩種估計(jì)終點(diǎn)的方法。第一種是設(shè)置恒定的比例(0.25)來估計(jì)光線的長(zhǎng)度,另一種是基于自適應(yīng)緩存之前的追蹤路徑的長(zhǎng)度,而后采用一個(gè)空間哈希表來評(píng)估?;谏鲜鰩追N評(píng)估方法,文獻(xiàn)[41]采用RTX 2080Ti GPU 進(jìn)行了性能測(cè)試比較??梢园l(fā)現(xiàn),通過光線重排序的方法使用DirectX[42]性能可以提高1.4 到2.0 倍,OptiX[43]可以提高1.3 到1.9 倍。不同方式在相同硬件下測(cè)算性能可見表4[41]。由于對(duì)光線排序需要大量的運(yùn)算,在實(shí)踐中收益可能不如表中的數(shù)據(jù)明顯。由此可以看出,設(shè)計(jì)定制化的光線重排序硬件將對(duì)實(shí)時(shí)光線追蹤產(chǎn)生深遠(yuǎn)的意義。
表4 不同方法光線重排序效率比較Table 4 Performance comparison of different approaches for ray reorder
為了解決非連續(xù)光線的問題,研究人員提出了多分支(wide)BVH 的概念,該方法在每次遍歷時(shí)只處理一條光線,在遍歷某個(gè)節(jié)點(diǎn)時(shí),加載某個(gè)子節(jié)點(diǎn)數(shù)據(jù)的同時(shí),光線可以同時(shí)跳去處理另外一個(gè)子節(jié)點(diǎn),這樣的方式可以隱藏訪存延時(shí)。隨著子節(jié)點(diǎn)變寬,樹的節(jié)點(diǎn)變小,棧的深度也減少。如果所有子節(jié)點(diǎn)的序號(hào)是連續(xù)的,那么棧只需要記錄第一個(gè)序號(hào)和有效子節(jié)點(diǎn)的數(shù)量即可,因此也可以起到節(jié)省棧內(nèi)存的作用。圖6 以八叉樹為例說明這種優(yōu)化方式,可以看出這樣的算法訪存效率也會(huì)比較高,因?yàn)楸瘸R?guī)二叉樹包含更少的內(nèi)部節(jié)點(diǎn)。但是這樣的加速數(shù)據(jù)結(jié)構(gòu)面臨新的問題,對(duì)于多分支樹,確定遍歷需要比二叉樹更多的比較和交換運(yùn)算,造成巨大硬件資源的開銷,此外還有一個(gè)缺陷就是多分支BVH 可能包含太多的空槽,每個(gè)節(jié)點(diǎn)也需要一個(gè)標(biāo)記位來記錄哪些節(jié)點(diǎn)是它的子節(jié)點(diǎn),隨著分支的增多,標(biāo)記位需要占據(jù)更多的內(nèi)存。
圖6 八叉BVH 遍歷Fig.6 8-wide BVH traversal
電影《賽車總動(dòng)員(cars)》[44]是皮克斯公司使用光線追蹤的第一部動(dòng)畫作品,該動(dòng)畫采用了多分支包圍盒的方式進(jìn)行渲染。Wald 等[45]和Aila 等[26]做了多分支樹的探索,但是僅將一條光線分配到幾個(gè)線程中。Ernst 等[46]首次提出了多個(gè)BVH(multi bounding volume hierarchies,MBVH)的概念。該算法將高度為2 的子樹折疊為存儲(chǔ)4 個(gè)BVH 的SIMD 節(jié)點(diǎn),另外還需要每個(gè)葉節(jié)點(diǎn)都恰好包圍4 個(gè)三角形,很好地提高了數(shù)據(jù)處理的并行性,使用CPU 處理對(duì)于隨機(jī)光線追蹤可以有2.8 倍的加速。Guthe[47]合并了四叉BVH,在NVIDIA Kepler和Fermi架構(gòu)下,將不連續(xù)的光線性能提高20%。Ylitie 等[48]提出了一種壓縮八叉BVH 的概念,這種設(shè)計(jì)可以減少內(nèi)存帶寬,主要是將子節(jié)點(diǎn)邊界量化到一個(gè)局部網(wǎng)絡(luò),在NVIDIA Maxwell 和Pascal 架構(gòu)下將不連續(xù)光線的性能提高3.3倍。Benthin 等[49]引入了專用的壓縮葉子節(jié)點(diǎn),通過只壓縮葉子節(jié)點(diǎn),降低了訪存的需求,但是性能下降。Lier 等[50]在GPU 上使用模擬了傳統(tǒng)應(yīng)用在CPU上遍歷的方法,分別測(cè)試了二叉樹、四叉樹和八叉樹光線追蹤的性能。這種方法使得GPU 上可以簡(jiǎn)單地實(shí)現(xiàn)各種寬度的BVH,同時(shí)會(huì)在不連續(xù)光線的實(shí)現(xiàn)上提高性能。
隨著最新GPU 實(shí)時(shí)光線追蹤解決方案的出現(xiàn),在降噪領(lǐng)域的研究也逐步興起。目前的降噪技術(shù)主要是基于蒙特卡洛的渲染技術(shù)進(jìn)行解決。蒙特卡洛渲染是基于隨機(jī)樣本的累積來近似給定場(chǎng)景光線追蹤結(jié)果的算法。目前降噪技術(shù)主要包括濾波技術(shù)、機(jī)器學(xué)習(xí)驅(qū)動(dòng)的濾波器、改進(jìn)采樣和近似技術(shù)等。
圖像濾波技術(shù)是在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制。McGuire 等[51]提出全局光照效果下球的邊界處會(huì)產(chǎn)生可見的不連續(xù)性,在有限球體內(nèi)使用3D 高斯衰減函數(shù)可平滑光照;Park 等[52]認(rèn)為雙邊濾波由于可以同時(shí)考慮圖像的空域信息(domain)和值域信息(range),用于光線追蹤的降噪會(huì)取得較好的效果;Dammertz 等[53]提出了àTrous 濾波的降噪方式,這個(gè)方法利用蒙特卡洛計(jì)算的半球積分可能與相鄰像素的半球積分非常相似的事實(shí),使用à-Trous小波變換對(duì)全噪聲圖像進(jìn)行運(yùn)算,產(chǎn)生的結(jié)果接近于每個(gè)像素點(diǎn)具有更多采樣點(diǎn)的方案;Schied 等[54]提出了一種基于低采樣進(jìn)行重構(gòu)圖像的時(shí)空差異導(dǎo)向?yàn)V波器(spatiotemporal varianceguided filtering,SVGF),結(jié)合時(shí)間和空間上的信息一起做濾波,根據(jù)歷史幀信息引導(dǎo)當(dāng)前幀的濾波。Mara 等[55]結(jié)合中值濾波的方式消除蒙特卡洛渲染圖像的部分模糊和單采樣點(diǎn)的“螢火蟲”現(xiàn)象。Rousselle 等[56]在蒙特卡洛渲染中使用非局部均值濾波的方法迭代降噪。這種方法是一款基于特征的濾波器。
機(jī)器學(xué)習(xí)驅(qū)動(dòng)的濾波器效果通常比傳統(tǒng)的濾波器更優(yōu)。Kalantari 等[57]認(rèn)為基于特征的濾波器在噪聲場(chǎng)景和理想濾波器參數(shù)之間存在著復(fù)雜的關(guān)系,因此采用非線性回歸模型來學(xué)習(xí)這種關(guān)系,使用多層感知機(jī)神經(jīng)網(wǎng)絡(luò),同時(shí)在訓(xùn)練和測(cè)試期間將其與匹配濾波器相結(jié)合,經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)驅(qū)動(dòng)的濾波器參數(shù)可以生成近似基準(zhǔn)圖像的效果。Vogels 等[58]提出了一種用于降噪渲染圖像噪聲的模塊卷積架構(gòu),主要通過將內(nèi)核預(yù)測(cè)網(wǎng)絡(luò)與一些特定任務(wù)的模塊相結(jié)合,并使用非對(duì)稱損失優(yōu)化這一組合體,從而擴(kuò)展了內(nèi)核預(yù)測(cè)網(wǎng)絡(luò)的功能。Xu 等[59]提出一種對(duì)抗性的蒙特卡洛降噪方法,生成對(duì)抗性網(wǎng)絡(luò)通過從一組高質(zhì)量蒙特卡洛光線追蹤圖像中學(xué)習(xí)分布,幫助降噪網(wǎng)絡(luò)生成更真實(shí)的高頻細(xì)節(jié)和全局照明效果。
Yang 等[60]對(duì)隨機(jī)采樣反鋸齒算法(temporal antialiasing,TAA)進(jìn)行了綜述,指出用TAA 的時(shí)間濾波器可以有效去除以極低采樣率渲染的光線追蹤路徑的噪聲,但無法從根本上消除噪聲。Schied 等[61]提出了一種新的基于時(shí)間的濾波器,可以隨著時(shí)間的推移分析信號(hào),從而得到每個(gè)像素的自適應(yīng)時(shí)間累積因子,并重新調(diào)整著色采樣的子集,以稀疏采樣重構(gòu)時(shí)間梯度。Koskela 等[62]提出了一種新的基于回歸的重構(gòu)流水線,叫作分塊多階特征回歸(blockwise multi-order feature regression,BMFR),專門針對(duì)1 spp(sample per pixel)輸入的實(shí)時(shí)光線追蹤,相比其他的重構(gòu)方法速度快1.8 倍,同時(shí)生成更好的渲染質(zhì)量。
除此之外,還有通過近似技術(shù)優(yōu)化光線追蹤算法的實(shí)現(xiàn)。NVIDIA 在RTX 全局光照(RTXGI)[63]采樣探針(probe)的數(shù)據(jù)結(jié)構(gòu)中,進(jìn)行實(shí)時(shí)計(jì)算和過濾照明與距離信息,構(gòu)建具有可見性信息的高質(zhì)量多次反彈照明緩存,主要通過光線追蹤中的低頻近似,為實(shí)時(shí)應(yīng)用程序提供了質(zhì)量和性能之間的理想平衡。近年來已經(jīng)運(yùn)用到商業(yè)游戲引擎中[64]。不同降噪技術(shù)的主要區(qū)別如表5 所示。
表5 降噪技術(shù)的比較Table 5 Comparison of denoising techniques
基于神經(jīng)網(wǎng)絡(luò)的實(shí)時(shí)光線追蹤技術(shù)除在降噪方面表現(xiàn)出強(qiáng)勁勢(shì)頭外,還可以用于圖像的重構(gòu)、神經(jīng)輻射場(chǎng)(neural radiance fields,NeRF)優(yōu)化、光線采樣和圖像超分辨率上采樣等技術(shù)。
Chaitanya 等[65]采 用RNN(recurrent neural network)和自動(dòng)編碼器的神經(jīng)網(wǎng)絡(luò)方式,提出了一種適合蒙特卡洛渲染中噪聲類別的網(wǎng)絡(luò)變體,能夠考慮更大的像素域,自動(dòng)編碼器可以完成圖像的降噪和重構(gòu)。Hofman 等[66]利用神經(jīng)自適應(yīng)采樣技術(shù),對(duì)光線追蹤進(jìn)行降噪和重構(gòu),可在單GPU上以1 920×1 080的分辨率交互運(yùn)行。Kettunen 等[67]利用卷積神經(jīng)網(wǎng)絡(luò)提出了一種新的梯度域渲染重構(gòu)方法,實(shí)驗(yàn)結(jié)果顯著提高了光線追蹤渲染中梯度域的質(zhì)量,效果比使用其他降噪技術(shù)更優(yōu)。
Verbin 等[68]結(jié)合NeRF 技術(shù)無法準(zhǔn)確渲染光滑表面的情況,引入Ref-NeRF 的方式來解決這一情況,它用反射輻射的表示代替了NeRF 的視覺相關(guān)輸出輻射的參數(shù)化,并使用空間變化的場(chǎng)景屬性集合來構(gòu)造函數(shù),該模型顯著提高了鏡面反射的真實(shí)性和準(zhǔn)確性。
Dahm 等[69]證明了增強(qiáng)學(xué)習(xí)方程和光傳輸模擬方程是相關(guān)的積分方程,基于這一對(duì)應(yīng)關(guān)系,推導(dǎo)出了一種在采樣路徑空間時(shí)學(xué)習(xí)重要性的方案。主要是通過增強(qiáng)學(xué)習(xí)的Q-Learning 方式學(xué)習(xí)光線追蹤路徑散射的重要性采樣,對(duì)零貢獻(xiàn)的光采樣大大減少,進(jìn)而能夠在固定的時(shí)間內(nèi)生成噪聲更少圖像。
Dong 等[70]提出了一種單圖像超分辨率(superresolution,SR)的深度學(xué)習(xí)方法,采用直接學(xué)習(xí)低/高分辨率圖像之間端到端的映射,還擴(kuò)展了神經(jīng)網(wǎng)絡(luò)以同時(shí)處理三個(gè)彩色通道,生成更好的圖像質(zhì)量。Ledig 等[71]提出了一種用于圖像超分辨率的生成性對(duì)抗網(wǎng)絡(luò)(super-resolution generative adversarial network,SRGAN),能夠以4 倍放大因子推斷照片級(jí)自然圖像。Xiao 等[72]將基于神經(jīng)網(wǎng)絡(luò)的超分辨率上采樣技術(shù)與實(shí)時(shí)渲染結(jié)合,通過現(xiàn)代渲染器中可用的特定信息(如深度和密度運(yùn)動(dòng)矢量)與一種新穎的時(shí)間網(wǎng)絡(luò)設(shè)計(jì)相結(jié)合,能夠在提供實(shí)時(shí)性能的同時(shí)最大限度地提高渲染質(zhì)量,最高可以支持4×4 的上采樣系數(shù)。Thomas 等[73]將基于機(jī)器學(xué)習(xí)的降噪技術(shù)和超采樣技術(shù)結(jié)合,提出了一種用于實(shí)時(shí)渲染的新型神經(jīng)網(wǎng)絡(luò)架構(gòu),比使用兩個(gè)單獨(dú)的網(wǎng)絡(luò)成本更低,效果優(yōu)于與神經(jīng)網(wǎng)絡(luò)上采樣相結(jié)合的最先進(jìn)的濾波器。在工業(yè)界,NVIDIA 的深度學(xué)習(xí)超級(jí)采樣(DLSS 2.0)[18]和Intel 的Xe 超采樣技術(shù)(XeSS)[74]采用低分辨率輸入重構(gòu)高分辨率的輸出,雖然這些方法的細(xì)節(jié)沒有公開,但目前被廣泛用于實(shí)時(shí)光線追蹤中。與神經(jīng)網(wǎng)絡(luò)結(jié)合的方式及特點(diǎn)如表6 所示。
表6 與神經(jīng)網(wǎng)絡(luò)結(jié)合的技術(shù)Table 6 Techniques combined with artificial neural network
長(zhǎng)期以來,實(shí)時(shí)光線追蹤是研究者們孜孜以求的目標(biāo),但是巨大的計(jì)算強(qiáng)度限制了它在各類場(chǎng)景中的應(yīng)用,研究者們對(duì)如何通過硬件的方式提升性能也進(jìn)行了許多探索,主要包括基于GPU 進(jìn)行光線追蹤和采用定制化的設(shè)計(jì)來進(jìn)行加速。
由于早期的GPU 還不支持通用計(jì)算,光線追蹤在GPU 上實(shí)現(xiàn)難度非常大。Carr 等[75]首次使用了GPU 硬件對(duì)光線追蹤進(jìn)行加速,但僅僅實(shí)現(xiàn)了圖元求交部分。Purcell 等[76]提出了完整的光線追蹤流程,劃分了各個(gè)模塊,從求交直至生成二次光線。由于GPU硬件架構(gòu)限制嚴(yán)重,只支持不帶有分支的kernel,導(dǎo)致功能模塊并不能很好地加速,硬件限制了算法優(yōu)化。此時(shí)以GPU 作為硬件基礎(chǔ)的光線追蹤實(shí)現(xiàn)依舊不及CPU 實(shí)現(xiàn)版本。Aila 等[26]研究并探討了多種在GPU 上實(shí)現(xiàn)光線追蹤的策略,并提出了一種利用常駐線程代替GPU 硬件調(diào)度任務(wù)的技術(shù),測(cè)試結(jié)果顯示,這種技術(shù)比最基本的GPU 光線追蹤策略快2倍。但是,當(dāng)時(shí)的GPU 對(duì)這種常駐線程技術(shù)并不敏感[77]。Hanika 等[78]、Heinly 等[79]、Keely[80]、Vaidyanathan 等[81]、Liktor 等[82]對(duì)光線追蹤的精度要求進(jìn)行了系統(tǒng)研究,提出了一種降低精度和計(jì)算復(fù)雜度且可以集成到GPU 中的解決方案。Lü等[83]提出了在GPU中增加動(dòng)態(tài)光線調(diào)度(dynamic ray shuffling,DRS)的設(shè)計(jì),該設(shè)計(jì)用來解決光線追蹤中控制流分支的問題,主要記錄不同光線的遍歷狀態(tài),分為取數(shù)據(jù)、遍歷BVH 和葉子節(jié)點(diǎn)處理三種。通過DRS 可以將處于相同狀態(tài)的光線調(diào)度到同一線程束(warp)中。通過GPGPU-Sim 模擬器[84]測(cè)試性能,在僅增加0.11%芯片面積的情況下,光線追蹤性能平均可以提升1.79倍。Liu 等[85]結(jié)合當(dāng)前GPU 整合光線追蹤硬件加速單元的實(shí)際,提出了光線相交預(yù)測(cè)器,預(yù)測(cè)執(zhí)行省略了部分的冗余操作,可以使得光線直接與圖元進(jìn)行測(cè)試。該方法主要是設(shè)置了一個(gè)哈希函數(shù)并提供足夠的空間信息來識(shí)別冗余的遍歷。模擬結(jié)果表明在一個(gè)帶有光線追蹤加速單元的移動(dòng)端GPU 上,給流多處理器(streaming multiprocessor)添加5.5 KB 的預(yù)測(cè)器,對(duì)環(huán)境光遮罩(ambient occlusion,AO)的性能可以提升26%。為解決光線追蹤在GPU 大量光線遍歷造成的不規(guī)則內(nèi)存請(qǐng)求的問題,Ni等[86]提出了聚集內(nèi)存和線程調(diào)度(agglomerative memory and thread scheduling)的調(diào)度機(jī)制,該機(jī)制將加速數(shù)據(jù)結(jié)構(gòu)(kd-tree)劃分為子樹,完全加載到流多處理器的片上L1 cache 中,而后將線程重新分組到線程束上進(jìn)行調(diào)度。研究成果可以集成到如今的高端GPU 上,只需要很小的開銷,就可以將性能提升47.4%。不同GPU優(yōu)化方式的比較如表7 所示。
表7 GPU 優(yōu)化方式比較Table 7 Comparison of GPU-based optimization approaches
對(duì)于光線追蹤硬件加速,除了基于GPU 進(jìn)行優(yōu)化實(shí)現(xiàn)的研究,通過專用硬件加速也是一種途徑[87-88]。Fender 等[89]最早在FPGA(field programmable gate array)上實(shí)現(xiàn)了BVH 的遍歷測(cè)試。早期物理渲染專用硬件設(shè)計(jì)主要關(guān)注的是加速單個(gè)光線追蹤,比較有影響的是薩爾蘭大學(xué)的光線處理單元(ray processing unit,RPU)[90]和SaarCOR[91-92]。SaarCOR 和RPU 都是通過FPGA 技術(shù)實(shí)現(xiàn)。SaarCOR 重點(diǎn)關(guān)注光線遍歷和求交運(yùn)算的硬件實(shí)現(xiàn),而RPU 則重點(diǎn)研究光線追蹤的可編程渲染過程的實(shí)現(xiàn)。在后續(xù)研究中,Woop等[93-94]又提出了基于ASIC(application specific integrated circuit)的可處理動(dòng)態(tài)場(chǎng)景的DRPU(dynamic ray processing unit)設(shè)計(jì)實(shí)現(xiàn)。而后Nah 等也提出了專用的光線遍歷和求交單元——T&I 引擎[95],并在此基礎(chǔ)上設(shè)計(jì)了一個(gè)完整的光線追蹤體系結(jié)構(gòu)Ray-Core[96]。Lee 等[97-98]將并行T&I 引擎與三星可重構(gòu)處理器相結(jié)合,設(shè)計(jì)實(shí)現(xiàn)了SGRT(Samsung reconfigurable GPU based on ray tracing),集成了光線生成與著色功能。Nah 等[99]采用混合架構(gòu)的HART,采用專用光線追蹤硬件完成BVH 的更新和光線遍歷,CPU用于重構(gòu)BVH。Kim 等[100-101]提出了一種可重構(gòu)的流多處理器MRTP(mobile ray tracing processor)。Yan等[102]結(jié)合三種優(yōu)化設(shè)計(jì)實(shí)現(xiàn)了一款高效的光線追蹤硬件加速架構(gòu)RT engine。
在并行光線追蹤架構(gòu)方面,Spjut 等[103]為了更好地應(yīng)對(duì)在追蹤二次光線時(shí)產(chǎn)生的光線分支問題,提出了基于多線程MIMD 架構(gòu)的TRaX。Kopta 通過共享cache 和功能單元等硬件資源對(duì)TRaX 架構(gòu)進(jìn)行了優(yōu)化[104]。在隨后的工作中,Kopta 等又對(duì)TRaX 進(jìn)行了重新設(shè)計(jì)并提出STRaTA[105-106],使其根據(jù)子樹[39]來處理光線流,從而提升cache 命中率。Shkurko 等[107]提出雙流(dual streaming)光線追蹤硬件加速器的體系結(jié)構(gòu)設(shè)計(jì),將場(chǎng)景分為場(chǎng)景流和光線流,將內(nèi)存訪問組織成兩個(gè)可以預(yù)測(cè)的數(shù)據(jù)流。這些流的可預(yù)測(cè)性允許完美預(yù)取,使得內(nèi)存訪問模式與DRAM 內(nèi)存系統(tǒng)的行為非常匹配。Vasiou 等[108-109]提出了Mach-RT 的體系結(jié)構(gòu),通過一個(gè)大型片上緩沖區(qū)作為分布在多個(gè)芯片上的存儲(chǔ),最大限度地減少了對(duì)場(chǎng)景數(shù)據(jù)的訪問,擴(kuò)展了雙流的概念,優(yōu)化了主存訪問,使同一內(nèi)存系統(tǒng)可以同時(shí)服務(wù)于多個(gè)處理器芯片。與現(xiàn)有的學(xué)術(shù)和商業(yè)架構(gòu)相比,提高了性能同時(shí)保持著合理的能耗。表8 為不同硬件架構(gòu)的比較。每秒百萬條光線(million rays per second,MRPS)是光線追蹤性能測(cè)試時(shí)常用的計(jì)量單位。
表8 不同光線追蹤架構(gòu)比較Table 8 Comparison of ray tracing architectures
長(zhǎng)期以來,基于光線追蹤的物理渲染被視為提升視覺體驗(yàn)的最有效方法,但是由于過大的計(jì)算強(qiáng)度限制了其在實(shí)時(shí)應(yīng)用領(lǐng)域的使用。近年來,隨著算法研究和硬件技術(shù)的發(fā)展,已經(jīng)處于傳統(tǒng)光柵化渲染方式到消費(fèi)者平臺(tái)實(shí)時(shí)光線追蹤的轉(zhuǎn)折點(diǎn)。但是,基于實(shí)時(shí)光線追蹤的研究還遠(yuǎn)未結(jié)束,目前該領(lǐng)域還有一些關(guān)鍵性的問題有待進(jìn)一步研究。
在圖像真實(shí)感方面,光線追蹤的模型是基于理想模型做光線路徑的模擬,由于真實(shí)場(chǎng)景中光線的折射會(huì)造成能量損失,距離完全真實(shí)地描繪3D 場(chǎng)景還具有一定差距。如果要更進(jìn)一步地模擬光線的傳遞,還需要考慮輻射度量學(xué)的內(nèi)容。除此之外,紋理空間技術(shù)(texture space techniques)、可變速率光線追蹤(variable rate ray tracing)等新穎的提升圖像真實(shí)感技術(shù)如何與光線追蹤技術(shù)相結(jié)合可能是后續(xù)研究的重點(diǎn)方向。在算法和硬件優(yōu)化方面,神經(jīng)網(wǎng)絡(luò)技術(shù)與實(shí)時(shí)光線追蹤結(jié)合愈發(fā)緊密,在降噪處理、圖像重構(gòu)和超分辨率等方面發(fā)展迅速,下一步可能會(huì)引領(lǐng)人們進(jìn)入神經(jīng)網(wǎng)絡(luò)渲染的新時(shí)代。從近年來的研究成果來看,硬件更傾向于“存儲(chǔ)墻”的解決。利用定制的高效光線重排序硬件或者近存計(jì)算等會(huì)成為實(shí)時(shí)光線追蹤進(jìn)一步發(fā)展的突破口。此外,同樣值得研究的是光線追蹤硬件是否可以推廣到其他不規(guī)則應(yīng)用程序的架構(gòu)中,可以充分發(fā)揮現(xiàn)代光線追蹤GPU 架構(gòu)的優(yōu)勢(shì)。