999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于可控域扭曲和有序抖動(dòng)降噪的高性能云層湍流渲染

2021-02-28 14:22:10龔昱寧張嚴(yán)辭陳學(xué)超
關(guān)鍵詞:細(xì)節(jié)效果

龔昱寧,張嚴(yán)辭,,陳學(xué)超,聶 宇

(1.四川大學(xué) 軟件學(xué)院,成都 610207;2.四川大學(xué) 視覺合成圖形圖像技術(shù)國家重點(diǎn)學(xué)科實(shí)驗(yàn)室,成都 610065)

大氣渲染中的云層渲染,對(duì)于可交互應(yīng)用的真實(shí)感以及飛行模擬中身臨其境效果都有著重要的意義。近幾年,實(shí)時(shí)動(dòng)態(tài)云層模擬的性能以及真實(shí)感成為了一個(gè)討論熱題。在CryTek工作室[1]對(duì)云霧進(jìn)行數(shù)學(xué)建模的分析后,近幾年許多廠商據(jù)此提出了他們對(duì)于體積云以及體積霧的解決方案,諸如基于點(diǎn)云[2-3]、天氣貼圖[4-7]或者頂點(diǎn)網(wǎng)格[7]的形體建模方式,體素渲染[7]或光線邁進(jìn)[5-7]的渲染方式以及基于物理的體渲染光照模型[8-9]。體素渲染雖然可以提供更為準(zhǔn)確的結(jié)果,但是其開銷較大;光線邁進(jìn)(raymarching)實(shí)現(xiàn)簡(jiǎn)單,且渲染效率與體素渲染相比較高,且對(duì)于為遠(yuǎn)景云層而言,并不需要體素渲染這樣準(zhǔn)確的結(jié)果。在Rockstar Games的云霧實(shí)現(xiàn)中[7],對(duì)近處霧渲染使用了體素渲染,遠(yuǎn)處云層渲染使用了光線邁進(jìn)渲染。

地平線制作組[4]對(duì)湍流模擬的解決方案中,他們使用世界坐標(biāo)的線性偏移,與卷曲紋理和細(xì)節(jié)紋理采樣來模擬這樣一種湍流效果。但這種方法的效果與細(xì)節(jié)不足夠優(yōu)秀。對(duì)于云層加速渲染,現(xiàn)有的技術(shù)有通過時(shí)空重投影降低單幀渲染分辨率、藍(lán)噪聲偏移與時(shí)空降噪[10]等,但即使應(yīng)用了這些算法,云層渲染性能依舊不足夠高。

針對(duì)上述問題,本文分別在建模和渲染方面做出一些改進(jìn)。其中,在建模方面,為了讓動(dòng)態(tài)云層表現(xiàn)出有更加豐富細(xì)節(jié)的湍流效果,本文提出了一種通過對(duì)反Worley噪聲進(jìn)行域扭曲的算法,比地平線制作組提出的湍流效果,有著更真實(shí)且有更加豐富細(xì)節(jié)的效果,且這種方法可以很容易地整合進(jìn)現(xiàn)有云層渲染算法中。在渲染提速方面,本文提出了一種使用貝爾矩陣的作為光線邁進(jìn)偏移量的提高性能的算法,能有效降低達(dá)到光線邁進(jìn)需要達(dá)到較好效果的邁進(jìn)步數(shù),以此提高性能。且這種添加偏移量的方法,可以很好地與藍(lán)噪聲(blue noise)、時(shí)空重投影降低單幀渲染分辨率等方法進(jìn)行結(jié)合,再進(jìn)一步提高渲染效率。

1 相關(guān)工作

1.1 云的渲染

為了模擬更加真實(shí)的天空,讓3D程序使用者有更好的體驗(yàn)。對(duì)于自由度不高或沒有寫實(shí)性質(zhì)要求的應(yīng)用中往往采用簡(jiǎn)單的天空盒[11]或廣告牌[12]實(shí)現(xiàn)。然而這種實(shí)現(xiàn)方式存在無法較好地表達(dá)出云層的流動(dòng)效果、非真實(shí)感及走樣性強(qiáng)烈等大量問題。除此之外,也有使用頂點(diǎn)網(wǎng)絡(luò)與噪聲偏移來渲染云層[13],此方法開銷較小,但是無法表現(xiàn)出云層的動(dòng)態(tài)流動(dòng)效果,且每一片云都要人工放置,大幅度提升了工作量以及顯存占用存儲(chǔ)空間。

基于以上提到的幾點(diǎn)局限性,許多研究者開始探索動(dòng)態(tài)、開銷小且真實(shí)的云層渲染方式。近幾年,動(dòng)態(tài)云層的模擬在形狀建模與渲染上都有著較好發(fā)展。

形狀建模是指,用一種符合真實(shí)云形狀的數(shù)學(xué)建模,表征云層的密度分布情況。需要注意的是,這樣一種建模必須滿足可以并行,快速地查找任意一點(diǎn)的密度值,且有著連續(xù)而非離散的密度分布,以滿足實(shí)時(shí)渲染的需求。并且使用者(如游戲制作中的美術(shù)人員)可以根據(jù)自己所想快速建模出想要的云層類型以及分布情況。現(xiàn)有的云層形狀建 模 方 式 有 點(diǎn) 云[2-3]和 天 氣 貼 圖 建 模[5-7]2種。

