如何在 HDRP 中實現光線追蹤?
幸而,隨著主流GPU的更新迭代,由硬體支撐的光線追蹤逐漸普及,光追可能很快就會成為生成光照的新標準(尤其是在高階平臺上)。而高清渲染管線(HDRP)則推出了一種糅合傳統光柵化與光線追蹤技術的混合光線追蹤管線,並用光線追蹤重現了諸如環境光遮蔽(AO)、光反射、全域性光照(GI)、次表面散射和陰影等常見光效。
以上圖和視訊為寶馬2019款8系雙門轎跑車展示,這是Unity、NVIDIA和寶馬三方的合作成果。視訊中,實景拍攝和光線追蹤渲染的無縫融合產生了不可思議的效果,證明了實時光線跟蹤技術在耗時、成本遠低於離線渲染的前提下,也能製作出極度逼真的影像。
用全新的 HDRP 模板實現光線追蹤
Unity 2020.2 推出了全新的 HDRP 模板,我們之前也介紹過該模板,感興趣的朋友點選這裡回顧。
建議大家下載 Unity 2020.2,在 Unity Hub 中建立新專案,選擇 HDRP 模板,然後點選Create。
全新的 HDRP 模板藉助了光柵化技術來渲染光照,使用了光照烘焙、光照探針組、反射探針、陰影貼圖等功能。本文將介紹 HDRP 中 4 種主要的光線追蹤效果,即光線追蹤環境光遮擋(Ambient Occlusion)、光反射(Reflection)、全域性光照(Global Illumination)和陰影(Shadow)。最後,介紹 HDRP 的路徑追蹤(Path Tracing)功能,路徑追蹤是更為簡單粗暴的光追計算方法,通過延長渲染時間,來換取更高的影像保真度。
光線追蹤環境光遮蔽(RTAO)
十多年來,螢幕空間環境光遮蔽(SSAO)一直是遊戲實時渲染的主要內容,用於模擬環境的漫射光遮蔽,改善場景中物體接觸區域的視覺效果,降低凹面區域的光照強度。但是效果如果強度過高,則會在幾何體周圍產生光暈,甚至產生卡通化外觀。除此之外,它還繼承了螢幕空間技術的主要缺點,即無法根據螢幕外物件生成遮蔽效果,僅能使用 z-buffer(z軸快取)中出現的深度資訊。但在優點上, SSAO 在處理攝像機內的小區域光遮擋時依然出色,並且成本相對較低。
圖例:三種情況下的環境光遮蔽對比
在光線追蹤的幫助下,位於攝像機視錐外的光線也能被拍攝進畫面,讓光線照射到畫面外的物體,從而讓攝像機內的大型物體生成出色的巨集觀遮擋效果。儘管從技術上講,AO只能勉強算作一種環境光照技術,但它能很好地補充光照貼圖、光探針等其它光照,後者較低解析度及效果強度並不足以生成微型光遮蔽。
光線追蹤光反射(RTR)
與 SSAO 類似,螢幕空間光反射(SSR)也只能反射畫面中的物體,出於攝像機鏡頭外的表面並不能反射光。比方說,攝像機視角對著地面時,SSR技術將不能生成任何光照資訊。因此,SSR 的效果多少會有偏差,且會受到多種因素干擾,甚至受你自己干擾:在大部分靜態場景中,位置恰當的反射探針才能產生悅目的效果、減少干擾因素。不過 SSR 真正有用的地方在於視線平行方向上的鏡面反射(如地板、牆壁和天花板)。SSR 最為理想的使用方法是用在視角固定的攝像機中,比如賽車遊戲。
圖例:光柵化與光線追蹤的光反射對比
但有了光線追蹤後,我們就能獲取螢幕外的光照資訊,並藉此在整個世界上,或在鏡頭周圍一定半徑內生成更精確的光反射,根據 Light Cluster(光照叢集)和光線照射距離來生成光照效果。
光線追蹤全域性光照(RTGI)
光線跟蹤最具代表性的功能之一是實時全域性光照,即用射出的光線生成間接光照,再簡單點說,就是讓光照在環境中彈射。
通常在遊戲引擎中,間接光照是使用提前計算或烘焙技術來處理的,包括光照探針、光照貼圖,但技術的缺陷在於運算耗時會增加場景光照的迭代時間。
圖例:光柵化與光線追蹤的全域性光照對比
HDRP 推出了兩種 RTGI 技術:高效能和高質量。前者適用於在直射光下實現高幀率,而後者則能處理光線的多次反射和取樣,可在複雜室內環境中生成精確的光效,當然運算成本也非常高。
光線追蹤陰影
HDRP 自帶精美的陰影效果,在陰影過濾質量為高時(PCSS),管線生成的貼圖可模擬自然的陰影柔順感,保證陰影在投影物體周圍的銳度,模模擬實陰影。然而當過濾質量為中等時,結果就不盡人意了,整張陰影貼圖均會被無差別過濾,投影物體和接收物體間的距離將不能影響效果。
圖例:光柵化與光線追蹤的陰影對比
光線追蹤陰影可以顯著改善陰影效果。通過從表面向光照投射射線,來計算出兩者間的遮擋面積,由此生成的陰影非常逼近現實,而效能成本並不算高。此外,HDRP還支援透明表面的陰影!
路徑追蹤
光線路徑追蹤功能較傳統離線渲染可更快地生成精美影像。光線從攝像機射出,在碰撞到表面時,再向其他表面和光照投射光線(形成光照叢集‘Light Cluster’結構)。光線從攝像機到燈光間的行程稱為路徑,功能由此得名路徑追蹤。
與其他光線追蹤方法相比,路徑追蹤的優勢在於能用統一的運算流程來生成所有光照,包括陰影、反射、折射和全域性光照。該技術的主要缺點在於渲染時間和影像噪波,後者可以通過累積取樣多幀影像來推算出更為清晰的影像(類似時域化抗鋸齒)。
在此提醒一下各位朋友,目前 HDRP 中的光線追蹤處於預覽階段,並不能滿足商業製作要求,各位在創作的時候請務必做好備份。同時,也歡迎各位提出寶貴的建議。
來源:Unity
地址:https://mp.weixin.qq.com/s/vPKBGOA_vxcHVH5TP2Hoqg
相關文章
- 在WebGL中使用GLSL實現光線追蹤Web
- 用 Rust 實現簡單的光線追蹤Rust
- 虛幻引擎中的實時光線追蹤(一):起源
- RTX顯示卡實時光線追蹤有什麼用? 顯示卡光線追蹤是什麼意思
- 虛幻引擎中的實時光線追蹤(二):建築視覺化視覺化
- RTX顯示卡實時光線追蹤技術解析 英偉達RTX顯示卡的光線追蹤技術是什麼?
- 把遊戲變成現實,光線追蹤技術到底有多神?遊戲
- games101-1 光柵化與光線追蹤中的空間變換GAM
- 手機上的光線追蹤,OPPO率先做到了
- 光線追蹤往事:十年技術輪迴
- 從零開始的簡單光線追蹤示例
- NVIDIA RTX On:Gamescom海量新遊戲大作演示光線追蹤GAM遊戲
- TGDC | 向陽而生 —— 光線追蹤的專案應用
- 實時光線追蹤技術:發展近況與未來挑戰
- 如何在 ThreeJS 中實現輝光效果JS
- GDC | 下一代的移動端圖形:《暗區突圍》手遊中的光線追蹤實現
- 中國DXR Spotlight光線追蹤開發者大賽優勝者揭曉
- Unity GDC 2019 Keynote精彩要點:次時代圖形、實時光線追蹤、DOTSUnity
- RTX光線追蹤帶給使命召喚的畫質救贖
- WebGPU+光線追蹤Ray Tracing 開發三個月總結WebGPU
- Go - 實現專案內鏈路追蹤Go
- games101 作業4及作業5 詳解光線追蹤框架GAM框架
- Go - 實現專案內鏈路追蹤(二)Go
- log4j MDC實現日誌追蹤
- 光線追蹤版《我的世界》,意義不只是更炫的畫面
- 追蹤將伺服器CPU耗光的兇手伺服器
- 搭載「光線追蹤」技術的次時代主機會有怎樣的畫面表現?
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- 利用Spring Boot實現微服務的鏈路追蹤Spring Boot微服務
- Asp.Net Core&Jaeger實現鏈路追蹤ASP.NET
- 分散式鏈路追蹤框架的基本實現原理分散式框架
- UE4中的主要材料和光線跟蹤
- 《使命召喚:現代戰爭》迎來畫質革新,RTX光線追蹤帶來觀影級體驗
- 從《使命召喚》到《我的世界》,光線追蹤技術如何改變遊戲?遊戲
- [MetalKit]44-Raytracing with Metal射線追蹤
- GTX 1660/1080實戰光線追蹤:1080p也難流暢、仍需進一步最佳化
- 《我的世界》win10版將更新測試版本,首次支援光線追蹤技術Win10
- 詳解ElasticAPM實現微服務的鏈路追蹤(NET)AST微服務