必威电竞|足球世界杯竞猜平台

光線追蹤
來源:互聯(lián)網(wǎng)

光線追蹤(Ray tracing),是在二維屏幕上呈現(xiàn)三維圖像的方法。作為一種圖像合成技術(shù),它通過模擬光線與物體表面的交點來實現(xiàn)圖像的繪制,具有高效率渲染、精確的陰影和光照效果、適用于復(fù)雜場景、真實性好等優(yōu)點。

光線追蹤的發(fā)展始于1968年阿瑟·阿彭海姆(Arthur Appel)提出的光線投射理念。1979年,透納·惠特德(Turner Whitted)在光線投射的基礎(chǔ)上,加入光與物體表面的交互,讓光線在物體表面沿著反射、折射以及散射方式繼續(xù)傳播,直到與光源相交。1984年,斯蒂芬·庫克(Cook)引入蒙特卡洛方法,將經(jīng)典的光線跟蹤方法擴展為分布式光線跟蹤算法,又稱隨機光線追蹤。在前人的研究基礎(chǔ)上,卡吉雅(Kajiya)于1986年進一步建立渲染方程的理論,第一次將渲染方程引入計算機圖形學(xué),并使用它來解釋光能傳輸產(chǎn)生的各種現(xiàn)象。此后,技術(shù)在硬件和算法上不斷優(yōu)化,如使用kd樹加速結(jié)構(gòu),2003年,德國薩爾蘭(SaarLand)大學(xué)提出了業(yè)界首個硬件加速光線追蹤算法方案。2016年,Imagination公司推出了世界上首個滿足實時光線追蹤的加速器專用芯片。2018年8月14日,英偉達發(fā)布了基于圖靈架構(gòu)的Quadro系列圖形卡,并將該系列命名為Quadro RTX家族,這是全球首款支持實時光線追蹤技術(shù)的顯卡。2023年12月,英偉達推出了實時3D創(chuàng)作軟件D5渲染器,增強了光線追蹤性能并提高了實時視窗幀速率

光線追蹤算法通過包圍體方法、空間分剖法、預(yù)處理法等關(guān)鍵方法,光線束遍歷、無棧遍歷、光線重排序等相關(guān)算法提高效率,涉及像素的區(qū)域采樣技術(shù)、像素細分技術(shù)等關(guān)鍵技術(shù)。光線追蹤廣泛應(yīng)用在影視、游戲、建筑、工程和施工產(chǎn)業(yè)(AEC)等領(lǐng)域,但同時存在著效率較低、陰影尖銳、產(chǎn)生噪點等局限。在圖像真實感的提升上,紋理空間技術(shù)和可變速率光線追蹤的結(jié)合是未來的研究方向。同時,神經(jīng)網(wǎng)絡(luò)技術(shù)的融入為實時光線追蹤的硬件優(yōu)化和圖像處理提供了新的可能性,預(yù)示著進入神經(jīng)網(wǎng)絡(luò)渲染新時代的潛在發(fā)展。

相關(guān)概念

基礎(chǔ)概念

光線:光線是表示光的傳播路徑和方向的直線。光線實際是一種幾何的抽象,口語中光線亦可指光源所輻射的光。

光源:光源是指能發(fā)出一定波長范圍的電磁波(包括可見光以及紫外線紅外線、X射線等不可見光)的物體,工業(yè)上通常指能發(fā)出可見光的發(fā)光體

交點:交點指的是捕捉圓弧、圓、橢圓、橢圓弧、直線、多線、多段線、射線、樣條曲線或參照線的交點。

數(shù)學(xué)概念

渲染方程:在計算機圖形學(xué)中,渲染方程描述光能在場景中的流動,是渲染中不可感知方面最抽象的正式表示。渲染方程的物理基礎(chǔ)是能量守恒定律,即在一個特定的位置和方向,出射光是自發(fā)光與反射光線之和,反射光線本身是各個方向的入射光之和乘以表面反射率入射角。根據(jù)光學(xué)原理,渲染方程在理論上代表了場景中全部的光線傳輸。

立體角:立體角(Solid Angle)是描述輻射能向空間發(fā)射、傳輸或被某一表面接收時的發(fā)散或會聚的角度,定義為以錐體的基點為球心作一球表面,錐體在球表面上所截取部分的表面積和球半徑的平方之比。

光線方程:幾何光學(xué)中把光看作是在真空或介質(zhì)中傳播的光線,其軌跡遵循的數(shù)學(xué)方程,公式為。式中為空間點矢徑,為空間折射率分布,表示空間曲線微分元。在變折射率介質(zhì)中傳播的光,路徑通常是曲線,具體形式取決于介質(zhì)的空間折射率分布和光線的初始入射條件,可根據(jù)具體的情況由光線方程進行分析。很多光學(xué)系統(tǒng)的設(shè)計基本依據(jù)光線方程來進行。

光的傳播與衰減:光是一種電磁波,是一種以波狀的形式輻射出來的物質(zhì),以每秒鐘30萬公里的速度運行。在水里的速度是真空的3/4,在玻璃里的運行速度約占真空速度2/3,人們通常把這種光的行進狀態(tài)稱為光的傳播。從光源的位置到其最大的作用距離,光強度逐漸減弱,這被稱為光衰減。