點(diǎn)云可以很好地模擬云層因?yàn)闇囟纫约帮L(fēng)向的動(dòng)態(tài)變化,其核心思想是把每朵云看成一個(gè)單位,然后計(jì)算這個(gè)單位根據(jù)溫度、濕度、風(fēng)向等參數(shù)以及每朵云之間相互影響帶來的變化。也有人提出基于熱力學(xué)的建模方式[2],但是這種建模方式實(shí)時(shí)更新所需開銷較大,且存在每一次參數(shù)改變,GPU CPU都需要較多數(shù)據(jù)交互的問題,難以滿足實(shí)時(shí)渲染可交互應(yīng)用中的渲染需求。

2015年,地平線游戲制作組[4]提供的解決方案中使用了天氣貼圖建模的方式來建模。這種方法首先使用分布貼圖與高度貼圖,作為云層在不同高度與位置的密度分布情況,然后使用一張可平鋪的Perlin Worley噪聲紋理添加細(xì)節(jié)。雖然這樣一種建模方式無法模擬溫度、風(fēng)向等參數(shù)的改變所產(chǎn)生的基于物理的變化,但可以通過噪聲模擬流動(dòng)效果。并且所需消耗相比點(diǎn)云低許多,并且美術(shù)人員可以簡(jiǎn)單的地通過繪制天氣紋理得到他們需要的云層形狀與分布。這種方法已經(jīng)使用在許多實(shí)時(shí)渲染的可交互應(yīng)用中[4-6]。

這樣的模型進(jìn)行渲染一般通過光線邁進(jìn)來實(shí)現(xiàn)。光線邁進(jìn)是光線追蹤技術(shù)的一種變體,適用于一些特殊的情況,比如渲染有向距離場(chǎng)定義的物體或有體積等半透明的物體時(shí)。云層渲染即屬于這樣一種有體積的半透明物體。云層渲染中,根據(jù)CryTek工作室[1]提出的模型,在光線邁進(jìn)的每一步都需要根據(jù)當(dāng)前位置的密度,計(jì)算從視點(diǎn)到該位置累計(jì)光照值與累計(jì)削減度,本文通過朗伯比爾定律(Beer’s Law)來確定削減值。此外還需要計(jì)算光源發(fā)射出來的光線經(jīng)過該點(diǎn)散射進(jìn)觀測(cè)方向的輻照度,本文往往通過相位函數(shù)(phase function)來確定這個(gè)比例,根據(jù)介質(zhì)的不同,本文往往采取不同的相位函數(shù)模型,正如寒霜引擎技術(shù)分享[6]中所述,云的相位函數(shù)十分復(fù)雜,在實(shí)時(shí)渲染中,通常使用基于天文學(xué)[14]啟發(fā)的Henyey Greenstein模型,這幾年對(duì)此提出的改進(jìn),有基于經(jīng)驗(yàn)?zāi)P偷纳疤切Ч?5];與全局光照類似,某點(diǎn)折射向視點(diǎn)的輻照度不僅來源于光源的直接散射,同時(shí)也會(huì)受到其他部分散射到該點(diǎn)的光強(qiáng)度的影響,考慮到這些情況的復(fù)雜模型,若要求出準(zhǔn)確的解,需要大量的計(jì)算量。因此有研究者提出了基于多次迭代的近似公式[8]。基于以上物理模型,便可以得到基于物理較為準(zhǔn)確的渲染結(jié)果。

1.2 湍流流動(dòng)的云層建模

云層的實(shí)時(shí)湍流模擬可以增加云層流動(dòng)時(shí)的動(dòng)態(tài)細(xì)節(jié),給整體畫面帶來更強(qiáng)的真實(shí)感。但對(duì)其研究較少,近幾年只有地平線制作組[4-5]提出了他們的解決方案。地平線游戲制作組對(duì)湍流的模擬中,首先讓世界坐標(biāo)隨時(shí)間累計(jì)緩慢上升,模擬一種云層在向上流動(dòng)的效果。之后使用卷曲紋理對(duì)世界坐標(biāo)左右偏移營造出一種來回抖動(dòng)的效果,再將新的世界坐標(biāo)進(jìn)行比例縮放,處理為紋理坐標(biāo),對(duì)一張3D細(xì)節(jié)紋理坐標(biāo)進(jìn)行采樣,再將密度采樣結(jié)果與之前紋理貼圖建模過程中得到的結(jié)果進(jìn)行一定運(yùn)算方式的疊加,得到最終的密度。

1.3 域扭曲

域扭曲是計(jì)算機(jī)圖形學(xué)中一種用來產(chǎn)生過程性紋理或者模型的常見技術(shù)。這種方法對(duì)一個(gè)可以過程性產(chǎn)生連續(xù)分布的密度空間或者幾何形狀的輸入進(jìn)行扭曲,以得到一些期望的結(jié)果,藝術(shù)家們常用這種技術(shù)做出有藝術(shù)感的噪聲效果,現(xiàn)在也被用來做虛擬視景生成[16]。

1.4 貝爾矩陣

貝爾矩陣是一種用來有序抖動(dòng)的算法,最早是在印刷刊物時(shí)被用來表示不同透明度的一種技術(shù)。圖形學(xué)中現(xiàn)在也被用來讓物體變得透明等,也有使用這種技術(shù)來做圖像降噪[17]。

