本發(fā)明涉及實(shí)時(shí)繪制技術(shù)領(lǐng)域,具體涉及一種基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法。
背景技術(shù):
在實(shí)時(shí)繪制領(lǐng)域,光照的計(jì)算對于最終生成圖像的真實(shí)感起到了至關(guān)重要的作用,尤其是間接光照的繪制,能帶來遠(yuǎn)超越只計(jì)算直接光照的繪制真實(shí)感,在電影工業(yè)、游戲制作、虛擬現(xiàn)實(shí)等領(lǐng)域中具有廣泛的需求和應(yīng)用。
傳統(tǒng)的實(shí)時(shí)繪制領(lǐng)域較少的考慮間接光照的計(jì)算,通常只計(jì)算直接光照就輸出最終的繪制結(jié)果。近幾年來隨著硬件性能的提升,使得在實(shí)時(shí)繪制領(lǐng)域,利用屏幕空間信息來進(jìn)行間接光照計(jì)算成為可能,其中,使用光探針通過插值進(jìn)行計(jì)算是近年較為流行的技術(shù),然而,該方法雖然能夠獲得不錯(cuò)的效果,但是卻只能捕獲周圍環(huán)境中漫反射的光照信息,對于高光的信息還是沒有辦法解決。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法,能夠?qū)崟r(shí)性地計(jì)算間接高光,解決了目前使用光探針僅能計(jì)算漫反射間接光照的問題,使得可以在幾乎相同的框架下,進(jìn)行間接高光反射的計(jì)算,提高了間接高光光照計(jì)算的效率。
一種基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法,包括:
步驟1,對目標(biāo)場景進(jìn)行初步規(guī)劃分布,得到若干光探針探測點(diǎn);
步驟2,針對每個(gè)光探針探測點(diǎn)進(jìn)行周圍環(huán)境高光的渲染計(jì)算,得到相應(yīng)的入射光場;
步驟3,對于每個(gè)入射光場,通過一組vMF分布函數(shù)擬合入射光場信息;
步驟4,依據(jù)渲染點(diǎn)的位置以及步驟1中光探針探測點(diǎn)的位置,得到渲染點(diǎn)周圍鄰域內(nèi)的光探針探測點(diǎn),對這些光探針探測點(diǎn)的vMF分布函數(shù)進(jìn)行插值計(jì)算,得到利用vMF分布函數(shù)表達(dá)的渲染點(diǎn)的高光信息;
步驟5,利用步驟4得到的高光信息進(jìn)行光照計(jì)算并輸出。
作為優(yōu)選,步驟1中,對目標(biāo)場景中包含較多信息的區(qū)域進(jìn)行多面體劃分,每個(gè)多面體的頂點(diǎn)為一個(gè)光探針探測點(diǎn)。
較多信息的區(qū)域根據(jù)需要進(jìn)行選擇,通常選擇將包含較多信息的區(qū)域劃分為多個(gè)立方體或八面體,每個(gè)立方體或八面體的頂點(diǎn)作為一個(gè)光探針探測點(diǎn),若干個(gè)光探針探測點(diǎn)能夠較為完整地捕捉到目標(biāo)場景的信息。
步驟2中,針對每個(gè)光探針探測點(diǎn)進(jìn)行周圍環(huán)境高光的渲染計(jì)算,得到以光探針探測點(diǎn)為中心的周圍場景的所有光照信息,即所述的入射光場。
步驟3中,將入射光場擬合為一組vMF分布函數(shù),并將分布函數(shù)的參數(shù)進(jìn)行預(yù)存。由于每個(gè)入射光場近似地通過一組vMF分布函數(shù)進(jìn)行表達(dá),可以將每個(gè)光探針探測點(diǎn)所需要存儲的信息大幅度地簡化壓縮。
作為優(yōu)選,每個(gè)vMF分布函數(shù)的參數(shù)分為三組,第一組為二維極坐標(biāo)表達(dá)的軸線方向μ,第二組為vMF分布寬度λ,第三組為三維顏色值c(R,G,B分量),步驟3中,使用L-BFGS-B最優(yōu)化算法進(jìn)行擬合,采用固定兩組參數(shù)擬合一組參數(shù)的循環(huán)迭代過程取得最優(yōu)解。
作為優(yōu)選,步驟4中,將vMF分布函數(shù)轉(zhuǎn)換為使用平均方向r表達(dá),在渲染點(diǎn)所處的多面體內(nèi),對多面體頂點(diǎn)位置的平均方向r進(jìn)行插值,得到渲染點(diǎn)的平均方向r,然后得到渲染點(diǎn)的vMF分布函數(shù)。
本發(fā)明解決了目前使用光探針僅能計(jì)算漫反射間接光照的問題,同時(shí)支持運(yùn)動(dòng)光源的實(shí)時(shí)動(dòng)態(tài)計(jì)算,使得可以在幾乎相同的框架下進(jìn)行間接高光反射的計(jì)算,提高了間接高光光照計(jì)算的效率。
附圖說明
圖1為本發(fā)明基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖,對本發(fā)明基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法做詳細(xì)描述。
如圖1所示,一種基于光探針插值動(dòng)態(tài)計(jì)算間接反射高光的渲染方法,包括:
步驟1,對目標(biāo)場景進(jìn)行初步規(guī)劃分布,得到若干光探針探測點(diǎn)。
具體操作為:對目標(biāo)場景中包含較多信息的區(qū)域進(jìn)行立方體劃分,每個(gè)立方體的頂點(diǎn)為一個(gè)光探針探測點(diǎn),所有光探針探測點(diǎn)能夠較為完整地捕捉到目標(biāo)場景的信息。
步驟2,針對每個(gè)光探針探測點(diǎn)進(jìn)行周圍環(huán)境高光的渲染計(jì)算,得到相應(yīng)的入射光場。入射光場,即以光探針探測點(diǎn)為中心,周圍場景的光照信息,每個(gè)光探針探測點(diǎn)對應(yīng)一個(gè)入射光場。
步驟3,對于每個(gè)入射光場,通過一組vMF分布函數(shù)擬合入射光場信息。
一個(gè)入射光場可以近似地通過一組vMF分布函數(shù)參數(shù)進(jìn)行表達(dá),從而使光探針探測點(diǎn)所需要存儲的信息大幅度地被簡化并壓縮。
每個(gè)vMF分布函數(shù)的參數(shù)共計(jì)六個(gè),且分為三組,第一組為二維極坐標(biāo)表達(dá)的軸線方向μ,第二組為vMF分布寬度λ,第三組為三維顏色值c(R,G,B分量),為了加速求解過程,步驟3中,使用L-BFGS-B最優(yōu)化算法進(jìn)行擬合,采用固定兩組參數(shù)擬合一組參數(shù)的循環(huán)迭代過程取得最優(yōu)解,得到能夠擬合入射光場的一組vMF分布函數(shù)。
步驟4,依據(jù)渲染點(diǎn)的位置以及步驟1中光探針探測點(diǎn)的位置,得到渲染點(diǎn)周圍鄰域內(nèi)的光探針探測點(diǎn),對這些光探針探測點(diǎn)的vMF分布函數(shù)進(jìn)行插值計(jì)算,得到利用vMF分布函數(shù)表達(dá)的渲染點(diǎn)的高光信息。
依據(jù)渲染點(diǎn)的位置可以得到渲染點(diǎn)所在的立方體,利用該立方體所在頂點(diǎn)的光探針探測點(diǎn)的vMF分布函數(shù)進(jìn)行三線性插值計(jì)算,得到利用vMF分布函數(shù)表達(dá)的高光信息。
該步驟中,將vMF分布函數(shù)轉(zhuǎn)換為使用平均方向r表達(dá),在渲染點(diǎn)所處的多面體內(nèi),對多面體頂點(diǎn)位置的平均方向r進(jìn)行插值,得到渲染點(diǎn)的平均方向r,然后得到渲染點(diǎn)的vMF分布函數(shù)。
vMF(vonMises-Fishder distribution)是一個(gè)概率密度分布函數(shù),描述的是在給定軸線方向μ以后,求方向s的概率分布γ(s):
γ(s)=c(κ)eκ(μs)
其中,κ是所需要描述的BRDF函數(shù)寬度的倒數(shù),越高的κ表示方向越集中。
是歸一化因子,sinh是雙曲正弦函數(shù),除了c(κ)以外,vMF分布和球面高斯(Spherical Gaussian)分布是完全一樣的。
當(dāng)κ遠(yuǎn)大于1時(shí),vMF近似為以下形式:
將由γ(κ,s)表示的vMF分布函數(shù),重新表示為||r||的分布函數(shù)γ(||r||),假設(shè)有一組方向si,i∈[1,M]是由一個(gè)vMF分布函數(shù)γ(s)中產(chǎn)生的一組方向,M為投影區(qū)域內(nèi)包含的像素?cái)?shù)量,通過計(jì)算非歸一化的平均方向來逆向估算該vMF分布函數(shù)的參數(shù),r指向了對應(yīng)BRDF函數(shù)的平均方向,也即該vMF分布的軸向,而||r||則表明了該平均方向的長度,也即相應(yīng)BRDF函數(shù)的寬度。
步驟5,利用步驟4得到的高光信息進(jìn)行光照計(jì)算并輸出。