相位函數(shù):相位這一物理概念被廣泛用于波動隨時間變化的特征以及某一時間點波動位置的分析和比較。在周期性振動時其變化屬性都可以用時間的周期函數(shù)來描述。簡諧振動是最簡單的正弦信號,可以用最簡單的三角函數(shù)表述為,其中是一個與時刻直接相關(guān)的弧度函數(shù),稱為相位函數(shù)。

雙向反射分布函數(shù):當(dāng)物體表面的某一“小塊”受到沿著方向的光的照射時,沿著方向看過去,該小塊的輻射強度與該小塊所受到的輻照強度之間的比值,被稱為雙向反射分布函數(shù)。

歷史沿革

起源

作為光線追蹤算法中的第一步,光線投射(Ray Casting)理念最早于1968年由阿瑟·阿彭海姆(Arthur Appel)在論文“Some techniques for shading machine rendering of solids"(《實體著色機渲染技術(shù)》)中首先提出。其具體思路是視平面上每個像素射出一條射線,直到最近的物體擋住射線路徑,綜合每條射線獲得的物體信息,如位置、色彩、亮度,在視平面上形成圖像。光線投射理念的提出,為光線追蹤的研究奠定了基礎(chǔ)。

1979年,透納·惠特德(Turner Whitted)在光線投射的基礎(chǔ)上,加入光與物體表面的交互,讓光線在物體表面沿著反射、折射以及散射方式繼續(xù)傳播,直到與光源相交。這一方法后來也被稱為經(jīng)典光線跟蹤方法、遞歸式光線追蹤(Recursive Ray Tracing)方法,為光線追蹤提供了算法補充。

算法豐富階段

1984年,斯蒂芬·庫克(Cook)引入了蒙特卡洛方法(Monte Carlo Method),將經(jīng)典的光線跟蹤方法擴展為分布式光線跟蹤算法(Distributed Ray Tracing),又稱隨機光線追蹤,該算法可以模擬更多效果,如金屬光澤、景深、運動模糊等。蒙特卡洛算法并不是一種算法的名稱,而是對一類隨機算法的特性概括。

在前人的研究基礎(chǔ)上,卡吉雅(Kajiya)于1986年進一步建立渲染方程(The Rendering Equation)的理論,第一次將渲染方程引入計算機圖形學(xué),并使用它來解釋光能傳輸產(chǎn)生的各種現(xiàn)象。這一方程描述了場景中光能傳輸達到穩(wěn)定狀態(tài)以后,物體表面某個點在某個方向上的輻射率(Radiance)與入射輻射亮度等的關(guān)系。

1988年,富塞爾(Fussel)和薩勃拉曼尼亞(Subramanian)首次實現(xiàn)了使用kd樹(k dimensional tree)作為加速結(jié)構(gòu)的光線追蹤器。哈夫蘭(Havran)等人在對若干光線追蹤加速結(jié)構(gòu)進行研究比較后發(fā)現(xiàn),對于靜態(tài)渲染場景來說,其數(shù)據(jù)顯示基于kd樹的算法的加速效率最高。

1994年,拉福蒂納(Lafortune)、威廉(Willems)、維奇(Veach)、吉布(Guibas)等人提出雙向路徑追蹤(BPT)算法,BPT除了追蹤視點投射光線的路徑外,還追蹤光源發(fā)射光線的路徑。1997年,Veach將渲染方程改寫成對路徑積分的形式,允許多種路徑采樣的方法來求解該積分。

1997年,埃里克·維奇(Eric Veach)等人提出了梅特波利斯光照傳輸(MLT)算法。路徑追蹤中的一個核心問題就是怎樣盡可能多地采樣一些貢獻大的路徑,而該方法會避開貢獻小的路徑,在貢獻大的路徑附近做更多局部的探索,通過特殊的變異方法,生成一些新的路徑,這些局部的路徑的貢獻往往也很高。與雙向路徑追蹤相比,MLT更加魯棒,能處理各種復(fù)雜的場景。

開發(fā)利用階段

2003年,德國薩爾蘭(SaarLand)大學(xué)提出了業(yè)界首個硬件加速光線追蹤算法方案,基于FPGA的硬件架構(gòu)——SaarCOR,SaarCOR可以實時生成3D場景中高仿真度的畫面。芯片可以通過高效算法實現(xiàn)光線追蹤的實時特效,不過SaarCOR不能單獨工作,它需要一些硬件資源(主要是處理器)以及會占用小部分內(nèi)存帶寬。在2005年的SIGGRAPH大會上他們展示了第一個實時光線追蹤加速硬件——RPU(Ray Processing Unit)。RPU原型機采用FPGA技術(shù)制造,核心頻率運行在66MHz,內(nèi)存帶寬也只有350MB/S。RPU跟GPU一樣都是完全可編程架構(gòu),能夠提供對材質(zhì)、幾何以及光照等的實時編程支持。

2008年,英偉達的盧貝克(luebke)等人實現(xiàn)了基于CUDA的交互式光線追蹤,2010年推出了通用的光線追蹤引擎Optix。

2016年,Imagination公司推出了世界上首個滿足實時光線追蹤的加速器專用芯片。2018年,NVIDIA在Turing架構(gòu)中推出初代RT core,集成到Turing架構(gòu)的流多處理器(streaming multiprocessors,SM)中。