在一些體積光渲染[18-19]中,貝爾矩陣被用來提升光線邁進(jìn)中體積光渲染的效率。云層渲染的效率和光線邁進(jìn)的步數(shù)直接相關(guān),因此如果能減少步數(shù),便可以大幅度提高效率。受此啟發(fā),本文在云渲染中使用貝爾矩陣來減少步數(shù),提升渲染效率,發(fā)現(xiàn)其效果優(yōu)秀、性能提升較高。

2 本文方法

本文對(duì)云層渲染的實(shí)現(xiàn)中,流程上與地平線游戲制作組[4]提出的流程一致。對(duì)于更加豐富細(xì)節(jié)的湍流效果,本文在建模上進(jìn)行了些許更改;對(duì)于貝爾矩陣提升效率的部分,本文在渲染部分提出了更改,并且應(yīng)用了時(shí)空重投影[7,18](Temporal reprojection)。建模上,本文采用了一種基于可控域扭曲的建模方式,替代了地平線游戲制作組為模擬湍流效果而使用的卷曲噪聲。

雖然地平線制作組的湍流模擬算法可以模擬出云層在流動(dòng)時(shí)的湍流效果,但這樣的解決方案存在不足。首先,這樣的偏移方式在云層較快流動(dòng)時(shí)會(huì)帶來些許重復(fù)性的人造感;其次,云層發(fā)生變化的部位較小,無法讓云層整體因?yàn)橄瘳F(xiàn)實(shí)中因湍流等發(fā)生較大的形體變化;最后,因使用了卷曲噪聲與細(xì)節(jié)噪聲對(duì)云體邊緣進(jìn)行偏移,流動(dòng)方向上的邊緣缺乏連續(xù)性,會(huì)突然出現(xiàn)或者消失一小部分云。雖然可以通過增大紋理尺寸來減少重復(fù)性人造感問題,但另外2個(gè)問題無法解決,且這樣的彌補(bǔ)做法會(huì)占用更多的額外顯存空間,且會(huì)降低緩存命中率。

然而,使用域扭曲,在參數(shù)合理情況下則可以很好規(guī)避以上問題。域扭曲這種在噪聲基礎(chǔ)上再疊加噪聲的性質(zhì),可大幅度提升隨機(jī)序列的長度,減少了重復(fù)性。其次,在對(duì)云層整體形狀建模時(shí),應(yīng)用了域扭曲,而非像地平線制作組在整體形狀建模后用噪聲進(jìn)行偏移,本文做法可以讓不止只是邊緣細(xì)節(jié)發(fā)生更改,整體云的形狀也會(huì)發(fā)生變化,且變化會(huì)更加有連續(xù)性,不會(huì)有一部分云突然消失或者出現(xiàn)。

域扭曲使用到的布朗分形運(yùn)動(dòng)的疊加方式具有高度的自相似性,這也與湍流有著一定的自相似性符合。相比原方法,僅僅多了3次紋理采樣,且由于利用了GPU的高速緩存以及線程掛起機(jī)制[9],性能幾乎沒有降低,且不需要一張額外的卷曲紋理,降低了內(nèi)存消耗。本文對(duì)傳統(tǒng)域扭曲進(jìn)行了些許更改,讓其變得更加可控,使得其能根據(jù)風(fēng)向表現(xiàn)出更加符合風(fēng)向流動(dòng)的特點(diǎn)。結(jié)果上,與地平線游戲制作組相比,本文改進(jìn)后的湍流模擬效果所需內(nèi)存小且效果更加符合真實(shí)效果。整個(gè)流程如下:

步驟1 首先將深度緩存進(jìn)行降采樣以滿足時(shí)空重投影的需要。并根據(jù)深度緩存,當(dāng)前視點(diǎn)位置與預(yù)先設(shè)定的最大邁進(jìn)步數(shù)計(jì)算光線邁進(jìn)的步長。

步驟2 使用本文中的貝爾矩陣與藍(lán)噪聲等方式對(duì)邁進(jìn)步長進(jìn)行偏移。

步驟3 開始邁進(jìn),使用本文中帶有湍流效果的密度模型進(jìn)行采樣,并在每一步上計(jì)算累計(jì)的光照值與累積的削減值。

步驟4 判斷是否達(dá)到邁進(jìn)終點(diǎn)。若未到達(dá)終點(diǎn)則繼續(xù)邁進(jìn),若到達(dá)終點(diǎn)則結(jié)束邁進(jìn),繼續(xù)下一步。

步驟5 將最后的結(jié)果進(jìn)行時(shí)間重投影,并與場(chǎng)景渲染的結(jié)果進(jìn)行混合。最后便得到最終的渲染結(jié)果。

2.1 基于域扭曲的云層建模

湍流是一種較為復(fù)雜的物理現(xiàn)象,科學(xué)家至今為止也無法準(zhǔn)確地對(duì)湍流進(jìn)行建模來預(yù)測(cè)湍流的運(yùn)動(dòng)軌跡。不同的噪聲可以塑造出不同形狀與種類的云[20],但單純的一種噪聲很難與另一種噪聲簡(jiǎn)單疊加,模擬出云層流動(dòng)連續(xù)的動(dòng)感。若使用的噪聲無法表現(xiàn)出云層連續(xù)的動(dòng)感,則會(huì)造成很強(qiáng)的人造感。因此本文希望找到一種能近似表現(xiàn)連續(xù)流動(dòng)的特殊噪聲,用一種能隨時(shí)間發(fā)生連續(xù)變化的特殊噪聲來給云層添加細(xì)節(jié)。

