基于光輝噴灑的圖像渲染方法
【專利摘要】本發(fā)明公開了一種基于光輝噴灑的圖像渲染方法,該圖像渲染方法通過像素對場景采樣,確定各個(gè)像素的采樣點(diǎn),反向根據(jù)輻射度公式計(jì)算每個(gè)采樣點(diǎn)對每個(gè)像素的光輝貢獻(xiàn)值,并轉(zhuǎn)化為輻射出度,將對該像素點(diǎn)的影響的權(quán)重值大于設(shè)定閾值的采樣點(diǎn)的輻射出度進(jìn)行加權(quán)累加得到輻射出度加權(quán)和,然后利用該輻射出度加權(quán)和對該像素進(jìn)行渲染,為提高渲染精度,本發(fā)明將大于設(shè)定閾值的權(quán)重值累加得到權(quán)重和并用該權(quán)重和來衡量渲染精度,若小于設(shè)定的精度,則重新采樣,直至達(dá)到設(shè)定的精度。該方法實(shí)現(xiàn)簡單,通過兩次精度判斷,有效提高渲染精度,且計(jì)算各采樣點(diǎn)的光輝貢獻(xiàn)值時(shí)各個(gè)像素之間不存在相互影響,可并行處理有利于提高渲染速度。
【專利說明】基于光輝噴灑的圖像渲染方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種基于光輝噴灑的圖像渲染方法。
【背景技術(shù)】
[0002]通常的場景渲染都通過全局光照進(jìn)行計(jì)算以期獲得高質(zhì)量的渲染效果。全局光照計(jì)算的目的就是去模擬多個(gè)交叉反射的光的效果。通常全局光照計(jì)算都是通過光線跟蹤(ray tracing)和蒙特卡洛采樣(Monte Carlo采樣)來計(jì)算的,計(jì)算非常的耗時(shí)。
[0003]在光線跟蹤方面,近年來有人提出一種新方法。這種方法主要利用圖形學(xué)硬件來顯示全局光照的結(jié)果,可以達(dá)到實(shí)時(shí)交互的速率。在這種方法里面,場景是被適應(yīng)性的拼接(tesselated)在一起的,入射的光輝針對于每一個(gè)像素采用光纖跟蹤來計(jì)算。但是由于高質(zhì)量的渲染需要把每一個(gè)表面嵌入到許多三角形中去,導(dǎo)致性能下降。而且,這種方法僅僅集中在交互可視化領(lǐng)域:針對于高質(zhì)量的全局光照,渲染時(shí)間沒有得到很大的提高。
[0004]在光輝傳播的預(yù)計(jì)算(precomputed radiance transfer, PRT)方法中,在物體表面之間的光輝傳輸被脫線預(yù)計(jì)算出來,然后球諧波函數(shù)表示出來,或者用小波表示出來。通過用這種預(yù)先計(jì)算的信息,可以實(shí)時(shí)的采用GPU來計(jì)算全局光照信息。盡管PRT方法允許實(shí)時(shí)高質(zhì)量的重光照,但是他們主要依賴耗時(shí)的預(yù)計(jì)算,這本身就阻礙了復(fù)雜場景的全局光照計(jì)算能夠很容易采用PRT方法。
[0005]另外,有人提出一個(gè)基于GPU (Graphic Processing Unit,圖形處理器)的方法來實(shí)時(shí)的進(jìn)行光散的計(jì)算。這個(gè)算法主要依賴于采樣點(diǎn)的選擇在光滑的表面。每個(gè)采樣點(diǎn)被作為一個(gè)針孔(Pinhole)相機(jī),這個(gè)相機(jī)可以把入射的光投影到一個(gè)漫反射接受表面上去。這種方法可以處理幾個(gè)動態(tài)的光源和對象,盡管速度可以達(dá)到交互的速率,可是當(dāng)質(zhì)量提高以后,速率下降很快。
[0006]目前已有不同的策略來解決全局光照問題。幾種嘗試已經(jīng)被用來計(jì)算全局光照計(jì)算,這些方法主要是利用可編程的圖形學(xué)硬件和像素著色器來實(shí)施光線元素的交叉計(jì)算。這些方法都有共同的缺點(diǎn):GPU結(jié)構(gòu)并不允許復(fù)雜的數(shù)據(jù)結(jié)構(gòu)像樹結(jié)構(gòu),但是這種數(shù)據(jù)結(jié)構(gòu)卻通常被用在光線跟蹤優(yōu)化和光子貼圖存儲上。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種基于光輝噴灑的圖像渲染方法,避免使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu),大大地減少了渲染所耗費(fèi)的時(shí)間,可以高效實(shí)時(shí)的進(jìn)行全局光照下的渲染,而且便于實(shí)施。
[0008]一種基于光輝噴灑的圖像渲染方法,包括以下步驟:
[0009](I)從視點(diǎn)出發(fā)沿待渲染圖像中的每個(gè)像素向場景發(fā)出光線確定光線與場景中物體的相交區(qū)域;
[0010](2)以所述相交區(qū)域的中心點(diǎn)作為該像素對應(yīng)的采樣點(diǎn),獲取并生成各個(gè)采樣點(diǎn)的信息記錄,所述的信息記錄包括位置向量、法相量、光輝值以及采樣點(diǎn)與每個(gè)像素之間的調(diào)和距離;[0011](3)對于任意一個(gè)像素,根據(jù)各采樣點(diǎn)的信息記錄,利用權(quán)重評價(jià)函數(shù)分別計(jì)算每個(gè)采樣點(diǎn)對當(dāng)前像素的光輝值影響的權(quán)重值,根據(jù)變形的輻射度方程計(jì)算每個(gè)采樣點(diǎn)對當(dāng)前像素的光輝貢獻(xiàn)值,并根據(jù)光輝貢獻(xiàn)值計(jì)算得到該采樣點(diǎn)對當(dāng)前像素的輻射出度貢獻(xiàn)值;
[0012](4)比較所述的權(quán)重值與設(shè)定的閾值的大小,遍歷所有采樣點(diǎn),將權(quán)重值大于設(shè)定的閾值的權(quán)重值進(jìn)行累加得到該像素的權(quán)重累加和,并將該權(quán)重值對應(yīng)的輻射出度貢獻(xiàn)值進(jìn)行加權(quán)累加得到輻射出度加權(quán)和;
[0013](5)將所述的權(quán)重累加和與設(shè)定的精度進(jìn)行比較:
[0014]若權(quán)重累加小于設(shè)定的精度,則返回進(jìn)行步驟(2),所不同的是隨機(jī)在所述的相交區(qū)域中隨機(jī)采取一點(diǎn)作為該像素對應(yīng)的采樣點(diǎn);
[0015]否則,用所述的像素的輻射出度加權(quán)和除以權(quán)重累加和,計(jì)算得到該像素的間接光照值;
[0016](6)將所述的間接光照值加上該像素的直接光照值得到該像素的光照值,并利用該光照值對該像素進(jìn)行渲染。
[0017]直接光照值為已知量,若該像素是光源,由于光源是人為設(shè)定的,那么它的值也是知道的;如果不是光源,那么直接光照值為O。
[0018]每個(gè)像素可以認(rèn)為是一個(gè)方格形小區(qū)域,由于光線的發(fā)散,在場景中得到的相交區(qū)域一般大于像素區(qū)域。一般該相交區(qū)域的中心位置為采樣點(diǎn)時(shí)采樣的精度最高,因此本發(fā)明從中心開始采樣,有助于提高渲染效率。當(dāng)以中心位置為采樣點(diǎn)的精度不夠時(shí),則從該相交區(qū)域中隨機(jī)選取一點(diǎn)作為采樣點(diǎn),并繼續(xù)進(jìn)行精度判斷,直至精度達(dá)到設(shè)定值。每次采樣的采樣點(diǎn)均與前一次采樣的采樣點(diǎn)不同。
[0019]確定采樣點(diǎn)之后,即可獲取采樣點(diǎn)的即位置(坐標(biāo))、自身的光輝值,用向量將該位置標(biāo)示作為位置向量,并根據(jù)該位`置向量,根據(jù)該采樣點(diǎn)在場景物體表面曲線確定其法向量,并通過坐標(biāo)系中采樣點(diǎn)的坐標(biāo)信息以及像素的坐標(biāo)信息(位置向量)計(jì)算該采樣點(diǎn)與各個(gè)像素之間的調(diào)和距離。
[0020]本發(fā)明通過像素對場景采樣,確定各個(gè)像素的采樣點(diǎn),由于每個(gè)像素的光輝值由所有采樣點(diǎn)共同貢獻(xiàn)得到,因此反向根據(jù)輻射度公式計(jì)算每個(gè)采樣點(diǎn)對每個(gè)像素的光輝值的貢獻(xiàn)(光輝貢獻(xiàn)值),稱這個(gè)過程為光輝噴灑。該方法實(shí)現(xiàn)簡單,且各個(gè)像素之間不存在相互影響,可并行處理。
[0021]本發(fā)明根據(jù)確定采樣點(diǎn)后,考慮到不同采樣點(diǎn)對每個(gè)像素的影響均不同,以權(quán)重評價(jià)函數(shù)計(jì)算各采樣點(diǎn)對該像素的影響大小(權(quán)重值),影響較小的采樣點(diǎn)對光輝值的貢獻(xiàn)忽略不計(jì),僅考慮影響較大(大于設(shè)定的閾值)的采樣點(diǎn)對該像素的光輝值采用貢獻(xiàn),以這些采用點(diǎn)會該像素進(jìn)行渲染。為提高精度,進(jìn)一步對精度進(jìn)行校準(zhǔn),將所有相對較大的權(quán)重值累加得到該像素的權(quán)重累加和,以該累加和作為該像素的采用精度,若權(quán)重累加和未達(dá)到設(shè)定的精度,則重新采樣直至達(dá)到設(shè)定的精度后再求取該像素的光照值完成渲染。本發(fā)明中通過兩次精度判斷,有效提聞了米樣精度,進(jìn)而提聞了 ?宣染精度。
[0022]所述步驟(1)~(3)由GPU執(zhí)行;所述步驟(4)~(6)由CPU執(zhí)行。全局光照下的復(fù)雜大場景一直難以由GPU迅速渲染出來。通常這種情況的渲染時(shí)通過光線跟蹤(raytracing)和Monte Carlo采樣來計(jì)算的。而這兩種方法都有較多的邏輯判斷,或者遞歸序列,但GPU對邏輯判斷的處理以及具備拓?fù)浯涡虻臄?shù)據(jù)處理都力不從心。本發(fā)明中由于步驟(I)~(3)只有數(shù)據(jù)運(yùn)算,沒過多的邏輯判斷,且上述步驟中各個(gè)計(jì)算過程互不干擾,因而可以由GPU計(jì)算,通過并行處理,大大提高了運(yùn)算速度,有助于提高渲染效率,而進(jìn)行的精度比較為邏輯判斷,由CPU來完成,但這一部分計(jì)算量較小,僅僅是對局部不符合精度要求的部分像素進(jìn)行校正,故而對整體的時(shí)間消耗影響不大。整體上算法的絕大多數(shù)的計(jì)算都可以在GPU上進(jìn)行,可以充分理由GPU的并行性特點(diǎn),快速高效的完成場景渲染。
[0023]本發(fā)明在GPU內(nèi)設(shè)置光輝緩存區(qū),用于存儲各個(gè)采樣點(diǎn)的信息記錄、權(quán)重值和輻射出度。采用非簡單的數(shù)據(jù)結(jié)構(gòu),大大減少存儲的消耗,降低訪問數(shù)據(jù)的復(fù)雜度,當(dāng)GPU執(zhí)行完步驟(1)~(3)后,CPU讀取光輝緩存區(qū)所存儲的數(shù)據(jù)(即將光輝緩存區(qū)數(shù)據(jù)映射到CPU),由CPU執(zhí)行后續(xù)步驟,完成圖像渲染。在執(zhí)行步驟(1)之前需進(jìn)行初始化,清空所述的光輝緩存區(qū)。CPU讀取光輝緩存區(qū)所存儲的數(shù)據(jù)后,光輝緩存區(qū)存儲的數(shù)據(jù)并不刪除,仍然保留,作為備份,為后續(xù)的精度進(jìn)行校準(zhǔn)做準(zhǔn)備。
[0024]設(shè)定的閾值與所述精度的乘積為I。且一般情況下,設(shè)定的精度大于I。
[0025]所述步驟(2)中的權(quán)重評價(jià)函數(shù)如下:
【權(quán)利要求】
1.一種基于光輝噴灑的圖像渲染方法,其特征在于,包括以下步驟: (1)從視點(diǎn)出發(fā)沿待渲染圖像中的每個(gè)像素向場景發(fā)出光線確定光線與場景中物體的相交區(qū)域; (2)以所述相交區(qū)域的中心點(diǎn)作為該像素對應(yīng)的采樣點(diǎn),獲取并生成各個(gè)采樣點(diǎn)的信息記錄,所述的信息記錄包括位置向量、法相量、光輝值以及采樣點(diǎn)與每個(gè)像素之間的調(diào)和距離; (3)對于任意一個(gè)像素,根據(jù)各采樣點(diǎn)的信息記錄,利用權(quán)重評價(jià)函數(shù)分別計(jì)算每個(gè)采樣點(diǎn)對當(dāng)前像素的光輝值影響的權(quán)重值,根據(jù)變形的輻射度方程計(jì)算每個(gè)采樣點(diǎn)對當(dāng)前像素的光輝貢獻(xiàn)值,并根據(jù)光輝貢獻(xiàn)值計(jì)算得到該采樣點(diǎn)對當(dāng)前像素的輻射出度貢獻(xiàn)值; (4)比較所述的權(quán)重值與設(shè)定的閾值的大小,遍歷所有采樣點(diǎn),將權(quán)重值大于設(shè)定的閾值的權(quán)重值進(jìn)行累加得到該像素的權(quán)重累加和,并將該權(quán)重值對應(yīng)的輻射出度貢獻(xiàn)值進(jìn)行加權(quán)累加得到輻射出度加權(quán)和; (5)將所述的權(quán)重累加和與設(shè)定的精度進(jìn)行比較: 若權(quán)重累加小于設(shè)定的精度,則返回進(jìn)行步驟(2),所不同的是隨機(jī)在所述的相交區(qū)域中隨機(jī)采取一點(diǎn)作為該像素對應(yīng)的采樣點(diǎn); 否則,用所述的像素的輻射出度加權(quán)和除以權(quán)重累加和,計(jì)算得到該像素的間接光照值; (6)將所述的間接光照值加上該像素的直接光照值得到該像素的光照值,并利用該光照值對該像素進(jìn)行渲染。
2.如權(quán)利要求1所述的基于光輝噴灑的圖像渲染方法,其特征在于,所述步驟(1)~(3)由GPU執(zhí)行;所述步驟(4)~(6)由CPU執(zhí)行。
3.如權(quán)利要求2所述的基于光輝噴灑的圖像渲染方法,其特征在于,設(shè)定的閾值與所述精度的乘積為I。
4.如權(quán)利要求3所述的基于光輝噴灑的圖像渲染方法,其特征在于,所述步驟(3)中的權(quán)重評價(jià)函數(shù)如下:
5.如權(quán)利要求4所述的基于光輝噴灑的圖像渲染方法,其特征在于,所述步驟(3)中的變形的輻射度方程如下:
6.如權(quán)利要求5所述的基于光輝噴灑的圖像渲染方法,其特征在于,所述步驟(3)根據(jù)以下公式:
Lo = PjEm 計(jì)算第m個(gè)采樣點(diǎn)對第k個(gè)像素的輻射出度貢獻(xiàn)值Lo,P d為第k個(gè)像素的漫反射率。
7.如權(quán)利要求6所述的基于光輝噴灑的圖像渲染方法,其特征在于,所述的漫反射率由該像素對應(yīng)的采樣點(diǎn)的材質(zhì)確定。
【文檔編號】G06T15/10GK103761759SQ201310751911
【公開日】2014年4月30日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】張大龍, 李盼, 張丹, 董建鋒, 魯東明, 趙磊 申請人:浙江大學(xué)