2018年8月14日,在SIGGRAPH 2018大會上,英偉達發(fā)布了基于圖靈架構(gòu)的Quadro系列圖形卡,并將該系列命名為Quadro RTX家族。這是全球首款支持實時光線追蹤技術(shù)的顯卡,內(nèi)部最大的變化就是增加了RT Core核心,專用于物體與環(huán)境光線的實時追蹤,能夠準確繪制環(huán)境的光影效果。

2019年1月,有愛好者團隊基于《雷神之錘II》打造了名為Q2VKPT的項目,用VULKAN API為這款經(jīng)典游戲加入了RTX光線追蹤效果。隨著該項目被NVIDIA官方吸納,打造成了《雷神之錘II RTX》。《雷神之錘II RTX》相比最初的Q2VKPT相比增加了實時可控數(shù)量光線、精確日照與間接光照、水面與玻璃反射、可反射與半透明表面、武器粒子與光束特效、隨光線實時變換的山脈天空云朵環(huán)境程序貼圖、改進的降噪器、SLI支持、高細節(jié)武器模型與紋理、英偉達 Flow火焰煙霧例子特效等等。在加入了光線追蹤效果后,畫面質(zhì)量都得到了提升。

2020年,AMD不僅在游戲中引入了對實時光線追蹤的支持,而且還發(fā)布了RX 6000系列的三款GPU。與此同時,引入一些RDNA 2架構(gòu)設(shè)計的關(guān)鍵元素來實現(xiàn)這一功能,為了提高光線追蹤的性能,在核心計算單元設(shè)計中加入了光線加速器。2021年,Imagination將PowerVR Photon架構(gòu)的光線加速集群(ray acceleration cluster,RAC)加入到C系列的GPU中,為手機市場提供光線追蹤的IP技術(shù)。

為實現(xiàn)逼真的光線追蹤視覺效果,英偉達于2023年12月推出了實時3D創(chuàng)作軟件D5渲染器,擁有AI神經(jīng)網(wǎng)絡(luò)提供支持的DLSS超分辨率、幀生成和光線重建功能。該功能增強了光線追蹤性能并提高了實時視窗幀速率,可帶來更流暢的編輯體驗,進而實現(xiàn)直觀的交互式3D創(chuàng)建。

基本原理

光線追蹤的原理是從觀察者的角度出發(fā),向場景中發(fā)射光線,找出這條光線與物體表面的相交點,并找出影響相交點光強的所有光源,從而算出相交點上精確的光線強度,最后結(jié)合相交點表面的材質(zhì)算出屏幕上像素點的像素值。在計算圖形學(xué)中,物體的表示方式以三角形面片最為普遍。所以判斷射線與物體是否相交的核心,實際上可以演變?yōu)榕袛嗌渚€與三角形是否相交。

在光線追蹤的運算過程中,需要運用到蒙特卡洛算法。蒙特卡洛算法是指隨機的對樣本進行抽取,來補給某個子樣本運用到光線追蹤中就是在渲染過程中,在空中隨機抽取光線用來解決問題。光線追蹤與光柵化不同,由于光線追蹤是隨機發(fā)射光線,這就會帶來方差的問題,例如骰子六個點的平均數(shù)是3.5,當(dāng)扔的次數(shù)越多,就越接近平均數(shù);光線追蹤也是同樣的道理,當(dāng)光線數(shù)量足夠時,也能得到最終的主項。

關(guān)鍵技術(shù)

真實感圖形顯示的光線跟蹤算法是一種典型的點采樣技術(shù),它用相互分離的像素點陣組合出圖形,這樣的圖形與真實的景物之間不可避免地會存在誤差。為此,可通過像素細分技術(shù)、像素的區(qū)域采樣技術(shù)、降噪技術(shù)、神經(jīng)網(wǎng)絡(luò)結(jié)合的實時光線追蹤技術(shù)等來提升圖形的高頻細節(jié)。

像素細分技術(shù)

判別像素點存在走樣問題的規(guī)則是像素的某個角點的亮度與其余的三個角點的亮度相差太遠,或四條光線之間有小物體存在,這時可把這個像素均勻地分割成四個小方塊,于是又得到五個新的角點。注意到五個新的角點有四個被另外的像素點公用,實際上每個像素點平均只增加了三個新的角點。也就是說,每對像素進行一次分割就會增加三個采樣點。對這五個新增加的采樣點運用光線跟蹤算法進行亮度求值后,和原來四個點的亮度值一起求平均,確定和比較這四個小方塊的亮度值。

如果分割一次后仍然認為在某些像素點存在走樣問題,則繼續(xù)進行同樣的分割和計算,直到認為不存在走樣問題時為止。也可事先限定一個原始的像素點最大的追蹤光線數(shù),最后將這些小方塊的亮度進行加權(quán)平均來求得這個相應(yīng)的像素點的亮度值。

像素的區(qū)域采樣技術(shù)

反走樣顯示場景的另一種方法是將像素光線看作一個錐體,這時每個像素雖仍然只生成一束光線,但是光線有一個有限的相交區(qū)域。錐體與相交的物體覆蓋了像素區(qū)域的一定部分。按照像素點被相關(guān)物體覆蓋部分的面積百分比,并以此面積百分比相應(yīng)光線對應(yīng)的光強的加權(quán)因子加權(quán)平均得出這個像素點的光強。

要想確定像素被物體覆蓋部分的面積百分比,需通過計算像素錐體與景物表面的交點獲得。對一個球而言,這就需要計算出兩個圓周的交點;而對多面體而言,則需要求出圓周與多邊形的交點。