根據(jù)Kolmogorov等[21]的理論,湍流在統(tǒng)計(jì)上不同比例下有自相似性。布朗分形運(yùn)動(dòng)噪聲[22]作為一種常被用來模擬自然場(chǎng)景的噪聲,由于其構(gòu)成上是由同一個(gè)噪聲的不同頻率進(jìn)行疊加,因此在統(tǒng)計(jì)上不同比例下也有較強(qiáng)的自相似性。但僅僅使用布朗分形運(yùn)動(dòng)來模擬云層的湍流,無法模擬云層局部連續(xù)的動(dòng)態(tài)。這是由于布朗分形運(yùn)動(dòng)的疊加過程是多個(gè)噪聲進(jìn)行疊加,這樣一種求和計(jì)算方式無法加入一個(gè)時(shí)間維度,讓噪聲發(fā)生像觀測(cè)到的湍流一樣發(fā)生局部的連續(xù)變化。而域扭曲可以讓經(jīng)過其變化的信號(hào)在一個(gè)新維度上發(fā)生連續(xù)的變化,這符合本算法的需求。

云層渲染建模需要使用Worley噪聲與Perlin Worley噪聲等2種噪聲。本文分別對(duì)2種噪聲進(jìn)行布朗分形運(yùn)動(dòng)疊加后再進(jìn)行域扭曲,結(jié)果如圖1與圖2所示(為了方便觀察,在亮度上進(jìn)行了非線性縮放)。本文將得到結(jié)果與使用染料在流體中觀測(cè)到湍流進(jìn)了對(duì)比[23],如圖3所示。

圖1 域扭曲反Worley噪聲效果圖

圖2 域扭曲Perlin Worley噪聲效果圖

圖3 通過染料在流體中觀測(cè)到湍流效果圖

本文發(fā)現(xiàn)使用了布朗分形運(yùn)動(dòng)的反Worley噪聲(圖1)進(jìn)行域扭曲的結(jié)果,與在空氣中觀察到的湍流的形體具有相似性,都有旋渦且保持旋轉(zhuǎn),局部發(fā)生著持續(xù)變化,而部分與部分之間的關(guān)系發(fā)生的變化不大,且反Worley噪聲在建模中擔(dān)任了添加細(xì)節(jié)的作用,讓渲染出的云有著“西藍(lán)花”狀,因此在實(shí)現(xiàn)上對(duì)其隨著時(shí)間變化的幅度限制較低。

Perlin Worley噪聲得到結(jié)果也與觀察結(jié)果有部分相似性,但其整體的變化過大,并且Perlin Worley在云層模型建模中擔(dān)任著表達(dá)云朵與云朵間位置的骨架作用,經(jīng)過域扭曲的變化會(huì)讓云朵有隨機(jī)搖擺的效果而顯得不真實(shí)。但為了讓云的整體形態(tài)隨著時(shí)間有一定的變化,在算法實(shí)現(xiàn)上使用了一定參數(shù),控制其變化范圍。

一維布朗分形運(yùn)動(dòng)的域扭曲的通用公式為:

布朗分形運(yùn)動(dòng)的域扭曲是一個(gè)反復(fù)迭代的過程,上面通用公式中offsetn表示第n次迭代時(shí)的偏移值,an表示第n次迭代時(shí)頻率發(fā)生的變化。多維布朗分形運(yùn)動(dòng)的域扭曲可以由這個(gè)公式進(jìn)行拓展,在每次迭代的時(shí)候用上一次的結(jié)果(多維),將這個(gè)多維結(jié)果用不同布朗分形噪聲(或者一個(gè)布朗分形噪聲針對(duì)每一維進(jìn)行一些偏移)進(jìn)行采樣,產(chǎn)生多維結(jié)果,再將這個(gè)結(jié)果傳入下一次迭代。最后若要獲取一個(gè)標(biāo)量,便可以由最后一次結(jié)果對(duì)一個(gè)布朗分形噪聲進(jìn)行采樣以獲取單個(gè)標(biāo)量的結(jié)果。

受此啟發(fā),本文對(duì)地平線游戲制作組[4]中的建模進(jìn)行了更改。

原算法為:首先用經(jīng)過的時(shí)間乘以一個(gè)期望的變化頻率,再乘以向上方向單位向量,再加到采樣點(diǎn)的世界坐標(biāo)位置上,以此來進(jìn)行一定的偏移;其次,根據(jù)得到的坐標(biāo)對(duì)Worley Perlin噪聲、反Worley噪聲與形狀建模貼圖進(jìn)行采樣,再使用了一種特定的方式對(duì)2個(gè)噪聲的采樣結(jié)果進(jìn)行疊加。之后再使用卷曲噪聲對(duì)世界坐標(biāo)進(jìn)行進(jìn)一步的偏移,再用這個(gè)坐標(biāo)對(duì)一個(gè)細(xì)節(jié)Worley噪聲進(jìn)行采樣;最后將這個(gè)結(jié)果與之前的結(jié)果用一種特定的方式進(jìn)行疊加。

