從計(jì)算機(jī)圖形角度去比較虛幻引擎里路徑追蹤PathTracing和光線追蹤RayTracing的區(qū)別
五棟整理:
Ray Tracing是一種對(duì)真實(shí)光照?qǐng)鼍暗拇致阅M。Ray Tracing認(rèn)為我們能分辨出某個(gè)物體的顏色的原因是因?yàn)楣庠窗l(fā)出的光線照到物體表面,吸收一部分后反射到人眼中。要想模擬這種情況,我們可以從眼睛反向追蹤這束光線。如下圖所示

一個(gè)不嚴(yán)謹(jǐn)?shù)谋扔鳎篜前面的矩形就是我們的視網(wǎng)膜。為了決定他們的顏色,對(duì)于每個(gè)像素點(diǎn)/視網(wǎng)膜感光細(xì)胞,我們從P發(fā)射一條射線打到矩形上,這束光線之后會(huì)進(jìn)入這個(gè)場(chǎng)景,與某個(gè)物體相交。我們就可以根據(jù)這個(gè)點(diǎn)的物理性質(zhì)、光源的屬性以及光線反射、折射模型決定這個(gè)像素點(diǎn)的最終顏色。Phong是一種比較常見(jiàn)的反射模型。這個(gè)模型考慮了環(huán)境光(ambient),漫反射(diffuse),以及鏡面反射(Specular)。如下圖所示[2]。V向量是Ray Tracing發(fā)射的反方向。L與N的夾角大小決定了漫反射在相機(jī)處的剩余光照強(qiáng)度(我們這里假設(shè)漫反射各向同性,最終亮度取決于Normal向量與L的夾角。夾角越小,相機(jī)處認(rèn)為越亮)。同理,當(dāng)V與R夾角很小時(shí),我們能夠看到鏡面反射。由于L*V是兩者的cos值,隨夾角增大的降低速率過(guò)慢,我們將其取α次方。ka,kd,ks均為常數(shù)。

當(dāng)然,這種模型非常粗糙。但是的確會(huì)比通常的方法更精確一些??梢砸牍獾恼凵鋪?lái)充實(shí)這個(gè)模型。在遇到鏡面時(shí),遞歸的追蹤反射光,這樣,Ray Tracing就可以很好的處理帶有透明液體的場(chǎng)景。

Ray tracing (graphics)
Ray Casting 在早期與Ray Tracing并無(wú)不同,但目前我們傾向于將其分開(kāi)。主要區(qū)別是,Ray Casting并不會(huì)遞歸的追蹤光線,而Ray Tracing可能會(huì)根據(jù)不同的反射 、折射模型遞歸的追蹤光線。[3]??梢岳斫鉃樽钭罨A(chǔ)的Ray Tracing。
Path Tracing使用了蒙特卡洛算法,與Ray Tracing不同的是,追蹤光線的時(shí)候并沒(méi)有使用那條可以確定的、無(wú)偏差的反射光線,而是根據(jù)BRDF(bidirectional reflectance distribution function )隨機(jī)的追蹤。BRDF是表面材質(zhì)的函數(shù),對(duì)于每個(gè)法向量與光源的夾角、法向量與觀察者的夾角有不同的取值。

這顯著的增大了計(jì)算量,然而這通常情況下會(huì)使渲染出來(lái)的結(jié)果更為真實(shí)。
參考資料:
[1]notes/Lighting08.pdf
[2]notes/Raytracing10.pdf [3]Ray casting
歡迎參團(tuán)一起學(xué)習(xí)ue5!