像素光線也可看作是一個棱臺錐體,要想確定像素被物體覆蓋部分的面積百分比,需通過計算像素棱臺錐體與景物表面的交點獲得。求解的過程主要是要獲得像素光線棱臺錐體側(cè)面的各平面與物體的交線。

降噪技術(shù)

隨著GPU實時光線追蹤解決方案的出現(xiàn),在降噪領(lǐng)域的研究也逐步興起。降噪技術(shù)主要是基于蒙特卡洛的渲染技術(shù)進行解決。蒙特卡洛渲染是基于隨機樣本的累積來近似給定場景光線追蹤結(jié)果的算法。降噪技術(shù)主要包括濾波技術(shù)、機器學(xué)習(xí)驅(qū)動的濾波器、改進采樣和近似技術(shù)等。濾波技術(shù)是在盡量保留圖像細節(jié)特征的條件下對目標(biāo)圖像的噪聲進行抑制;機器學(xué)習(xí)驅(qū)動的濾波器能夠幫助降噪網(wǎng)絡(luò)生成更真實的高頻細節(jié)和全局照明效果;改進采樣能夠在一定程度上解決渲染中的噪聲,但無法從根本上解決噪聲;近似技術(shù)可以通過光線追蹤中的低頻近似,為實時應(yīng)用程序提供了質(zhì)量和性能之間的理想平衡。

神經(jīng)網(wǎng)絡(luò)結(jié)合的實時光線追蹤技術(shù)

基于神經(jīng)網(wǎng)絡(luò)的實時光線追蹤技術(shù)可以用于降噪、圖像的重構(gòu)、神經(jīng)輻射場優(yōu)化、光線采樣和圖像超分辨率上采樣等技術(shù)。在神經(jīng)網(wǎng)絡(luò)中,可采用RNN(recurrent neural network)和自動編碼器的神經(jīng)網(wǎng)絡(luò)方式,提出一種適合蒙特卡洛渲染中噪聲類別的網(wǎng)絡(luò)變體,能夠考慮更大的像系域,自動編碼器可以完成圖像的降噪和重構(gòu),也可利用卷積神經(jīng)網(wǎng)絡(luò)提出一種梯度域渲染重構(gòu)方法,實驗結(jié)果顯著提高了光線追蹤渲染中梯度域的質(zhì)量,效果比使用其他降噪技術(shù)更優(yōu)。

關(guān)鍵方法

包圍體方法

在光線追蹤算法中最耗時的工作是計算光線與物體的交點。利用最小包圍體可以盡早排除可能與光線不相交的物體,從而減少計算工作量。然而,對包圍體的選擇也有一些限制,例如要根據(jù)物體的形狀特點來選擇包圍體,使得包圍體內(nèi)盡量由被包圍的物體充滿,使得包圍體在能完全包圍物體的前提下盡可能得小,以便盡可能多地排除與被包圍的物體不相交的光線。同時,包圍體本身要求幾何形狀簡單,一般為球體或長方體,與光線是否相交的判斷比被包圍的物體與光線是否相交的判斷需簡單得多。

空間分剖法

空間分剖法也是通過減少判斷射線是否與物體相交的次數(shù)而提高算法效率的,可以將所有物體包含在一個立方體中,然后將立方體逐次分割,直至每個子立方體(體元)所包含的物體表面或表面數(shù)目小于等于一個預(yù)定的、可一次性處理的最大值為止。例如,可以要求每個體元中至多只包含一個表面。立方體的空間分割單元可以用一棵八叉樹或一棵二叉分割樹等KD樹進行存儲,通過該方法可以進行均勻分割,即每次將立方體分割為8個相同大小的體元;也可以采用適應(yīng)性細分,即僅對包含物體的立方體區(qū)域進行分割。

其中KD樹算法代表K維樹,其概括了不同的樹結(jié)構(gòu),如二叉樹四叉樹八叉樹等,其中樹的各節(jié)點將具有K個節(jié)點:二叉樹為2個,四樹為4個,八叉樹為8個。其為排序的分層數(shù)據(jù)結(jié)構(gòu),用于查找高維空間中的最近鄰。高維數(shù)據(jù)的主要問題之一是難以找到最近鄰。

預(yù)處理法

預(yù)處理法是指在計算從像素發(fā)出的射線與物體的第一次相交的交點時,可以把所有的隱藏面排除在外。

綜合方法

綜合方法是指對空間分剖法和包圍體法的綜合運用,是先對包圍所有物體的最小立方體進行分割,直到每個子立方體中包圍的物體數(shù)不超過兩個為止,再對立方體中的物體作包圍體處理。

射線分類法

如果兩條射線的起點和方向都比較接近,那么在它們的連續(xù)反射和透射過程中所遇到的表面很可能大多數(shù)是相同的。因此在計算出第一條射線的射線追蹤樹后,與之相近的射線可以先參照第一條射線的追蹤樹來建立自己的射線追蹤樹。例如,射線A在某次反射中與物體R相交,那么與射線A相似的射線B在與A同一深度的反射中可以首先判斷是否與物體R相交,而不必從第一個物體開始逐個判斷計算。具體的判定過程類似于多邊形掃描線填充算法中相鄰掃描線與多邊形邊的交點之間的連貫性判斷,需要對有關(guān)處理對象進行分類,尋找相近的射線之間的關(guān)系。