本文的改變是:首先去掉了向上偏移,因?yàn)閷⑹澜缱鴺?biāo)向上偏移的目的是通過讓描繪云層細(xì)節(jié)的噪聲向上浮動(dòng)來模擬云層內(nèi)部的動(dòng)態(tài)變化,這種近似方法十分不準(zhǔn)確,會(huì)帶來較強(qiáng)的人造感效果。且若保留,會(huì)將這種人造感效果帶到本文算法的實(shí)現(xiàn)中,會(huì)降低本算法的渲染質(zhì)量。并且本文的算法已讓云層有較為豐富的動(dòng)態(tài),不再需要這樣一種簡(jiǎn)易處理方式來增加云層的動(dòng)態(tài)。本文對(duì)原算法的改進(jìn)如下:

算法1 基于域扭曲的可控湍流建模。

輸入:當(dāng)前點(diǎn)的世界坐標(biāo)WorldPos

根據(jù)風(fēng)向計(jì)算風(fēng)向的單位向量WindDir

湍流振幅TurbulenceScale

湍流抖動(dòng)的范圍DisplacementScale

抖動(dòng)頻率Frequency

云層上下流動(dòng)幅度UpandDownScale

控制整體形變大小的Displacement

FormSize

輸出:當(dāng)前點(diǎn)的密度采樣結(jié)果ResultDensity

//計(jì)算域扭曲所需偏移量

三維用來存儲(chǔ)湍流迭代信息的向量q;

q.x=SampleFBMofWorley(WorldPos+Wind Dir.x Frequency) WindDir.x;

q.y=SampleFBMofWorley(WorldPos+Upand DownScale Frequency) UpandDownScale;

q.z=SampleFBMofWorley(WorldPos+Wind Dir.z Frequency) WindDir.z;

//根據(jù)域扭曲對(duì)紋理噪聲進(jìn)行采樣

DMWResult=SampleFBMofWorley(WorldPos+q TurbulenceScale);

DMPWResult=SampleFBMofPerlinWorley(World Pos+q TurbulenceScale);

OriWResult=SampleFBMofWorley(WorldPos+q TurbulenceScale);

OriPWResult=SampleFBMofPerlinWorley(WorldPos+q TurbulenceScale);

//對(duì)域扭曲表現(xiàn)出來的幅度加以控制

FinWResult=lerp(OriWResult,DMWResult,Dis placementScale);

FinPWResult=lerp(OriPWResult,DMPWResult,DisplacementFormSize)

//進(jìn)行混合

ResultDensity=RemapClamped(FinWResult,-0.3f FinPWResult,1.0,0.0,1.0)。

第1部分,為了實(shí)現(xiàn)較為可控的域扭曲,本文對(duì)每個(gè)分量進(jìn)行域扭曲計(jì)算時(shí),用風(fēng)向WindDir以及用戶指定的上下流動(dòng)幅度UpandDownScale、振幅TurbulenceScale、頻率Frequency進(jìn)行了限制。這些參數(shù)除了設(shè)定成標(biāo)量以外,也可以像天氣紋理一樣由紋理獲得,以得到更加精致的結(jié)果。通過這樣的設(shè)置,本文可以得到更加可控的域扭曲結(jié)果,會(huì)對(duì)后面產(chǎn)生的動(dòng)態(tài)效果帶來極為重要的影響。最后得到了本文經(jīng)過域扭曲后的紋理坐標(biāo)(WorldPos+q TurScale)。

第2部分,本文對(duì)沒有經(jīng)過域扭曲與經(jīng)過域扭曲的反Worley噪聲、Perlin Worley噪聲分別進(jìn)行了采樣。

第3部分,本文對(duì)2次反Worley噪聲的采樣結(jié)果(DMWyResult,OriWResult)進(jìn)行混合,用一個(gè)參數(shù)DisplacementScale來控制從原結(jié)果到域扭曲的結(jié)果的變化比例,從另外一個(gè)角度限制域扭曲,確保了結(jié)果的準(zhǔn)確。同樣的操作,也對(duì)Perlin Worley噪聲采樣時(shí)使用(DMPWResult,OriPWRe sult),用DisplacementFormSize控制扭曲比例。

第4部分,本文應(yīng)用了地平線游戲制作組[4]將2種噪聲進(jìn)行疊加的方式,獲得了最后的結(jié)果

ResultDensity。

本文去掉了對(duì)卷曲噪聲取樣這一步,但保留了使用細(xì)節(jié)紋理,為最后云層整體添加細(xì)節(jié)。

通過多個(gè)參數(shù)的控制,本文對(duì)域扭曲這種隨機(jī)過程進(jìn)行了控制,使得最終結(jié)果更加可控。

2.2 基于貝爾矩陣的性能優(yōu)化

云層渲染由光線邁進(jìn)實(shí)現(xiàn)。近幾年來有許多方法來提高效率,一定程度緩解了云層渲染需要的光線邁進(jìn)所帶來的較大開銷。本文提出的貝爾矩陣的性能優(yōu)化,可以進(jìn)一步通過減少邁進(jìn)步數(shù),并且可以與近幾年提出的藍(lán)噪聲[7]以及重投影等方式相互結(jié)合,進(jìn)一步提升效率。

貝爾矩陣的公式為:

貝爾矩陣是一個(gè)迭代的過程,M2n代表第n次迭代得到的2n2n大小的矩陣,對(duì)于高階的矩陣(n>2),每一個(gè)矩陣都可以由這個(gè)公式迭代得到。

