在光照中,「光線追蹤」是指從攝影機或表面向其他表面或光照模型(尤其是攝像機視圖外)射出光束來形成光照。該技術龐大的計算量使其僅在電影製片和高端可視化領域有廣泛的應用,但是在實時內容創作上一直被幀數限制。數年來遊戲使用了另一種方法替代光線追蹤,即光柵化。簡單來說,光柵化就是渲染屏幕像素受特定光照的影響,實際本身並不涉及光線追蹤的概念,且由於其屏幕空間的本質而有一定的局限。
幸而,隨著主流GPU的更新迭代,由硬體支撐的光線追蹤逐漸普及,光追可能很快就會成為生成光照的新標準(尤其是在高端平臺上)。而高清渲染管線(HDRP)則推出了一種糅合傳統光柵化與光線追蹤技術的混合光線追蹤管線,並用光線追蹤重現了諸如環境光遮蔽(AO)、光反射、全局光照(GI)、次表面散射和陰影等常見光效。
十多年來,屏幕空間環境光遮蔽(SSAO)一直是遊戲實時渲染的主要內容,用於模擬環境的漫射光遮蔽,改善場景中物體接觸區域的視覺效果,降低凹面區域的光照強度。但是效果如果強度過高,則會在幾何體周圍產生光暈,甚至產生卡通化外觀。除此之外,它還繼承了屏幕空間技術的主要缺點,即無法根據屏幕外對象生成遮蔽效果,僅能使用 z-buffer(z軸緩存)中出現的深度信息。但在優點上, SSAO 在處理攝像機內的小區域光遮擋時依然出色,並且成本相對較低。
圖例:三種情況下的環境光遮蔽對比
在光線追蹤的幫助下,位於攝像機視錐外的光線也能被拍攝進畫面,讓光線照射到畫面外的物體,從而讓攝像機內的大型物體生成出色的宏觀遮擋效果。儘管從技術上講,AO只能勉強算作一種環境光照技術,但它能很好地補充光照貼圖、光探針等其它光照,後者較低解析度及效果強度並不足以生成微型光遮蔽。
與 SSAO 類似,屏幕空間光反射(SSR)也只能反射畫面中的物體,出於攝像機鏡頭外的表面並不能反射光。比方說,攝像機視角對著地面時,SSR技術將不能生成任何光照信息。因此,SSR 的效果多少會有偏差,且會受到多種因素幹擾,甚至受你自己幹擾:在大部分靜態場景中,位置恰當的反射探針才能產生悅目的效果、減少幹擾因素。不過 SSR 真正有用的地方在於視線平行方向上的鏡面反射(如地板、牆壁和天花板)。SSR 最為理想的使用方法是用在視角固定的攝像機中,比如賽車遊戲。
但有了光線追蹤後,我們就能獲取屏幕外的光照信息,並藉此在整個世界上,或在鏡頭周圍一定半徑內生成更精確的光反射,根據 Light Cluster(光照集群)和光線照射距離來生成光照效果。
光線跟蹤最具代表性的功能之一是實時全局光照,即用射出的光線生成間接光照,再簡單點說,就是讓光照在環境中彈射。
通常在遊戲引擎中,間接光照是使用提前計算或烘焙技術來處理的,包括光照探針、光照貼圖,但技術的缺陷在於運算耗時會增加場景光照的迭代時間。
HDRP 推出了兩種 RTGI 技術:高性能和高質量。前者適用於在直射光下實現高幀率,而後者則能處理光線的多次反射和採樣,可在複雜室內環境中生成精確的光效,當然運算成本也非常高。
HDRP 自帶精美的陰影效果,在陰影過濾質量為高時(PCSS),管線生成的貼圖可模擬自然的陰影柔順感,保證陰影在投影物體周圍的銳度,模仿真實陰影。然而當過濾質量為中等時,結果就不盡人意了,整張陰影貼圖均會被無差別過濾,投影物體和接收物體間的距離將不能影響效果。
光線追蹤陰影可以顯著改善陰影效果。通過從表面向光照投射射線,來計算出兩者間的遮擋面積,由此生成的陰影非常逼近現實,而性能成本並不算高。此外,HDRP還支持透明表面的陰影!
光線路徑追蹤功能較傳統離線渲染可更快地生成精美圖像。光線從攝像機射出,在碰撞到表面時,再向其他表面和光照投射光線(形成光照集群『Light Cluster』結構)。光線從攝像機到燈光間的行程稱為路徑,功能由此得名路徑追蹤。
與其他光線追蹤方法相比,路徑追蹤的優勢在於能用統一的運算流程來生成所有光照,包括陰影、反射、折射和全局光照。該技術的主要缺點在於渲染時間和圖像噪波,後者可以通過累積採樣多幀圖像來推算出更為清晰的圖像(類似時域化抗鋸齒)。
在此提醒一下各位朋友,目前 HDRP 中的光線追蹤處於預覽階段,並不能滿足商業製作要求,各位在創作的時候請務必做好備份。同時,也歡迎各位提出寶貴的建議。
長按關注
第一時間了解Unity引擎動向,學習最新開發技巧