相關(guān)算法

光線追蹤基礎(chǔ)算法

光線束遍歷

光線束遍歷是利用單指令多數(shù)據(jù)流架構(gòu),將多條光線當(dāng)作一個光線束,調(diào)度到GPU的線程束(warp)或CPU的不同線程中進行處理,不同光線共享遍歷棧。因此同一個光線束遍歷的順序是一致的。只要其中的一條光線與某個節(jié)點相交,那么整個光線束都遍歷該節(jié)點的子樹。該方式能夠?qū)⒍喂饩€分成陰影光線、反射光線和折射光線三種光線束來進行光線追蹤,使光線束的組合更加合理,性能得到較大的提升。但是,該方式的性能會受到內(nèi)存帶寬的限制。

無棧遍歷

無棧遍歷算法是光線追蹤中常用的技術(shù)。這種算法的提出源于GPU中有限的寄存器空間,棧的編程復(fù)雜度和定制化硬件單元有限的片上存儲資源。無棧的遍歷算法帶來了兩點好處:一是按照特定的格式構(gòu)造加速數(shù)據(jù)結(jié)構(gòu)在遍歷時可以減少內(nèi)存的訪問;二是無棧的遍歷算法在GPU平臺可以提高并行度,提升計算性能。但通常需要在加速數(shù)據(jù)結(jié)構(gòu)中設(shè)置標(biāo)記位或進行冗余操作才可以完成無棧遍歷。

簡單光線追蹤算法

簡單光線追蹤算法是按相反途徑追蹤光線,即從觀察者到造型物體的方向追蹤光線。在簡單光線跟蹤方法中,每條射線都要和所有物體求交,然后再對所得的全部交點進行排序,才能確定可見點。下圖所示是一個最簡單的光線追蹤方法。設(shè)視點或觀察者位于z軸正向的無窮遠處,因此所有光線均平行于z軸,且不考慮透視變換。光線從觀察者出發(fā),通過光柵中象素的中心到達物體。然后沿光線路徑進行追蹤,以決定它與物體的哪一部分相關(guān)。每一光線均需與每一個物體以及物體的每一部分進行比較。如果相交,則需求出該光線與物體的所有可能的交點。

遞歸光線追蹤算法

遞歸光線追蹤是指每一次一條光線和物體的幾個表面碰撞或相交,產(chǎn)生一條新光線,每一次的碰撞和相交叫一個遞歸。在鏡面反射情況下總有一個主要反射方向,通過檢查反射方向可以判斷一個點是否能產(chǎn)生鏡面高光。在考慮反射光的情況下,還要通過檢查這個方向來判斷是否還有其他光線能夠在這一點產(chǎn)生出鏡面高光。這樣,通過遞歸使用光線追蹤算法,投射出一個沿著反射光方向的射線,就可以完成反射光線對物體照明的判斷。下圖給出了一條從鏡頭(或視點)到光源的遞歸光線路徑,其中一個漫反射表面向所有方向反射光線。

高級光線追蹤算法

路徑追蹤算法

路徑追蹤算法的基本思想是從視點發(fā)出一條光線,光線與物體表面相交時根據(jù)表面的材質(zhì)屬性繼續(xù)采樣一個方向,發(fā)出另一條光線,如此迭代,直到光線打到光源上或逃逸出場景,然后用蒙特卡洛方法對場景進行路徑采樣,對每條光線路徑的貢獻值進行平均求和的蒙特卡洛積分計算。使用蒙特卡洛方法對積分的求解是無偏的,只要時間足夠長,最終圖像能收斂到一個正確的結(jié)果,但單向路徑追蹤渲染的短板是透明材質(zhì)和焦散渲染。

雙向路徑追蹤算法

雙向路徑追蹤算法除了追蹤視點投射光線的路徑外,還追蹤光源發(fā)射光線的路徑,從視點和光源分別發(fā)出的光線,經(jīng)過若干次反彈后,視點子路徑和光源子路徑上的頂點被連接起來,連接時需要測試可見性,以快速產(chǎn)生很多路徑。這種方法能夠產(chǎn)生單向路徑追蹤難以采樣到的光路,所以能夠很有效地降低噪聲。雙向路徑追蹤在間接光線豐富的空間環(huán)境中非常實用高效,在焦散渲染方面比單向路徑追蹤更好、更快,但還存在一些問題,如在一些鏡面反射和漫反射表面場景中的控制不好,例如,在被玻璃封閉的汽車或建筑空間內(nèi)出現(xiàn)亮斑。

光子映射

光子映射方法是一種兩遍的全局光照算法。在第一遍渲染中,光向場景中發(fā)射光子,并在場景中追蹤每一個有效光子,將符合條件的光子的能量、軌跡以及接觸表面的信息存儲在一種叫做光子圖(Photon Map)的數(shù)據(jù)結(jié)構(gòu)中,這個過程稱之為光子追蹤(Pholon Tracing)。第二遍渲染則是從視點出發(fā)向場景中發(fā)出光線并跟蹤此光線,得到光線與場景相交的采樣點,在光子圖中搜索與采樣點鄰近的k個光子,根據(jù)k個鄰近光子和采樣點信息計算圖像平面上相應(yīng)點的顏色即進行輻射評估,并生成最終的圖像。

光線優(yōu)化算法

光線重排序