在云層渲染中,由于相近像素點(diǎn)之間的密度存在一定的相似性,為了利用領(lǐng)域的相似性,若使用高斯模糊等方式進(jìn)行卷積的操作,會(huì)大大降低細(xì)節(jié)的豐富度。光線邁進(jìn)從起點(diǎn)開始,向前連續(xù)邁進(jìn)相同的單位步長進(jìn)行采樣,若起點(diǎn)向前偏移一定的單位步長(0~1之間)再進(jìn)行采樣,將多次采樣的結(jié)果進(jìn)行取均值,便可以得到更加貼近準(zhǔn)確的值,這樣的方式可以類比于用蒙特卡洛算法,但是需要大量的計(jì)算量,時(shí)空重投影中就是采用了這樣一個(gè)特性,并利用低差異序列以及藍(lán)噪聲進(jìn)行偏移,將多次的結(jié)果累計(jì),進(jìn)而得到更加精確的值。

基于貝爾矩陣的優(yōu)化受到上面兩者的啟發(fā),通過把整體渲染紋理分為多個(gè)4×4的部分(本文使用了4×4的貝爾矩陣),在光線邁進(jìn)的起點(diǎn),用該點(diǎn)對(duì)應(yīng)這個(gè)4×4矩陣所在位置的值與單位步長的乘積作為起點(diǎn)向前的偏移量,再進(jìn)行光線邁進(jìn)。因?yàn)橄嘟倪~進(jìn)結(jié)果會(huì)有相似的結(jié)果,通過貝爾矩陣這樣一種視覺欺騙方式,通過周圍的結(jié)果累計(jì)了自己不同初始偏移量的近似值。并且不會(huì)像高斯模糊一樣產(chǎn)生過于模糊或產(chǎn)生出現(xiàn)“一層一層”的結(jié)果。

本文使用的4×4貝爾矩陣如下:

作為結(jié)果,即使較少的采樣數(shù)情況,也可以得到很好地效果。

3 實(shí)驗(yàn)效果

3.1 實(shí)驗(yàn)環(huán)境

本次實(shí)驗(yàn)使用了3 840 2 160的渲染分辨率與GTX2080的顯卡。為了很好地整合進(jìn)現(xiàn)有的渲染管線,本文在Unity3D(2019.2.15f1)上進(jìn)行了實(shí)驗(yàn)。

3.2 域扭曲實(shí)驗(yàn)效果

為表現(xiàn)該論文湍流效果的先進(jìn)性,本節(jié)將具有本文實(shí)現(xiàn)帶有湍流效果的云與2015年地平線游戲制作組技術(shù)分享[4]中提到的帶有湍流效果的云進(jìn)行了對(duì)比。其中域扭曲組是本文實(shí)現(xiàn)的算法。而原實(shí)現(xiàn)組是地平線制作組在技術(shù)分享上提到的算法,其核心是用一張卷曲噪聲貼圖對(duì)世界坐標(biāo)進(jìn)行偏移來模擬流動(dòng)的效果。本文分別從云層上方以及下方進(jìn)行了對(duì)比,并采用了1幀/s方式記錄云的變化,然后用序列幀的方式拼接在下方。為方便觀察,在本部分修改了光照渲染的系數(shù),使得云層的邊緣更易于觀察。從上方觀測(cè)時(shí),域扭曲組和原實(shí)現(xiàn)組的效果圖分別圖4和圖5所示。

圖4 從上方觀測(cè)時(shí)域扭曲組效果圖

圖5 從上方觀測(cè)時(shí)原實(shí)現(xiàn)組效果圖

整體上,按照本文方法,渲染出的云具有更豐富的扭動(dòng)細(xì)節(jié),并且運(yùn)動(dòng)模式像湍流一樣有著自相似性,云層整體也發(fā)生些許形態(tài)變化。而對(duì)比組的動(dòng)態(tài)幅度較低,在近處觀測(cè)時(shí)會(huì)出現(xiàn)明顯的人造感。

從上方觀測(cè)云時(shí),本文使用域扭曲組進(jìn)行了位置的固定,以更加方便觀察。而原來的實(shí)現(xiàn),因算法的需求要在流動(dòng)時(shí)才能產(chǎn)生湍流效果,因此隨著時(shí)間變化,存在著向屏幕方向的流動(dòng)。通過對(duì)比,域扭曲組對(duì)云層整體形狀以及周圍細(xì)節(jié)皆存在著持續(xù)性的變化,而原方法只在云層邊緣發(fā)生著些許的擾動(dòng),形狀變化相對(duì)于本文的實(shí)現(xiàn)較為生硬。從下方觀測(cè)時(shí),域扭曲組和原實(shí)現(xiàn)組的效果圖分別圖6和圖7所示。

圖6 從下方觀測(cè)時(shí)域扭曲組效果圖

圖7 從下方觀測(cè)時(shí)原實(shí)現(xiàn)組效果圖

在從下方觀測(cè)云層底部時(shí),可以發(fā)現(xiàn)帶有湍流建模組云層內(nèi)部以及整體發(fā)生著些許的形狀變化,并且在云層邊緣有著更加豐富的上下流動(dòng)效果,給云層流動(dòng)帶了更加豐富的細(xì)節(jié)與真實(shí)感。而原實(shí)現(xiàn)組只有處于外側(cè)的云發(fā)生了形態(tài)上的變化,云層整體發(fā)生變化較小,整體的動(dòng)態(tài)相對(duì)于本文的實(shí)現(xiàn)較為生硬。

