專(zhuān)利名稱(chēng):基于gpu的預(yù)計(jì)算輻射度傳遞全頻陰影的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實(shí)時(shí)渲染全頻陰影的方法,特別是一種基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法。
背景技術(shù):
照片級(jí)真實(shí)感渲染(photorealistic rendering)一直是計(jì)算機(jī)圖形學(xué)所追求的一個(gè)重要目標(biāo)與方向。場(chǎng)景的自然光源重光照、復(fù)雜光傳遞現(xiàn)象應(yīng)用于仿真、教育、娛樂(lè)等各種環(huán)境中,可以極大的提高渲染的真實(shí)感與沉浸感。在光傳遞現(xiàn)象中,陰影是一種常見(jiàn)而非常重要的現(xiàn)象。在用戶(hù)對(duì)三維場(chǎng)景的感知過(guò)程中,陰影對(duì)人腦重構(gòu)場(chǎng)景對(duì)象形狀、對(duì)象深度等信息起著重要的作用,因而越來(lái)越多的應(yīng)用于CG、虛擬現(xiàn)實(shí)、三維游戲等環(huán)境中。
陰影算法在計(jì)算機(jī)真實(shí)感圖形學(xué)中具有重要的地位與悠久的歷史。早期的陰影算法主要針對(duì)基于點(diǎn)光源的光照環(huán)境提出,陰影通常呈現(xiàn)為具有明確邊界的“硬陰影(Hard shadow)”。但是在現(xiàn)實(shí)世界中,并不存在數(shù)學(xué)意義上的點(diǎn)光源,所有的光源都具有一定的形狀與面積,從而使由光源產(chǎn)生的陰影具有由明到暗的過(guò)渡,通常被稱(chēng)為“軟陰影(Soft shadow)”。另一方面,基于圖像的光照(IBL)對(duì)陰影效果提出了更高的要求。在一張高動(dòng)態(tài)范圍(HDR)的光照?qǐng)D中,具有大量的光采樣點(diǎn)。一幅具有24,576(6×64×64)個(gè)采樣點(diǎn)的高分辨率光照?qǐng)D,可能同時(shí)存在多個(gè)低頻的大面積光源和高頻的小面積點(diǎn)光源,如何同時(shí)將這些光源對(duì)場(chǎng)景對(duì)象的照明效果表現(xiàn)出來(lái),成為了新的挑戰(zhàn)。面對(duì)這些問(wèn)題,已經(jīng)有很多算法被提出,其中主要包括以下的一些算法。
Assarsson“A Geometry-based Soft Shadow Volume Algorithmusing Graphics Hardware”in ACM Transactions on Graphics,2003,Volume 22,Number 3,Page 511-520.將用于照明的紋理進(jìn)行編碼,產(chǎn)生預(yù)計(jì)算的4D陰影表,在渲染時(shí)首先通過(guò)Shadow volume方法確定半影楔,然后通過(guò)查表法對(duì)半影楔所覆蓋的范圍進(jìn)行逐像素的填充,最終完成陰影的構(gòu)造。此方法的局限性在于其僅可以使用矩形或圓形的區(qū)域圖像作為光源,而不能使用全方向的環(huán)境圖作為光源。
Debevec“Acquiring the reflectance field of a human face”inSIGGRAPH,2000,Page 145-156.使用了環(huán)境圖作為光源,并能夠?qū)ν箤?duì)象產(chǎn)生簡(jiǎn)單的陰影效果。在這一方法中,基于JPEG的壓縮方法達(dá)到了大約20∶1的壓縮比例。此方法雖然實(shí)現(xiàn)了使用環(huán)境圖作為光源的目標(biāo),但速度較慢,不能滿足實(shí)時(shí)渲染的需求。
Sloan在“Precomputed radiance transfer for real-time rendering indynamic,low-frequency lighting environments”in ACM Transactions onGraphics,2002,Volume 21,Number 3,Page 527-536.中提出了預(yù)計(jì)算輻射度傳遞算法。預(yù)計(jì)算輻射度傳遞算法使用球面調(diào)和函數(shù)基進(jìn)行預(yù)計(jì)算光照傳遞,在渲染時(shí)通過(guò)計(jì)算入射光的調(diào)和函數(shù)系數(shù)向量與每一個(gè)采樣點(diǎn)的預(yù)計(jì)算光傳遞向量的點(diǎn)積,得到每一個(gè)采樣點(diǎn)的重光照結(jié)果。為了達(dá)到實(shí)時(shí)渲染的目的,該算法在渲染過(guò)程中舍棄了高頻信號(hào),僅適用于低頻的光照環(huán)境。Ren Ng等在“All-frequency shadows using non-linear wavelet lightingapproximation”in ACM Transactions on Graphics,2003,Volume 22,Number 3,Page 376-381.改進(jìn)了Sloan的方法,使用了非線性小波對(duì)代替了球面調(diào)和函數(shù),并在實(shí)時(shí)渲染的前提下實(shí)現(xiàn)了全頻陰影效果。雖然該方法實(shí)現(xiàn)了實(shí)時(shí)渲染,但對(duì)內(nèi)存的需求量大,并且在運(yùn)行時(shí)仍然需要相當(dāng)大量的計(jì)算,對(duì)CPU的負(fù)荷很重。并且由于該方法使用了非線性的小波計(jì)算方式,核心計(jì)算為在一個(gè)稀疏矩陣與一個(gè)稀疏向量之間進(jìn)行乘法,因此也無(wú)法利用GPU進(jìn)行加速。
基于GPU的計(jì)算也是近年來(lái)的一個(gè)研究熱點(diǎn)。相對(duì)CPU而言,GPU具有非常強(qiáng)大的并行計(jì)算能力。到目前為止,在消費(fèi)級(jí)顯示設(shè)備上,借助大量的并行流水線設(shè)計(jì),GPU的計(jì)算能力已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)CPU。在MAD指令性能測(cè)試中,ATI Radeon X1800XT(16條并行像素流水線)已經(jīng)具有83GFLOPs的峰值性能;相比之下,Intel 3.0GHz Pentium 4僅有12GFLOPs。因此,如果將包含有大規(guī)模計(jì)算問(wèn)題的原有CPU算法重新設(shè)計(jì),使之適合GPU的體系結(jié)構(gòu),充分利用GPU的高度并行特性,將會(huì)有效提高算法的執(zhí)行效率。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問(wèn)題克服現(xiàn)有技術(shù)的不足,提供一種基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,該方法充分利用GPU并行計(jì)算能力的數(shù)據(jù)結(jié)構(gòu)和算法,在CPU負(fù)載和GPU負(fù)載之間、渲染速度和渲染質(zhì)量之間達(dá)到了較好的平衡,在保持渲染質(zhì)量的前提下,降低了內(nèi)存的使用,并大幅度提高了渲染速度,達(dá)到了實(shí)時(shí)渲染全頻陰影的目的。
本發(fā)明的技術(shù)解決方案一種基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特點(diǎn)在于包括兩個(gè)部分預(yù)計(jì)算算法和渲染算法,預(yù)計(jì)算算法包括射度傳遞矩陣的計(jì)算,使用小波變換來(lái)壓縮輻射度傳遞矩陣T及對(duì)該矩陣進(jìn)行重新排序;渲染算法包括對(duì)光源L的小波變換和稀疏矩陣與光源L的矩陣乘法,具體步驟如下(1)利用光照環(huán)境圖對(duì)一個(gè)場(chǎng)景進(jìn)行照明,得到輻射傳遞函數(shù)B=TL,其中矩陣T為輻射度傳遞矩陣,L為光源矩陣;(2)對(duì)輻射度傳遞矩陣T進(jìn)行預(yù)計(jì)算;(3)利用小波變換對(duì)預(yù)計(jì)算后的輻射度傳遞矩陣T進(jìn)行量化壓縮,得到稀疏的輻射度傳遞矩陣;(4)對(duì)步驟(3)中稀疏矩陣的進(jìn)行重新排序,將重要的矩陣項(xiàng)放到更靠前的位置;(5)對(duì)L進(jìn)行快速小波變換,得到量化壓縮后的稀疏光源矩陣L;(6)在GPU中,使用Pixel shader片斷程序進(jìn)行T與L相乘即得到輻射傳遞函數(shù)B,并將結(jié)果保存于2D紋理之中。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于本發(fā)明利用GPU并行計(jì)算能力的數(shù)據(jù)結(jié)構(gòu)和算法,在CPU負(fù)載和GPU負(fù)載之間、渲染速度和渲染質(zhì)量之間達(dá)到了較好的平衡,在保持渲染質(zhì)量的前提下,降低了內(nèi)存的使用,并大幅度提高了渲染速度,達(dá)到了實(shí)時(shí)渲染全頻陰影的目的。
圖1為本發(fā)明方法實(shí)現(xiàn)的流程圖;圖2為本發(fā)明的預(yù)計(jì)算中對(duì)稀疏矩陣T的索引、排序以及行主序到列主序的變換操作示意圖;圖3為本發(fā)明GPU實(shí)現(xiàn)中表示輻射度傳遞矩陣T的2D紋理;圖4為本發(fā)明的渲染過(guò)程偽代碼圖。
具體實(shí)施例方式
如圖1所示,具體步驟如下(1)首先,利用光照環(huán)境圖對(duì)一個(gè)場(chǎng)景進(jìn)行照明,得到原始模型數(shù)據(jù),即公式如下B(x,ω0)=∫∫ΩL(ω)S(x,ω)fr(x,ω→ω0)(ω·n(x))dω---(1)]]>式(1)中,x為場(chǎng)景中的一個(gè)采樣頂點(diǎn),ω0為視點(diǎn)方向,ω為入射光方向,L是用作光源的光照環(huán)境圖,S是一個(gè)可見(jiàn)性函數(shù),表明ω在x處是否形成了陰影,fr是x處的反射函數(shù),最后,ω·n(x)形成了入射角的余弦。
給定約束條件反射函數(shù)為一個(gè)純漫反射函數(shù)時(shí),fr不再與視點(diǎn)方向相關(guān),而僅與場(chǎng)景采樣位置x相關(guān)。這樣,可以定義輻射傳遞函數(shù)T(x,ω)=S(x,ω)fr(x,ω→ω0)(ω·n(x)) (2)在約束條件下函數(shù)不再依賴(lài)于視點(diǎn)方向ω0。使用離散方式表示,可以得到B(xi)=ΣjT(xi,ωj)L(ωj)---(3)]]>最后,使用矩陣乘法重寫(xiě)公式(3),得到B=TL (4)矩陣T為輻射度傳遞矩陣,L為光源。
(2)對(duì)公式(4)中的輻射度傳遞矩陣T進(jìn)行預(yù)計(jì)算(在CPU中進(jìn)行);
對(duì)T的預(yù)計(jì)算基于原始光照立方圖的單個(gè)像素光進(jìn)行,所有單個(gè)像素光構(gòu)成了光照立方圖的一組正交基,具體步驟為對(duì)場(chǎng)景中的模型進(jìn)行采樣,采樣使用光照?qǐng)D紋理的紋元Texel作為采樣點(diǎn),利用簡(jiǎn)單光照模型計(jì)算光照輻射度傳遞矩陣的每一行,以材質(zhì)的反射函數(shù)、采樣點(diǎn)余弦系數(shù)作為權(quán)重,逐行對(duì)矩陣T求值。預(yù)計(jì)算可以部分利用顯示硬件完成,以顯著加速預(yù)計(jì)算過(guò)程。
(3)利用小波變換對(duì)預(yù)計(jì)算后的輻射度傳遞矩陣T進(jìn)行量化壓縮,得到稀疏的輻射度傳遞矩陣;使用2D Haar小波函數(shù)對(duì)輻射度傳遞矩陣T中的每一行進(jìn)行小波變換壓縮,由于小波變換是無(wú)損變換,在經(jīng)過(guò)小波變換之后,完整的矩陣乘法仍然可以得到精確的重光照渲染結(jié)果。對(duì)T的小波變換在立方圖的6個(gè)2D平面上分別進(jìn)行,矩陣T中的元素可以被量化為6位至8位的整形數(shù)。
小波變換的量化過(guò)程使輻射度傳遞矩陣T(系數(shù)大部分為0)成為一個(gè)稀疏矩陣。為了減少矩陣占據(jù)的內(nèi)存空間以及前端總線帶寬,稀疏的輻射度傳遞矩陣T采用基于索引存儲(chǔ)作為核心數(shù)據(jù)結(jié)構(gòu),將T的每一行表示為一系列(索引,值)數(shù)據(jù)對(duì),在內(nèi)存中以行主序連續(xù)存放。實(shí)現(xiàn)時(shí),以16bit存儲(chǔ)索引編碼,8bit存儲(chǔ)小波系數(shù)值,構(gòu)成(索引,值)數(shù)據(jù)對(duì)。為提高訪問(wèn)速度,在數(shù)據(jù)結(jié)構(gòu)中加入8bit的保留空間。每個(gè)獨(dú)立的數(shù)據(jù)結(jié)構(gòu)單元如表1所示。將矩陣T的每一行表示為一系列(索引,值)數(shù)據(jù)對(duì),在CPU內(nèi)存中以行主序連續(xù)存放,數(shù)據(jù)單元結(jié)構(gòu)如表1所示。
表1 為本發(fā)明的稀疏矩陣行主序的索引存儲(chǔ)單元結(jié)構(gòu)(在CPU中)
(4)將矩陣T每一行稀疏矩陣進(jìn)行重新排序,將更重要的矩陣項(xiàng)放到更靠前的位置上。排序方法使用面積權(quán)重排序,排序的權(quán)重為小波系數(shù)乘以該小波系數(shù)的面積。排序之后的稀疏矩陣,仍然采用每一行表示為一系列(索引,值)數(shù)據(jù)對(duì)的方法連續(xù)存儲(chǔ)。
(5)為了方便GPU的計(jì)算,在GPU中將步驟(4)中經(jīng)過(guò)小波變換和排序的、稀疏的、行主序的傳遞矩陣T改為列主序存儲(chǔ),進(jìn)行數(shù)據(jù)重組。
改變方式如圖2所示“箭頭”左邊的圖表示未做處理的原始傳遞矩陣T,T的每一行(橫向)代表一個(gè)采樣點(diǎn),T的每一列(縱向)代表光照立方圖的一組正交基?!凹^”表示對(duì)矩陣T進(jìn)行上述實(shí)施步驟中的索引存儲(chǔ),重要度排序這兩項(xiàng)操作。在此基礎(chǔ)上,將(索引,值)的數(shù)據(jù)對(duì)在內(nèi)存中以列主序連續(xù)存放,如“箭頭”右邊的圖所示。改為列主序存儲(chǔ)后,矩陣T的每一列代表處于某一個(gè)特定重要度級(jí)別的由多種不同小波基照明的所有采樣點(diǎn)。
改為列主序存儲(chǔ)后,矩陣T的每一列代表處于某一個(gè)特定重要度級(jí)別的由多種不同小波基照明的所有采樣點(diǎn)。
(6)將矩陣T的每一列轉(zhuǎn)換為一張2D紋理,便于GPU處理由于該2D紋理的每一個(gè)紋元?jiǎng)偤脤?duì)應(yīng)一個(gè)采樣點(diǎn),使得該2D紋理的大小與光照立方圖的大小一致,從而避免了2D紋理空間的浪費(fèi);并且采樣光照?qǐng)D也可以直接應(yīng)用于貼紋理的操作,整個(gè)過(guò)程沒(méi)有CPU的參與,不需要CPU與GPU之間的通訊,提高了處理速度。
轉(zhuǎn)換的方法如下將表1中的1D索引變換為一個(gè)3D的向量,然后將該3D向量以三個(gè)8bit整形量的形式保存于RGB三個(gè)通道內(nèi)。一方面充分的利用了2D紋理的存儲(chǔ)空間,另一方面為Pixel shader片斷程序的處理提供了便利。數(shù)據(jù)單元中的數(shù)值信息,原本就是一個(gè)8bit的整形量,不需要進(jìn)一步修改,直接保存于A通道即可,修改后的數(shù)據(jù)單元結(jié)構(gòu)如表2所示。
表2 為本發(fā)明的稀疏矩陣列主序的索引存儲(chǔ)單元結(jié)構(gòu)(GPU)
圖3表示采用上述轉(zhuǎn)換方法得到的2D紋理(8張),其中第一行表示RGB通道,第二行表示A通道。每一張紋理對(duì)應(yīng)于圖2中列主序矩陣T的一列。
(7)在GPU中采用Haar小波對(duì)L進(jìn)行快速小波變換,得到量化壓縮后的稀疏光源矩陣L;本發(fā)明允許L在渲染階段任意變化,因此對(duì)L的小波變換不能在預(yù)處理階段進(jìn)行,所以對(duì)環(huán)境立方圖L的六個(gè)面分別進(jìn)行基于GPU的小波變換,結(jié)果保存于2D紋理中。為了完整保存處于HDR內(nèi)的光照亮度,立方圖紋理使用FP16格式。
(8)將CPU中得到的矩陣T和在GPU中得到的光源矩陣L在GPU中使用Pixel shader片斷程序進(jìn)行渲染,即對(duì)T和L進(jìn)行快速稀疏矩陣乘法完成重光照。
此時(shí),光源L已表示為一張立方圖紋理,輻射度傳遞矩陣T表示為一組2D紋理,使用Pixel shader片斷程序進(jìn)行T與L之間的稀疏矩陣乘法,并將得到的中間結(jié)果以及最終結(jié)果保存于2D紋理之中。
上述的渲染過(guò)程的偽代碼如圖4所示在單遍渲染過(guò)程中,對(duì)于所有的(u,v)坐標(biāo),首先從T的某一列對(duì)應(yīng)的2D紋理C中直接獲取數(shù)據(jù)單元的值aT和對(duì)應(yīng)于數(shù)據(jù)單元索引的3D向量P;接著,在保存L的輸入立方圖中獲取P方向處的光照小波基AL,由于AL同時(shí)包含RGB三個(gè)通道,因此AL是一個(gè)向量;最后,將AL與aT相乘,然后與代表上次輸出結(jié)果的Rl相加,并將結(jié)果保存于輸出2D紋理Rc中。定義好單遍渲染過(guò)程后,多遍渲染過(guò)程會(huì)循環(huán)調(diào)用單遍渲染過(guò)程。多遍渲染過(guò)程是整個(gè)渲染操作的主體,它的每一次循環(huán)都會(huì)調(diào)用單遍渲染過(guò)程。
在多遍疊加過(guò)程中,為了將所需的矩陣T中的多列累加,本發(fā)明使用了兩個(gè)用于保存中間結(jié)果的2D紋理,即T1和T2。在每一遍循環(huán)時(shí),交替使用T1和T2作為渲染目標(biāo),并與另外一張紋理疊加。Clear()函數(shù)將紋理全部清零,Render()即單遍渲染函數(shù),而Swap()代表交換Rc和Rl的綁定;實(shí)現(xiàn)多遍疊加時(shí),對(duì)矩陣T的每一列,依次調(diào)用Render()即單遍渲染函數(shù);同時(shí)即實(shí)現(xiàn)了單遍渲染結(jié)果的累加;最后,以Rl中的渲染結(jié)果作為最終的渲染結(jié)果即可。
上述的Rl表示上一次單遍渲染的結(jié)果,為一張2D紋理;Rc表示當(dāng)前單遍渲染的結(jié)果,為一張2D紋理。如圖4的偽代碼Rc(u,v)←AL×aT+Tex(Rl,u,v)所示,Rl參與Rc的計(jì)算。
權(quán)利要求
1.一種基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于步驟如下(1)利用光照環(huán)境圖對(duì)一個(gè)場(chǎng)景進(jìn)行照明,得到輻射傳遞函數(shù)B=TL,其中矩陣T為輻射度傳遞矩陣,L為光源矩陣;(2)對(duì)輻射度傳遞矩陣T進(jìn)行預(yù)計(jì)算;(3)利用小波變換對(duì)預(yù)計(jì)算后的輻射度傳遞矩陣T進(jìn)行量化壓縮,得到稀疏的輻射度傳遞矩陣;(4)對(duì)步驟(3)中稀疏矩陣的系數(shù)進(jìn)行重新排序,將重要的矩陣項(xiàng)放到更靠前的位置;(5)對(duì)L進(jìn)行快速小波變換,得到量化壓縮后的稀疏光源矩陣L;(6)在GPU中,對(duì)T和L進(jìn)行快速稀疏矩陣乘法完成重光照渲染。
2.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于所述的步驟(2)中的預(yù)計(jì)算方法為對(duì)場(chǎng)景中的模型進(jìn)行采樣,采樣使用光照?qǐng)D紋理的紋元Texel作為采樣點(diǎn),利用簡(jiǎn)單光照模型計(jì)算光照輻射度傳遞矩陣T的每一行,并以材質(zhì)的反射函數(shù)、采樣點(diǎn)余弦系數(shù)作為權(quán)重,逐行對(duì)矩陣T求值。
3.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于所述步驟(3)或步驟(5)中的小波變換采用2D Haar小波函數(shù)。
4.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于所述步驟(3)中的稀疏的輻射度傳遞矩陣T采用基于索引存儲(chǔ)作為核心數(shù)據(jù)結(jié)構(gòu),T的每一行表示為一系列索引和值的數(shù)據(jù)對(duì),在內(nèi)存中以行主序連續(xù)存放。
5.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于所述步驟(4)的排序方法使用面積權(quán)重排序,排序的權(quán)重為小波系數(shù)乘以該小波系數(shù)的面積;排序之后的稀疏矩陣,仍然采用每一行表示為一系列包括索引和值數(shù)據(jù)對(duì)的方法連續(xù)存儲(chǔ)。
6.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于為了方便GPU計(jì)算,在GPU中將步驟(4)中經(jīng)過(guò)小波變換和排序的、稀疏的、行主序的傳遞矩陣T改為列主序存儲(chǔ),進(jìn)行數(shù)據(jù)重組。
7.根據(jù)權(quán)利要求1所述的基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,其特征在于所述的重光照渲染方法如下在單遍渲染過(guò)程中,首先從輻射度傳遞矩陣T的某一列對(duì)應(yīng)的2D紋理C中直接獲取數(shù)據(jù)單元的值aT和對(duì)應(yīng)于數(shù)據(jù)單元索引的3D向量P;接著,從保存光照立方圖中的L中獲取向量P方向處的光照小波基AL;最后,將AL與aT相乘,然后與代表上次輸出結(jié)果的Rl相加,并將結(jié)果保存于輸出2D紋理Rc中;在多遍疊加過(guò)程中,采用兩個(gè)用于保存中間結(jié)果的2D紋理即T1和T2,T1和T2的初始值分別為Rl和Rc;針對(duì)輻射度傳遞矩陣T的每一列,循環(huán)調(diào)用上述單遍渲染過(guò)程,交替使用T1和T2作為渲染目標(biāo),并與上次單遍渲染得到的2D紋理相加,從而實(shí)現(xiàn)多列累加的效果;最后,以Rl中的渲染結(jié)果作為最終的渲染結(jié)果即可。
全文摘要
一種基于GPU的預(yù)計(jì)算輻射度傳遞全頻陰影的方法,(1)利用光照環(huán)境圖對(duì)一個(gè)場(chǎng)景進(jìn)行照明,得到輻射傳遞函數(shù)B=TL,其中矩陣T為輻射度傳遞矩陣,L為光源矩陣;(2)對(duì)輻射度傳遞矩陣T進(jìn)行預(yù)計(jì)算;(3)利用小波變換對(duì)預(yù)計(jì)算后的輻射度傳遞矩陣T進(jìn)行量化壓縮,得到稀疏的輻射度傳遞矩陣;(4)對(duì)步驟(3)中稀疏矩陣的系數(shù)進(jìn)行重新排序,將重要的矩陣項(xiàng)放到更靠前的位置;(5)對(duì)L進(jìn)行快速小波變換,得到量化壓縮后的稀疏光源矩陣L;(6)在GPU中,對(duì)T和L進(jìn)行快速稀疏矩陣乘法完成重光照渲染。本發(fā)明利用GPU并行計(jì)算能力的數(shù)據(jù)結(jié)構(gòu)和算法,在CPU負(fù)載和GPU負(fù)載之間、渲染速度和渲染質(zhì)量之間達(dá)到了較好的平衡,在保持渲染質(zhì)量的前提下,降低了內(nèi)存的使用,并大幅度提高了渲染速度,達(dá)到了實(shí)時(shí)渲染全頻陰影的目的。
文檔編號(hào)G06T15/50GK1889128SQ20061008978
公開(kāi)日2007年1月3日 申請(qǐng)日期2006年7月17日 優(yōu)先權(quán)日2006年7月17日
發(fā)明者王莉莉, 田貴芬 申請(qǐng)人:北京航空航天大學(xué)