光線追蹤由于漫反射和光澤反射會產(chǎn)生不連續(xù)的光線。光線束的遍歷方法也需要連續(xù)的光線才能夠保證高性能。此外不連續(xù)的光線會造成更高的內(nèi)存帶寬、更高的緩存缺失率和計算分支。光線重排序的方法可以將多維光線空間映射到使用標(biāo)準排序算法排序鍵的一維空間中,能夠在一定程度上緩解這一問題。

多分支BVH

為了解決非連續(xù)光線的問題,研究人員提出了多分支(wide)BVH的概念,該方法在每次遍歷時只處理一條光線,在遍歷某個節(jié)點時,加載某個子節(jié)點數(shù)據(jù)的同時,光線可以同時跳去處理另外一個子節(jié)點,這樣的方式可以隱藏訪存延時。隨著子節(jié)點變寬,樹的節(jié)點變小,棧的深度也減少。如果所有子節(jié)點的序號是連續(xù)的,那么棧只需要記錄第一個序號和有效子節(jié)點的數(shù)量即可,因此也可以起到節(jié)省棧內(nèi)存的作用。

算法變體

錐體追蹤

錐體追蹤是射線追蹤技術(shù)的一種改進,它使用光線的錐形區(qū)域而不是單根射線,目標(biāo)在于減少總的計算次數(shù)。錐體追蹤解決了與采樣和混疊相關(guān)的某些問題,這些問題會影響傳統(tǒng)的光線追蹤技術(shù)。然而,錐體追蹤本身也產(chǎn)生了許多問題。例如,僅僅將圓錐與場景幾何體相交就會導(dǎo)致多種可能的結(jié)果。出于這個原因,錐體追蹤基本上不受歡迎。后來,蒙特卡洛算法的出現(xiàn),如分布式光線追蹤即隨機顯式像素積分的使用比錐體追蹤更廣泛。

差分錐體追蹤考慮到光束周圍的差分角鄰域,避免了精確幾何切割的復(fù)雜性,但需要對物體的幾何形狀和外觀進行LOD表示。Mip映射是一種近似值,僅限于錐體覆蓋區(qū)內(nèi)表面結(jié)構(gòu)的積分。差分光線追蹤擴展到通過曲面反射或折射的錐體復(fù)雜路徑查看的結(jié)構(gòu)化表面。

光束追蹤

光束追蹤算法的基本思路是將一定直徑的激光束離散成n條光線,每條光線攜帶一定的能量。從光束出發(fā)的地方開始追蹤光線,當(dāng)搜索到工件界面時,該光束將一部分能量傳遞給工件,另一部分能量根據(jù)界面形貌發(fā)生反射,形成新的不同方向的光線,用同樣的方法追蹤新的光線。一種多重反射示意圖如下所示。

分布式光線追蹤

分布式光線追蹤又稱隨機光線追蹤,隨機算法就是指在采樣不全時,通常不能保證找到最優(yōu)解,只是盡量找,根據(jù)追求結(jié)果高質(zhì)量和解決高效性的不同側(cè)重,可以把隨機算法分成兩類:一類是蒙特卡洛算法,采樣越多,越近似最優(yōu)解,盡量找好的,但不保證是最好的;另一類是拉斯維加斯算法,采樣越多,越有機會找到最優(yōu)解,盡量找最好的,但不保證能找到。如果問題要求必須給出最優(yōu)解,但對采樣沒有限制,那就用拉斯維加斯算法。對于機器圍棋程序而言,因為每一步棋的運算時間、堆棧空間都是有限的,而且不要求最優(yōu)解,所以,機器圍棋涉及的隨機算法是蒙特卡洛式。蒙特卡洛和拉斯維加斯也是兩座著名賭城的名字,因為賭博中體現(xiàn)了許多隨機算法,所以借此命名。

光線投射算法

構(gòu)造實體幾何法存在的主要問題是求交困難,解決該問題的主要方法是采用光線投射(Ray-casting)算法。該算法的核心思想是從顯示屏(投影平面)的每一個像素位置發(fā)射一根光線(射線),求出射線與距離投影平面最近的可見表面的交點和交點處的表面法矢量,然后根據(jù)光照模型計算出表面可見點的色彩和亮度,生成實體的光柵圖形。該算法的關(guān)鍵之處在于確定光線與距離投影平面最近的可見表面的交點,這可以通過集合成員分類算法實現(xiàn)。

優(yōu)點與局限

優(yōu)點

真實性:光線追蹤技術(shù)能夠模擬光源和環(huán)境入射光在物體表面產(chǎn)生的鏡面反射、折射和陰影,從而生成各種逼真的視覺效果。這種技術(shù)綜合考慮了消隱、濃淡、陰影、色彩等真實性技術(shù),適用于各種物體造型。

高效率渲染:隨著GPU計算能力的增強和存儲容量的不斷增加,光線追蹤越來越為人們所重視。通過采用基于CUDA的光線追蹤算法,可以利用GPU的并行處理能力,同時結(jié)合KD-Tree加速相交測試過程,最終提高仿真場景的渲染速度。

精確的陰影和光照效果:光線追蹤技術(shù)能夠?qū)崿F(xiàn)精確的陰影和光照效果,這對于提升場景的真實感至關(guān)重要。例如,與其他現(xiàn)代精確陰影技術(shù)相比,光線追蹤被認為是最快且易于實現(xiàn)的方法之一,具有較小的內(nèi)存占用。