3.3 貝爾矩陣實(shí)驗(yàn)效果

為表現(xiàn)本文使用貝爾矩陣對(duì)效率提升的先進(jìn)性,本文與SIGGRAPH2019 Rockstar Games[7]技術(shù)分享中提出的藍(lán)噪聲的加速渲染效率進(jìn)行了對(duì)比。

本文在應(yīng)用時(shí)空重投影與降低分辨率渲染的基礎(chǔ)上,將“不應(yīng)用藍(lán)噪聲與貝爾矩陣”、“只用藍(lán)噪聲[7](即對(duì)比論文中的算法)”、“與用貝爾矩陣與藍(lán)噪聲(本文實(shí)現(xiàn)算法)”這三者在不同邁進(jìn)數(shù)下得到的結(jié)果進(jìn)行了對(duì)比。邁進(jìn)數(shù)是指,將從視點(diǎn)發(fā)射的射線跟云層相交最高處與最低處的2個(gè)交點(diǎn)所連成的線段分為多少份來進(jìn)行采樣。越高的邁進(jìn)數(shù)意味著采樣間距越小,得到的結(jié)果也更為準(zhǔn)確。

雨云由于密度相比于層云更高,因此在邁進(jìn)累計(jì)上更容易出現(xiàn)因?yàn)楣庹账p值達(dá)到閾值而使得算法提前結(jié)束,這樣的情況會(huì)讓算法整體運(yùn)行更快。為表達(dá)本算法在多種情況下都有其先進(jìn)性,本部分別在雨云與層云情況下,對(duì)不同邁進(jìn)步數(shù)得到的結(jié)果進(jìn)行對(duì)比與分析。

在層云情況下,實(shí)驗(yàn)結(jié)果如圖8~10所示。每一組中,從左到右、從上到下,依次為邁進(jìn)數(shù)8,16,24,32,48,64。

圖8 層云下不應(yīng)用藍(lán)噪聲與貝爾矩陣效果圖

圖9 層云下只應(yīng)用藍(lán)噪聲效果圖

圖10 層云下應(yīng)用藍(lán)噪聲與貝爾矩陣效果圖

圖11 為不使用藍(lán)噪聲與貝爾矩陣,使用128步邁進(jìn)數(shù)時(shí)達(dá)到的收斂效果,以其效果作為對(duì)照組,對(duì)照組中用紅色標(biāo)出來的部分為每一組實(shí)驗(yàn)組中截取的部分。表1為各個(gè)組在不同步數(shù)下渲染每一幀所需的時(shí)間。

圖11 層云下對(duì)照組效果圖

表1 層云下不同算法在層云渲染所需時(shí)間 ms

其中,第1組在48步及其以上時(shí)不再出現(xiàn)“分層”問題與細(xì)節(jié)缺失問題,64步及其以上時(shí)才不會(huì)存在畫面抖動(dòng)現(xiàn)象。第2組在32步及其以上時(shí)不存在“分層”問題與細(xì)節(jié)缺失問題,48步及其以上時(shí)不再存在畫面抖動(dòng)問題。第3組即使在8步時(shí)也不存在“分層”問題,但8步時(shí)存在細(xì)節(jié)丟失問題,第16步及其以上不再存在抖動(dòng)與細(xì)節(jié)丟失問題。由此可見,第1組需要達(dá)到跟對(duì)照組近似的效果需要的渲染步數(shù)是64步,每一幀需要17.0 ms的渲染時(shí)間。作為對(duì)比算法的第2組,達(dá)到近似的效果需要48步,即每一幀需要13.6 ms的渲染時(shí)間。本文算法的第3組達(dá)到近似效果需要16步,即每幀需要7.0 ms的渲染時(shí)間。本文算法相比第一組性能提升了58.8%,相比第二組的對(duì)比實(shí)驗(yàn)提升了48.5%。

在積云情況下,實(shí)驗(yàn)結(jié)果如圖12~14所示。每組中,與步數(shù)對(duì)應(yīng)的關(guān)系與前文一致。圖15為渲染效果的對(duì)照組。對(duì)照組中用紅色標(biāo)出來的部分為每組實(shí)驗(yàn)組中截取的部分。表2為各個(gè)組在不同步數(shù)下渲染每幀所需的時(shí)間。

圖12 積云下不應(yīng)用藍(lán)噪聲與貝爾矩陣效果圖

圖13 積云下只應(yīng)用藍(lán)噪聲效果圖

圖14 積云下應(yīng)用藍(lán)噪聲與貝爾矩陣效果圖

圖15 積云下對(duì)照組效果圖

表2 積云下不同算法在層云渲染所需時(shí)間 ms

