還在魔改UE4?快來康康如何利用GPU在UE4中生成光線追蹤焦散效果
焦散是現(xiàn)實(shí)世界中常見的光學(xué)現(xiàn)象,從水面閃爍的浪花到透明玻璃背光的弧形高光,無處不在。
但是,在3D圖形中精確模擬焦散并非易事。那些參與創(chuàng)建光線追蹤渲染器的人,可能會(huì)知道要模擬焦散的話,困難重重:要追蹤從高度拋光的表面反射回來或多次穿過透明物體的光線,計(jì)算會(huì)變得很耗時(shí),并且調(diào)整這種非直觀的設(shè)置需要藝術(shù)家要付出額外的努力。
如今的游戲引擎是基于光柵化管道的,開發(fā)人員通常會(huì)選擇忽略焦散線,或者是用其他“作弊”的方式來進(jìn)行焦散造假,讓渲染圖看起來逼真。
近年來,GPU光線追蹤的出現(xiàn),為加速“光子映射(photon mapping)”(或“光子貼圖”)的實(shí)時(shí)渲染來了可能性。(光子映射是用于渲染精確焦散的流行技術(shù)。)
從那時(shí)起,英偉達(dá)就開發(fā)了一些使用快速GPU光子映射生成焦散的新方法。這些開發(fā)工作是在虛幻引擎4上實(shí)現(xiàn)的,終端用戶使用虛幻引擎產(chǎn)品就可以得到焦散的效果,同時(shí),還可以享受一些開源的資源庫。
焦散效果集中在兩個(gè)方面:
1、金屬和透明網(wǎng)格周圍的精細(xì)焦散,稱為網(wǎng)格焦散(mesh caustics)(如圖1)
2、水面上方和下方的焦散,強(qiáng)調(diào)流體運(yùn)動(dòng)并能夠覆蓋大面積,稱為水體焦散(water caustics)(如圖2)
兩種方法對于高幀率使用都是低成本的,與動(dòng)態(tài)環(huán)境完全交互,并且無需數(shù)據(jù)預(yù)處理即可使用。



今天,我們就先來看看網(wǎng)格焦散如何實(shí)現(xiàn)?
一、網(wǎng)格焦散
英偉達(dá)從一種稱為光子濺射(photon splatting)的光傳播方法的類別開始,通過重構(gòu)技術(shù)來模擬網(wǎng)格焦散,這是經(jīng)典光子映射的一種變體。
光子映射使用的方法有兩個(gè)階段:
【跟蹤階段(Tracing)】從光源到場景的光粒子(即光子)的正向跟蹤。
【密度估計(jì)階段(Density estimation)】在表面上的指定點(diǎn)周圍計(jì)算光子的密度,以進(jìn)行照明信息重建。
在英偉達(dá)的解決方案中,第二階段被替換為了光子濺射。它沒有找出局部光子密度,而是在光子撞擊不透明表面后使用加色混合的方法直接繪制顏色。
與傳統(tǒng)方法相比,噴濺具有多個(gè)優(yōu)點(diǎn)。它使用GPU光柵化來加快速度,只需要簡單的數(shù)據(jù)結(jié)構(gòu)就可以來存儲(chǔ)光子了,重要的是,它允許與光子微分耦合,這是一種以較低的計(jì)算成本提高圖像質(zhì)量的重要技術(shù)。
| 在UE4中使用網(wǎng)格焦散 |
Beta版發(fā)布通知:本文中討論的參數(shù),編輯UI和命令行在發(fā)布版本中可能會(huì)更改。在使用焦散功能之前,請確保已正確配置UE4中的光線追蹤設(shè)置。
要在UE4編輯器中啟用網(wǎng)格焦散,請首先完成以下設(shè)置:
1、檢查當(dāng)前「post-process volume 后期盒子」中的「Ray Tracing Mesh Caustics 光線追蹤網(wǎng)格焦散」是否勾選,選擇「啟用」打開網(wǎng)格焦散效果
2、勾選光源屬性表中的「Cast Mesh Caustics 投射網(wǎng)格焦散」,選擇用于投射焦散的光源。
3、選擇網(wǎng)格并導(dǎo)航至材質(zhì)來選擇要產(chǎn)生焦散的對象。如果材質(zhì)是透明的,則將材質(zhì)編輯器打開到「Details 詳細(xì)信息」選項(xiàng)卡,并勾選「Cast Ray Traced Reflection Caustics 投射光線追蹤反射焦散」和「Cast Ray Traced Refraction Caustics 投射光線追蹤折射焦散」。
配置完這些設(shè)置后,下圖顯示可以在玻璃和金屬物體周圍看到默認(rèn)的焦散效果。大多數(shù)光屬性(包括強(qiáng)度,顏色,紋理蒙版和衰減)都會(huì)對焦散的外觀產(chǎn)生直接影響。到目前為止,支持四種類型的光源:平行光、點(diǎn)光源、聚光燈、區(qū)域光。在同一視圖中,至多可以有八個(gè)燈光投射焦散。
來看看啟用焦散效果的步驟:



除了光源,焦散線的形狀、強(qiáng)度和顏色也受到網(wǎng)格材質(zhì)的基色、不透明度、法線貼圖、折射率、粗糙度和金屬值的影響。具有較高粗糙度或較低金屬值的不透明物體會(huì)產(chǎn)生較弱的焦散。透明物體可以投射反射和折射焦散,實(shí)現(xiàn)方式:在材質(zhì)編輯器的「Details 詳細(xì)信息」選項(xiàng)卡中勾選「Cast Ray Traced Reflection Caustics 投射光線追蹤反射焦散」和「Cast Ray Traced Refraction Caustics 投射光線追蹤折射焦散」。
在「post-process volume 后期盒子」中,還添加了可以調(diào)整網(wǎng)格焦散的一組參數(shù):
【Intensity 強(qiáng)度】可縮放焦散圖案的強(qiáng)度。
【Max Trace Depth 最大跟蹤深度】限制每條射線的最大反彈次數(shù),這可能會(huì)影響光線追蹤的性能。
【Enable Temporal Filtering 啟用時(shí)間過濾】可切換時(shí)間過濾,從而減少閃爍效果并提高性能。
| 光子調(diào)試 |
另外,如要要檢查實(shí)際的光子密度,在「viewport」菜單中,選擇「View」,?「Ray Tracing Debug」,?「Mesh Caustics Debug Data」,然后在「post-process volume」中設(shè)置調(diào)試屏幕數(shù)據(jù)類型為「photon」(見下圖)。

光線追蹤調(diào)試菜單也提供了一個(gè)嵌入的實(shí)時(shí)圖表來顯示前面的幀的總光子數(shù)(如下圖)。它可以通過在「post-process volume后期盒子」中設(shè)置「Debug Light Data Type調(diào)試光數(shù)據(jù)類型」為「Photon Count」來打開光子計(jì)數(shù)。

| 色散 |
若要啟用色散,在材質(zhì)編輯器的細(xì)節(jié)選項(xiàng)卡中,在材質(zhì)編輯器的「Details詳細(xì)信息」選項(xiàng)卡中將「Ray Traced Caustics Dispersion Amount光線追蹤焦散量」設(shè)置為大于0的值即可。為了避免色帶分離,需要勾選「Ray Traced Caustics Jittered Dispersion射線追蹤焦散抖動(dòng)色散」(見下圖)。

到這里,你是不是已經(jīng)能初步做出焦散效果了呢?更多精彩內(nèi)容下期呈現(xiàn),敬請期待。