適用于復(fù)雜場景:光線追蹤技術(shù)不僅適用于簡單的場景,也能夠處理復(fù)雜的場景。通過采用改進的算法和加速技術(shù),如基于環(huán)境映照變換的快速光線跟蹤算法,可以實時生成鏡面反射效果和折射效果,即使在復(fù)雜的場景中也能保持高效率和高質(zhì)量的渲染效果。

局限性

走樣問題:光線跟蹤是基于點采樣技術(shù),使用獨立的像素點來生成圖像,這可能導(dǎo)致與真實景象的誤差。例如,渲染的直線可能出現(xiàn)鋸齒狀,而小物體可能無法正確顯示。

尖銳陰影:基本的光線追蹤算法模擬點光源,通常只能產(chǎn)生尖銳的陰影,不具備柔和陰影的能力。

局部光照和著色:算法通常只追蹤有限數(shù)量的光線,通常僅考慮四種光線類型,而物體間的漫反射光未被包括,導(dǎo)致全局光照效果的缺失。

噪點問題:光線追蹤渲染中常見的噪點主要由樣本數(shù)量不足引起。少量的樣本會導(dǎo)致高方差,進而產(chǎn)生噪點,而大量的樣本則可以減少方差,使得結(jié)果更加接近預(yù)期值。

效率問題:光線跟蹤的主要缺陷是其低效率,因為它需要進行大量的計算。與傳統(tǒng)的光柵圖形學(xué)算法不同,光柵圖形學(xué)可以在像素間共享計算,提高效率。光線跟蹤則需要為每條光線獨立計算,雖然這有助于避免混疊現(xiàn)象,提高圖像質(zhì)量,但其計算需求遠超當(dāng)時的計算硬件能力。盡管光線跟蹤致力于模擬真實環(huán)境,但受限于計算資源,它無法完全實現(xiàn)物理上的渲染方程。

平臺工具

應(yīng)用領(lǐng)域

影視

光線追蹤技術(shù)主要應(yīng)用于動畫與離線視頻生成系統(tǒng)。空間數(shù)據(jù)結(jié)構(gòu)讓光線追蹤可以向?qū)崟r渲染發(fā)展。空間數(shù)據(jù)結(jié)構(gòu)被應(yīng)用于場景圖像以減少光線投射和圖元結(jié)構(gòu)(如三角形、圓、隱式曲面等)相交過程消耗的時間。因為屏幕光線像素的計算可以分布到并行計算單元,所以光線追蹤具有高度并行性。電影工業(yè)使用渲染集群(Render Clusters)以生成復(fù)雜的光線追蹤電影場景。

游戲

光線追蹤技術(shù)在游戲領(lǐng)域中,可以創(chuàng)造表現(xiàn)效果更強的圖像,而且還會對游戲玩法產(chǎn)生根本性的影響。光線追蹤技術(shù)通過模擬光線的傳播,電腦只渲染光線打到的地方,因此僅需要很少的人工編程,相比于光柵式渲染簡便了很多。同時光線追蹤也能表現(xiàn)出更真實的畫面,在光影效果的表現(xiàn)上更強,尤其是符合物理規(guī)律的光影效果。支持光線追蹤的游戲包括《賽博朋克2077》《看門狗:軍團》《使命召喚:現(xiàn)代戰(zhàn)爭》《重生:邊緣》和《光明記憶》等。

工程建設(shè)

光線追蹤改變了一些專業(yè)領(lǐng)域的設(shè)計流程,比如在建筑、工程以及施工行業(yè)(AEC)上。通過加入光線追蹤技術(shù),設(shè)計師可以通過類似電影畫質(zhì)的實時渲染來增強創(chuàng)造力,實現(xiàn)更佳的效果。與客戶在房間中探索設(shè)計,對照明和材料進行實驗和測試并實時調(diào)整,從而準確模擬真實世界的光線條件。人們可以看到全局照明的實時效果。在建模渲染方面,光線追蹤技術(shù)被視作AEC行業(yè)的重要突破。設(shè)計完成的工程圖紙,經(jīng)過GPU分析后,結(jié)合材質(zhì)、光照條件以及物品形狀等參數(shù),就可以再進行渲染建模實時模擬展現(xiàn)實際情況。同時,經(jīng)過更改的參數(shù)也會在渲染中自動發(fā)生變化,實現(xiàn)所見即所得,并提高人機交互效率。強調(diào)浸入感的虛擬現(xiàn)實(VR)也成為了光線追蹤的應(yīng)用方向,而提高渲染效果帶來的好處是,將更有利于提高AEC行業(yè)的協(xié)同辦公工作效率。

計算機圖形學(xué)

在計算機圖形學(xué)中,光線跟蹤是一種生成高度逼真圖像的技術(shù),是顯示三維物體的最有效方法之一。它對計算量的要求使得它在一些有較多交互性要求的任務(wù)中的可用性大大降低。若將場景視覺效果放在首要位置,而又沒有交互性存在時,這種方法是非常有效的。

無線通信領(lǐng)域

在無線通信領(lǐng)域,光線追蹤用于模擬無線信號的傳播。自20世紀90年代初以來,光線追蹤模型已經(jīng)被用于移動無線系統(tǒng)中的場預(yù)測和信道模擬,并且隨著算法效率的提高和應(yīng)用能力的增強,其在無線通信領(lǐng)域的應(yīng)用前景廣闊。