其中,第一組在64步及其以上時(shí)不再出現(xiàn)“分層”問題,64步及其以上時(shí)才不會(huì)存在畫面抖動(dòng)與細(xì)節(jié)確實(shí)現(xiàn)象。第2組在48步及其以上時(shí)不存在“分層”問題與細(xì)節(jié)缺失問題,64步及其以上時(shí)不再存在畫面抖動(dòng)問題。第3組即使在8步時(shí)也不存在“分層”問題,第16步及其以上也不再存在抖動(dòng)問題,但16步時(shí)存在細(xì)節(jié)缺失的問題,24步及其以上時(shí)不再存在細(xì)節(jié)缺失的問題。由此可見,第1組需要達(dá)到跟對(duì)照組近似的效果,需要的渲染步數(shù)是64步,每幀需要11.8 ms的渲染時(shí)間。作為對(duì)比算法的第2組達(dá)到近似的效果需要64步,即每幀需要11.8 ms的渲染時(shí)間。本文算法的第3組達(dá)到近似的效果需要24步,即每幀需要6.5 ms的渲染時(shí)間。相比于第1組與第2組,本文算法性能上提升了44.9%。

在邁進(jìn)數(shù)較低時(shí),雖然本文算法渲染每一幀所消費(fèi)時(shí)間偏多一些,但是能帶來更好的效果。總體上,本文算法能用較低邁進(jìn)數(shù)得到另外兩組需用較高邁進(jìn)數(shù)才能得到的效果。相對(duì)于Rock star Games[7]中提出的方法,本文算法有著45%左右性能的提升。

4 結(jié)論

提出了使用域扭曲對(duì)云層進(jìn)行建模,給流動(dòng)云層帶來了更多的湍流細(xì)節(jié)。且將貝爾矩陣應(yīng)用到了云層渲染上,對(duì)光線邁進(jìn)的起始點(diǎn)進(jìn)行偏移,大幅度減少了達(dá)到較好效果所需的邁進(jìn)數(shù)。實(shí)驗(yàn)表明,本文算法給動(dòng)態(tài)云層帶來更加豐富的湍流效果,讓云層的動(dòng)態(tài)更加真實(shí)與豐富。同時(shí),提升了云層渲染的性能。后續(xù)將考慮把這種建模方法應(yīng)用在霧以及體積光上,給這2種體渲染帶來更加豐富的細(xì)節(jié)。

猜你喜歡
細(xì)節(jié)效果
按摩效果確有理論依據(jù)
以細(xì)節(jié)取勝 Cambridge Audio AXR100/ FOCAL ARIA 906
迅速制造慢門虛化效果
留心細(xì)節(jié)處處美——《收集東·收集西》
奇妙的細(xì)節(jié)
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
細(xì)節(jié)取勝
Coco薇(2016年10期)2016-11-29 19:59:58
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
決定成敗的,絕不是細(xì)節(jié)
山東青年(2016年1期)2016-02-28 14:25:30
3D—DSA與3D—CTA成像在顱內(nèi)動(dòng)脈瘤早期診斷中的應(yīng)用效果比較
主站蜘蛛池模板: 玖玖精品视频在线观看| 性69交片免费看| 色屁屁一区二区三区视频国产| 亚洲一区色| 日日摸夜夜爽无码| 99视频在线免费观看| 国产精品区网红主播在线观看| 亚洲视频三级| 国产欧美综合在线观看第七页| 国产精品va| 一级做a爰片久久免费| 丁香五月亚洲综合在线| 亚洲欧美日韩另类在线一| 亚洲香蕉在线| 日韩天堂网| 欧美在线观看不卡| 欧美a级完整在线观看| 无码精品国产VA在线观看DVD | 亚洲AV无码不卡无码| 亚洲色图另类| a欧美在线| 色婷婷亚洲十月十月色天| 亚洲三级影院| 免费jizz在线播放| 欧美一级大片在线观看| AⅤ色综合久久天堂AV色综合| 国产白丝av| 男人天堂亚洲天堂| Aⅴ无码专区在线观看| 无码国产伊人| 亚洲人成网站在线观看播放不卡| 思思99热精品在线| 欧美日韩成人在线观看 | 国产综合色在线视频播放线视| 久久这里只精品热免费99| 久久国产亚洲偷自| 国产香蕉国产精品偷在线观看| 久久精品人人做人人爽电影蜜月 | 亚亚洲乱码一二三四区| 欧美中文一区| 四虎成人在线视频| 国产全黄a一级毛片| 精品在线免费播放| 国产在线视频福利资源站| 久久精品无码一区二区日韩免费| 国产无码精品在线播放| 视频二区亚洲精品| 免费在线成人网| 久久精品aⅴ无码中文字幕| 浮力影院国产第一页| 亚洲第一极品精品无码| a欧美在线| 中字无码精油按摩中出视频| 国产香蕉在线| 天天色综网| 国产乱子伦精品视频| 国产第一页屁屁影院| 久久综合色88| 中文无码精品A∨在线观看不卡 | 亚洲一区精品视频在线| 亚洲啪啪网| 999在线免费视频| 国产综合在线观看视频| 凹凸国产分类在线观看| 人人91人人澡人人妻人人爽| av在线手机播放| 欧美人人干| 中文字幕永久在线观看| 亚洲成A人V欧美综合| 免费国产无遮挡又黄又爽| 国产精品黄色片| 欧美日韩亚洲国产主播第一区| 国产主播喷水| 中国毛片网| 日韩欧美国产精品| 欧美日本不卡| 99久久免费精品特色大片| 亚洲乱伦视频| 国产成熟女人性满足视频| 欧美精品1区| 91蜜芽尤物福利在线观看| 99热国产这里只有精品无卡顿"|