物理學(xué)和工程領(lǐng)域

在物理學(xué)和工程領(lǐng)域,光線追蹤常用于模擬光波的傳播和相互作用。這包括地震層析成像研究中的三維光線追蹤方法,該方法通過改進計算過程中的關(guān)鍵步驟,提高了精度和速度。此外,光線追蹤方法也被應(yīng)用于地震波反演及偏移成像等過程,對于地震波理論研究具有重要意義。

醫(yī)學(xué)

醫(yī)學(xué)圖像的三維可視化即采用數(shù)字化成像技術(shù),獲取人體有關(guān)部位的掃描圖像,通過三維重建技術(shù)恢復(fù)人體相關(guān)部位的三維結(jié)構(gòu),獲得傳統(tǒng)手段無法獲得的結(jié)構(gòu)信息。三維可視化方法主要包括預(yù)處理和繪制技術(shù)。按圖像順序體繪制,也稱為光線追蹤,即確定圖像平面上的某個像素值,按照當(dāng)前參數(shù),射出一條通過該像素并穿透體數(shù)據(jù)集的光線,沿光線計算所遇到的數(shù)據(jù),顯示像素值。

發(fā)展方向

長期以來,基于光線追蹤的物理渲染被視為提升視覺體驗的最有效方法,但是由于過大的計算強度限制了其在實時應(yīng)用領(lǐng)域的使用。近年來,隨著算法研究和硬件技術(shù)的發(fā)展,已經(jīng)處于傳統(tǒng)光柵化渲染方式到消費者平臺實時光線追蹤的轉(zhuǎn)折點。但是,基于實時光線追蹤的研究還未結(jié)束,該領(lǐng)域還有一些關(guān)鍵性的問題有待進一步研究。

提升圖像真實感:在圖像真實感方面,光線追蹤的模型是基于理想模型做光線路徑的模擬,由于真實場景中光線的折射會造成能量損失,距離完全真實地描繪3D場景還具有一定差距。如果要更進一步地模擬光線的傳遞,還需要考慮輻射度量學(xué)的內(nèi)容。除此之外,紋理空間技術(shù)(texture space techniques)、可變速率光線追蹤(variable rate ray tracing)等提升圖像真實感技術(shù)如何與光線追蹤技術(shù)相結(jié)合可能是后續(xù)研究的重點方向。

優(yōu)化算法和硬件:在算法和硬件優(yōu)化方面,神經(jīng)網(wǎng)絡(luò)技術(shù)與實時光線追蹤結(jié)合愈發(fā)緊密,在降噪處理、圖像重構(gòu)和超分辨率等方面發(fā)展迅速,下一步可能會推動人們進入神經(jīng)網(wǎng)絡(luò)渲染的新時代。利用定制的高效光線重排序硬件或者近存計算等會成為實時光線追蹤進一步發(fā)展的突破口。此外,同樣值得研究的是光線追蹤硬件是否可以推廣到其他不規(guī)則應(yīng)用程序的架構(gòu)中,可以充分發(fā)揮現(xiàn)代光線追蹤GPU架構(gòu)的優(yōu)勢。

相關(guān)對比

光線追蹤是一種圖像合成技術(shù),它通過模擬光線與物體表面的交點來實現(xiàn)圖像的繪制。光柵化是把頂點數(shù)據(jù)轉(zhuǎn)換為片元的過程,具有將圖轉(zhuǎn)化為一個個柵格組成的圖象的作用。光線追蹤和光柵化渲染作為兩種常見的計算機圖形學(xué)渲染技術(shù),適用于不同的應(yīng)用場景,光線追蹤和光柵化渲染有以下幾點不同:

參考資料 >

從《使命召喚》到《我的世界》,光線追蹤技術(shù)如何改變游戲?.今日頭條.2024-01-17

..2024-01-17

英偉達:不只是游戲,光線追蹤技術(shù)正在改變工程設(shè)計行業(yè).今日頭條.2024-01-17

Comparison of Modern Omnidirectional Precise Shadowing Techniques Versus Ray Tracing.onlinelibrary.2024-06-13

英偉達發(fā)布新顯卡RTX家族 顯存達48GB售價1萬美金.中華網(wǎng).2024-06-18

DLSS 3.5 登陸 D5渲染器,開啟實時渲染新紀元.NVIDIA.2024-05-23

光線方程.中國大百科全書.2024-06-18

畫面真香,全面測試RTX ON,3D畫面進化真正標(biāo)桿.電腦報.2024-06-13

..2024-01-17

Guide for beginners: What is Cone Tracing?.viscircle.de.2024-06-09

NVIDIA Ampere 架構(gòu).nvidia.2024-06-09

.amd.2024-06-09

The First Mobile-Optimised Ray Tracing Architecture.imaginationtech.2024-06-09

什么是光線追蹤?.亞馬遜云科技.2024-01-19

Blender 4.1.blender.2024-06-09

Download 3ds Max for students.autodesk.2024-06-09

Autodesk Maya: Create expansive worlds, complex characters, and dazzling effects.autodesk.2024-06-09

luxcorerender.luxcorerender.2024-06-09

什么是 V-Ray?.chaos.2024-06-09

Ray tracing: techniques, applications and prospect.ieeexplore.2024-06-13

生活家百科家居網(wǎng)