專利名稱:一種基于gpu加速的環(huán)境光遮擋圖像繪制方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)真實(shí)感成像領(lǐng)域,具體涉及一種基于GPU加速的環(huán)境光遮擋圖像繪制方法及系統(tǒng)。
背景技術(shù):
近年來(lái)計(jì)算機(jī)圖形學(xué)在游戲、虛擬現(xiàn)實(shí)、電影特效等多個(gè)領(lǐng)域有了較大發(fā)展,伴隨著應(yīng)用需求的不斷增加,人們對(duì)圖形的真實(shí)感要求也日益提高。環(huán)境光遮擋(AO,Ambient Occlusion)是全局光照技術(shù)中重要的組成部分,AO描述的是物體表面上點(diǎn)和場(chǎng)景中其他物體的遮擋值,在全局光照中使用AO來(lái)衰減光照到達(dá)表面的光照值,進(jìn)而生成陰影增加圖形真實(shí)感。環(huán)境光遮擋技術(shù)是陰影計(jì)算的一大突破,通過(guò)增加陰影內(nèi)的光線明暗層次,使物體的光影表現(xiàn)不再枯燥、單調(diào),因而極大的增強(qiáng)了場(chǎng)景的真實(shí)度。傳統(tǒng)環(huán)境光遮擋技術(shù)的算法依賴于物體模型頂點(diǎn)的數(shù)量,從物體的每個(gè)頂點(diǎn)發(fā)射出多條射線進(jìn)行射線檢測(cè),根據(jù)射線被周圍物體遮擋的情況計(jì)算每個(gè)像素點(diǎn)的AO信息,將 AO信息存儲(chǔ)在紋理中,即AO貼圖。然而這種算法的顯著缺陷在于首先,物體模型越復(fù)雜, 需要進(jìn)行運(yùn)算的就頂點(diǎn)越多,執(zhí)行效率是O(n);其次,算法只計(jì)算了頂點(diǎn)的環(huán)境光遮擋信息,算法對(duì)邏輯判斷的要求較高,而非像素級(jí)別的光照運(yùn)算;最后,由于算法對(duì)邏輯判斷要求較高,因而只能通過(guò)CPU處理器進(jìn)行計(jì)算,無(wú)法通過(guò)邏輯判斷能力較低,但并行處理能力很強(qiáng)的顯卡圖形處理器(GPU,Graphic Processing Unit)加速處理,無(wú)法利用現(xiàn)在突飛猛進(jìn)的顯卡性能,對(duì)于目前普遍使用的次世代引擎來(lái)說(shuō)并不適用。上述缺陷導(dǎo)致使用傳統(tǒng)環(huán)境光遮擋算法計(jì)算一個(gè)4平方公里的大型游戲場(chǎng)景時(shí),用常用的運(yùn)算速度最快的計(jì)算機(jī)也要連續(xù)運(yùn)算超過(guò)1個(gè)月的時(shí)間,因而所以沒(méi)有實(shí)用價(jià)值。如發(fā)明專利使用環(huán)境遮擋的真實(shí)感成像的系統(tǒng)和方法(申請(qǐng)?zhí)?200910222067. 9,優(yōu)先權(quán)日2008. 12. 05),該方法以表面法線為中心向半球方向發(fā)射η條射線,判斷每一根射線是否被遮擋,并計(jì)算表面點(diǎn)到相交點(diǎn)的距離作為AO權(quán)重,累加每條射線的AO值,作為當(dāng)前表面點(diǎn)AO貢獻(xiàn)值,最后將每個(gè)表面的AO數(shù)據(jù)存儲(chǔ)在紋理中。該方法的缺陷在于,首先,算法的復(fù)雜度與物體模型的復(fù)雜度線性相關(guān),物體模型越復(fù)雜,需要計(jì)算的表面越多;其次,算法只計(jì)算了頂點(diǎn)的環(huán)境光遮擋信息,算法對(duì)邏輯判斷的要求較高, 而非像素級(jí)別的光照運(yùn)算;最后,由于算法對(duì)邏輯判斷要求較高,因而只能通過(guò)CPU處理器進(jìn)行計(jì)算,無(wú)法通過(guò)邏輯判斷能力較低,但并行處理能力很強(qiáng)的GPU處理器加速處理。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提出了一種不依賴于物體模型的復(fù)雜度,使用GPU 處理器進(jìn)行并行計(jì)算的基于GPU加速的環(huán)境光遮擋圖像繪制方法,及實(shí)現(xiàn)該方法的基于 GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng)。本發(fā)明的技術(shù)方案如下一種基于GPU加速的環(huán)境光遮擋圖像繪制方法,其步驟包括
1)在CPU處理器中建立攝像機(jī)均勻分布的半球攝像機(jī)體系,所述攝像機(jī)的鏡頭參數(shù)包括平行投影矩陣;2)將所述半球攝像機(jī)體系輸入GPU處理器中,選擇一個(gè)攝像機(jī)拍攝待渲染物體周圍一定范圍的場(chǎng)景,獲得待渲染物體周圍一定范圍的場(chǎng)景深度圖,所述場(chǎng)景深度圖中攜帶所述待渲染物體中像素點(diǎn)的場(chǎng)景深度值;3)接收待渲染物體的頂點(diǎn)數(shù)據(jù),所述頂點(diǎn)數(shù)據(jù)包括頂點(diǎn)坐標(biāo);將所述頂點(diǎn)坐標(biāo)與世界坐標(biāo)矩陣相乘后,再與所述平行投影矩陣相乘,得到渲染深度值;4)根據(jù)所述像素點(diǎn)的場(chǎng)景深度值和渲染深度值,計(jì)算所述像素點(diǎn)的AO信息;5)將像素點(diǎn)的AO信息根據(jù)預(yù)先生成AO貼圖ID,存儲(chǔ)到一張AO貼圖中;6)將所述AO貼圖在線場(chǎng)景渲染成為可顯示的環(huán)境光進(jìn)行輸出。所述步驟4)中,所述AO信息的計(jì)算方法包括將所述像素點(diǎn)的場(chǎng)景深度值與渲染深度值進(jìn)行對(duì)比,當(dāng)渲染深度值小于場(chǎng)景深度值,則視為所述像素點(diǎn)受到攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為1 ;當(dāng)渲染深度值大于或等于場(chǎng)景深度值,則視為所述像素點(diǎn)未受到所述攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為0 ;將所述半球攝像機(jī)體系中所有攝像機(jī)相對(duì)于所述像素點(diǎn)的AO測(cè)試函數(shù)加和后,即得到所述像素點(diǎn)的AO信息。所述步驟6)中,AO貼圖先經(jīng)過(guò)像素?cái)U(kuò)散處理和高斯模糊處理,再將處理后的位置相鄰的AO貼圖拼接成一張較大的AO貼圖,最后將所述較大的AO貼圖進(jìn)行在線場(chǎng)景渲染。一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于它包括顯示器和GPU 處理器,其中GPU處理器中配置依次連接的離線渲染模塊、AO貼圖生成模塊和在線渲染模塊;CPU處理器將半球攝像機(jī)體系傳入所述離線渲染模塊中,所述半球攝像機(jī)體系包括隨機(jī)均勻分布的攝像機(jī),通過(guò)所述攝像機(jī)拍攝待渲染物體的場(chǎng)景深度圖;所述離線渲染模塊從所述場(chǎng)景深度圖中讀取像素點(diǎn)的場(chǎng)景深度值,并根據(jù)所述待渲染物體的頂點(diǎn)坐標(biāo)計(jì)算出像素點(diǎn)的渲染深度值,根據(jù)場(chǎng)景深度值和渲染深度值計(jì)算所述像素點(diǎn)的AO信息;所述AO貼圖生成模塊根據(jù)所述像素點(diǎn)的AO信息生成AO貼圖,并將所述AO貼圖導(dǎo)入在線渲染模塊, 在線場(chǎng)景渲染成為可顯示的環(huán)境光通過(guò)所述顯示器輸出。所述攝像機(jī)通過(guò)平行投影拍攝所述拍攝待渲染物體,所述攝像機(jī)的鏡頭參數(shù)包括平行投影矩陣。所述離線渲染模塊中,根據(jù)所述待渲染物體的頂點(diǎn)坐標(biāo)計(jì)算所述像素點(diǎn)的渲染深度值和場(chǎng)景深度值的方法包括首先,從AGP總線接收所述待渲染物體的世界坐標(biāo)矩陣,將所述頂點(diǎn)坐標(biāo)與所述世界坐標(biāo)矩陣相乘得到世界坐標(biāo),再將所述世界坐標(biāo)與所述平行投影矩陣相乘得到渲染深度值;所述頂點(diǎn)坐標(biāo)與所述平行投影矩陣相乘后再進(jìn)行渲染,得到屏幕坐標(biāo);所述屏幕坐標(biāo)作為紋理取樣坐標(biāo),從所述場(chǎng)景深度圖中取出所述待渲染物體中像素點(diǎn)的場(chǎng)景深度值。所述離線渲染模塊中,得出所述像素點(diǎn)的AO信息的方法包括將所述像素點(diǎn)的場(chǎng)景深度值與渲染深度值進(jìn)行對(duì)比,當(dāng)渲染深度值小于場(chǎng)景深度值,則視為所述像素點(diǎn)受到攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為1 ;當(dāng)渲染深度值大于或等于場(chǎng)景深度值,則視為所述像素點(diǎn)未受到所述攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為0 ;將所述半球攝像機(jī)體系中所有攝像機(jī)相對(duì)于所述像素點(diǎn)的AO測(cè)試函數(shù)加和后,即得到所述像素點(diǎn)的AO信息。在所述AO貼圖生成模塊和在線渲染模塊之間設(shè)置圖像處理模塊,對(duì)所述AO貼圖依次進(jìn)行像素?cái)U(kuò)散處理、高斯模糊處理,并將處理后的位置相鄰的AO貼圖拼接成一張較大的AO貼圖。本發(fā)明的技術(shù)效果如下本發(fā)明的一種基于GPU加速的環(huán)境光遮擋圖像繪制方法,其步驟包括在CPU處理器中建立攝像機(jī)均勻分布的半球攝像機(jī)體系,所述攝像機(jī)的鏡頭參數(shù)包括平行投影矩陣; 2)將所述半球攝像機(jī)體系輸入GPU處理器中,選擇一個(gè)攝像機(jī)拍攝待渲染物體周圍一定范圍的場(chǎng)景,獲得待渲染物體周圍一定范圍的具有場(chǎng)景深度值的場(chǎng)景深度圖;幻接收待渲染物體的頂點(diǎn)數(shù)據(jù),頂點(diǎn)數(shù)據(jù)包括頂點(diǎn)坐標(biāo),根據(jù)頂點(diǎn)坐標(biāo)計(jì)算得到像素點(diǎn)的渲染深度值;4) 根據(jù)像素點(diǎn)的場(chǎng)景深度值和渲染深度值,計(jì)算像素點(diǎn)的AO信息;5)將像素點(diǎn)的AO信息根據(jù)預(yù)先生成AO貼圖ID,存儲(chǔ)到一張AO貼圖中;6)將AO貼圖在線場(chǎng)景渲染成為可顯示的環(huán)境光進(jìn)行輸出。不同于現(xiàn)有技術(shù)中從待渲染物體的每個(gè)頂點(diǎn)向半球方向發(fā)射出多條射線,根據(jù)射線被周圍待渲染物體遮擋的情況計(jì)算每個(gè)頂點(diǎn)的被遮擋系數(shù)的方法;本發(fā)明的方法在建立半球攝像機(jī)體系之后,以待渲染物體為中心,從半球上的攝像機(jī)向該中心發(fā)射射線,根據(jù)射線被周圍待渲染物體遮擋的情況,計(jì)算每個(gè)待渲染物體各像素的AO信息。由于本方法的AO 信息計(jì)算過(guò)程僅包括基本的比較運(yùn)算、加和運(yùn)算和求平均運(yùn)算,從而避開(kāi)了現(xiàn)有技術(shù)中要求的復(fù)雜邏輯運(yùn)算,使得計(jì)算過(guò)程可以在GPU處理器中完成,利用并行處理能力很強(qiáng)的GPU 處理器,使計(jì)算效率大大提高。本發(fā)明的方法將處理后的位置相鄰的AO貼圖拼接成一張較大的AO貼圖,最后將所述較大的AO貼圖進(jìn)行在線場(chǎng)景渲染;將相鄰位置的待渲染物體的AO信息存儲(chǔ)到盡可能少的AO貼圖中,減少實(shí)時(shí)渲染時(shí)紋理切換的次數(shù),提高實(shí)時(shí)渲染效率。本發(fā)明的一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),基于上述方法在GPU處理器中設(shè)置依次連接的離線渲染模塊、AO貼圖生成模塊和在線渲染模塊。由CPU生成的半球攝像機(jī)體系傳入所述離線渲染模塊中,其中攝像機(jī)通過(guò)平行投影拍攝所述拍攝待渲染物體,平行投影矩陣用于在攝像機(jī)拍攝場(chǎng)景的過(guò)程中,將場(chǎng)景的3D世界坐標(biāo)轉(zhuǎn)換成2D的屏顯坐標(biāo),消除場(chǎng)景的透視效果,使待渲染物體的大小與攝像機(jī)和待渲染物體的距離沒(méi)有關(guān)系。
圖1是本發(fā)明的環(huán)境光模擬原理示意圖
圖2是本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖
圖3是未經(jīng)處理的AO貼圖
圖4是經(jīng)過(guò)像素?cái)U(kuò)散處理后的AO貼圖
圖5是經(jīng)過(guò)高斯模糊處理后的AO貼圖
圖6是小AO貼圖經(jīng)過(guò)拼接后的大AO貼圖
圖7是經(jīng)過(guò)在線場(chǎng)景渲染后的清晨場(chǎng)景
圖8是經(jīng)過(guò)在線場(chǎng)景渲染后的白晝場(chǎng)景
圖9是經(jīng)過(guò)在線場(chǎng)景渲染后的傍晚場(chǎng)景
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行說(shuō)明。在以下描述中,描述一些具體細(xì)節(jié)以提供本發(fā)明的整體理解。在實(shí)施例中,以示意圖或者框圖的形式表明實(shí)現(xiàn)具體功能的公知元件,以便突出技術(shù)重點(diǎn),而不會(huì)在不必要的細(xì)節(jié)方面模糊本發(fā)明。比外,由于本領(lǐng)域普通技術(shù)人員的理解范圍中涵蓋了關(guān)于網(wǎng)絡(luò)通信、 電磁信號(hào)指令技術(shù)、用戶接口或輸入/輸出技術(shù)等本領(lǐng)域中公開(kāi)的、常識(shí)性的細(xì)節(jié),因而在實(shí)施例中最大程度上省略了上述技術(shù)細(xì)節(jié),而不認(rèn)為這些細(xì)節(jié)是獲得本發(fā)明完整技術(shù)方案所必須的特征。如本領(lǐng)域普通技術(shù)人員的理解范圍可知,本發(fā)明的實(shí)施方式可以是系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品,因此,本發(fā)明可采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括計(jì)算機(jī)固件、駐留軟件、微代碼等)、軟硬件組合實(shí)施例的形式,上述實(shí)施例的形式可分別概括為“模塊”或“系統(tǒng)”。本發(fā)明可采用一個(gè)或多個(gè)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)的任何組合,其中計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是基于電子、磁、光、電磁、紅外或半導(dǎo)體的系統(tǒng)、裝置、 設(shè)備或傳播介質(zhì)等等。下面參照附圖,對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行描述由于GPU處理器采用了并行架構(gòu),使得GPU處理器在圖形處理上的計(jì)算速度遠(yuǎn)遠(yuǎn)高于CPU,更重要的是,GPU處理器具有了越來(lái)越大的可編程能力,這使得本發(fā)明可以通過(guò)編程將計(jì)算密集型運(yùn)算由CPU處理器轉(zhuǎn)移到GPU處理器中完成。GPU處理器的渲染過(guò)程可由頂點(diǎn)著色器(VS,Vertex Shader)和像素著色器(PS,Pixel Shader)這兩個(gè)功能模塊完成。當(dāng)渲染開(kāi)始時(shí),顯卡從圖形加速總線(AGP,Accelerate Graphical Port)接收待渲染物體的頂點(diǎn)數(shù)據(jù),頂點(diǎn)數(shù)據(jù)包括頂點(diǎn)坐標(biāo)、UV值等,其中,頂點(diǎn)坐標(biāo)用于表示待渲染物體的頂點(diǎn)在待渲染物體模型空間中的位置,UV值用于在PS階段中從貼圖紋理中采樣,顯卡會(huì)自動(dòng)對(duì)UV進(jìn)行線性插值,對(duì)應(yīng)到顯示器屏幕的像素上。每個(gè)頂點(diǎn)數(shù)據(jù)依次被送入頂點(diǎn)著色器進(jìn)行坐標(biāo)變換、環(huán)境光計(jì)算等工作,變換的結(jié)果是把包含頂點(diǎn)的每個(gè)三角形變換至屏幕坐標(biāo)系下直接可用。之后需要繪制的像素被送進(jìn)像素著色器中進(jìn)行貼圖像素取值、貼圖混合等工作,填充哪些像素是靠對(duì)頂點(diǎn)的屏幕坐標(biāo)的線性插值來(lái)決定的。在VS階段中顯卡從AGP 總線接收待渲染物體的世界坐標(biāo)矩陣。如圖1所示,環(huán)境光在現(xiàn)實(shí)中是由很多攝像機(jī)共同作用產(chǎn)生的,因而可大氣層1想象成一個(gè)大型的半球體,太陽(yáng)光在大氣層1上的散射形成了無(wú)數(shù)的攝像機(jī)2,攝像機(jī)2對(duì)待渲染物體影響的集合就是最終的環(huán)境光。本發(fā)明將大氣層1模擬為一個(gè)半球體系,半球上均勻分布足夠數(shù)量的攝像機(jī)2,攝像機(jī)2向待渲染物體中心發(fā)射射線;然后把每個(gè)攝像機(jī) 2做為一個(gè)視點(diǎn)拍攝待渲染物體及其相鄰的物體,獲得受這個(gè)攝像機(jī)2影響的以待渲染物體為中心的場(chǎng)景;最后根據(jù)射線被周圍待渲染物體遮擋的情況計(jì)算每個(gè)像素點(diǎn)的被遮擋系數(shù),射線檢測(cè)的過(guò)程通過(guò)顯卡GPU處理器渲染來(lái)完成。如圖2所示,本發(fā)明的系統(tǒng)包括半球攝像機(jī)體系4、離線渲染模塊5、AO貼圖生成模塊6、圖像處理模塊7、在線渲染模塊8,其中離線渲染模塊5、AO貼圖生成模塊6、圖像處理模塊7、在線渲染模塊8使用GPU的渲染管線進(jìn)行工作。在CPU處理器中預(yù)先建立半球攝像機(jī)體系4,半球攝像機(jī)體系4用于模擬現(xiàn)實(shí)中大氣層上隨機(jī)均勻分布的攝像機(jī)2。半球攝像機(jī)體系4的鏡頭參數(shù)由程序預(yù)先生成后作為shader參數(shù)傳入GPU管線,攝像機(jī)2拍攝待渲染物體周圍一定范圍的場(chǎng)景,獲得待渲染物體周圍一定范圍的屬于攝像機(jī)坐標(biāo)系的場(chǎng)景深度圖。半球攝像機(jī)體系4中為每個(gè)攝像機(jī)2均設(shè)置了鏡頭參數(shù),鏡頭參數(shù)包括鏡頭位置和平行投影矩陣,這里使用平行投影的目的是充分利用貼圖的空間。其中平行投影矩陣用于在攝像機(jī)2拍攝場(chǎng)景的過(guò)程中,將場(chǎng)景的3D世界坐標(biāo)轉(zhuǎn)換成2D的屏顯坐標(biāo),消除場(chǎng)景的透視效果,使待渲染物體的大小與攝像機(jī)2和待渲染物體的距離沒(méi)有關(guān)系。AO貼圖生成模塊6為待渲染物體預(yù)先生成AO貼圖ID以及UV偏移,為了將在離線渲染模塊5中生成的,相鄰位置的待渲染物體像素級(jí)別的AO信息存儲(chǔ)到盡可能少的UV貼圖中,減少實(shí)時(shí)渲染時(shí)紋理切換的次數(shù),提高渲染效率。AO貼圖ID指示了 AO貼圖的存儲(chǔ)路徑;UV值是像素點(diǎn)在AO貼圖中的坐標(biāo);UV偏移根據(jù)圖像處理模塊7中多個(gè)小OA貼圖拼接成一個(gè)大OA貼圖時(shí),同一像素點(diǎn)在兩者之間的位置轉(zhuǎn)換關(guān)系計(jì)算得出,設(shè)置UV偏移是為了在線渲染模塊8的實(shí)施渲染過(guò)程中,方便地從拼貼后的大OA貼圖中讀取AO信息。在離線渲染模塊5中對(duì)待渲染物體進(jìn)行渲染時(shí),首先在半球攝像機(jī)體系4中選擇一個(gè)攝像機(jī)2做為視點(diǎn)拍攝待渲染物體,獲得待渲染物體周圍一定范圍的屬于攝像機(jī)坐標(biāo)系的場(chǎng)景深度圖,場(chǎng)景深度圖中攜帶有場(chǎng)景中物體各像素點(diǎn)的場(chǎng)景深度值;其次從AGP總線接收所述待渲染物體的世界坐標(biāo)矩陣,將頂點(diǎn)坐標(biāo)與所述世界坐標(biāo)矩陣相乘得到世界坐標(biāo),再將世界坐標(biāo)與平行投影矩陣相乘得到渲染深度值;頂點(diǎn)坐標(biāo)與平行投影矩陣相乘后再進(jìn)行渲染,得到屏幕坐標(biāo);屏幕坐標(biāo)作為紋理取樣坐標(biāo),從場(chǎng)景深度圖中取出待渲染物體中像素點(diǎn)的場(chǎng)景深度值;最后將像素點(diǎn)的場(chǎng)景深度值與渲染深度值進(jìn)行對(duì)比,當(dāng)渲染深度值小于場(chǎng)景深度值,則視為該像素點(diǎn)受到攝像機(jī)2的影響,輸出AO測(cè)試函數(shù)為1,而當(dāng)渲染深度值大于或等于場(chǎng)景深度值,則視為該像素點(diǎn)未受到攝像機(jī)2的影響,輸出AO測(cè)試函數(shù)為0 ;將半球攝像機(jī)體系4中所有攝像機(jī)2相對(duì)于該像素點(diǎn)的AO測(cè)試函數(shù)加和后標(biāo)準(zhǔn)化,即得到該像素點(diǎn)的AO信息。待渲染物體的每個(gè)像素點(diǎn)的AO信息按照AO貼圖ID輸入AO貼圖生成模塊6中生成AO貼圖并保存。上述過(guò)程只需要通過(guò)兩次渲染,即可以得到攝像機(jī)2對(duì)待渲染物體的AO信息,而計(jì)算AO信息的過(guò)程與物體的復(fù)雜度無(wú)關(guān),這樣就大大簡(jiǎn)化邏輯計(jì)算,使計(jì)算過(guò)程可利用有效邏輯判斷能力較低,但并行處理能力很強(qiáng)的顯卡圖形處理器加速處理。如圖3、圖4所示,由于AO貼圖的尺寸較小,在采樣時(shí)容易導(dǎo)致一個(gè)像素的誤差,從而采樣到AO貼圖中無(wú)效的像素值。為了解決這一問(wèn)題,本發(fā)明將AO貼圖生成模塊6中保存的AO貼圖輸入圖像處理模塊7中進(jìn)行像素?cái)U(kuò)散處理。在圖像處理模塊7中判斷當(dāng)前像素是否無(wú)效,如果無(wú)效則采樣其周圍8個(gè)像素,構(gòu)造3 X 3的坐標(biāo)數(shù)組;遍歷坐標(biāo)數(shù)組中有效的像素顏色值,并將第一個(gè)有效像素的顏色值作為當(dāng)前無(wú)效像素的顏色值,并設(shè)置當(dāng)前無(wú)效像素為有效,最終生成有效的AO貼圖。如圖5所示,為了消除AO貼圖中存在的鋸齒,對(duì)有效的AO貼圖進(jìn)行一次高斯模糊處理,得到新的AO貼圖。如圖6所示,為了減少AO貼圖的數(shù)量,在圖像處理模塊7中將高斯模糊處理后的, 世界坐標(biāo)在同一區(qū)域內(nèi)的位置相鄰的較小AO貼圖拼接成一張較大的AO貼圖。首先,遍歷場(chǎng)景中所有物體,將符合拼接條件的小AO貼圖放入同一個(gè)列表,計(jì)算列表中的小AO貼圖的尺寸之和;然后根據(jù)硬件的容量情況選擇1024X1024,1024X512,512X512,512X256、 256X256、256X 128、128X128、128X64、64X64、64X32、32X32 等多種尺寸格式,根據(jù)大尺寸貼圖優(yōu)先的原則選擇相應(yīng)的格式進(jìn)行拼接,目的是減少貼圖的數(shù)量。如圖7、圖8、圖9所示,為了使場(chǎng)景的環(huán)境光富于變化,實(shí)現(xiàn)諸如清晨、白晝、傍晚、深夜等自然的天氣變化,本發(fā)明將圖像處理模塊7中經(jīng)過(guò)處理后生成的大AO貼圖導(dǎo)入在線渲染模塊8,根據(jù)游戲服務(wù)器在線輸入的調(diào)節(jié)參數(shù),對(duì)處理后生成的大AO貼圖在線場(chǎng)景渲染成為環(huán)境光。在線場(chǎng)景渲染的調(diào)節(jié)參數(shù)包括環(huán)境光基數(shù)和遮擋系數(shù),其中環(huán)境光基數(shù)是不依賴于AO信息,用于整體控制場(chǎng)景的亮度;遮擋系數(shù)是AO信息的權(quán)重,調(diào)節(jié)局部明暗關(guān)系對(duì)比的強(qiáng)弱。則可通過(guò)方程(1)計(jì)算場(chǎng)景的環(huán)境光,用于向用戶進(jìn)行顯示環(huán)境光=(遮擋系數(shù)XAO信息+環(huán)境光基數(shù))X環(huán)境光顏色X環(huán)境光材質(zhì)(1)應(yīng)當(dāng)指出,以上所述具體實(shí)施方式
可以使本領(lǐng)域的技術(shù)人員更全面地理解本發(fā)明創(chuàng)造,但不以任何方式限制本發(fā)明創(chuàng)造。因此,盡管本說(shuō)明書參照附圖和實(shí)施例對(duì)本發(fā)明創(chuàng)造已進(jìn)行了詳細(xì)的說(shuō)明,但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,仍然可以對(duì)本發(fā)明創(chuàng)造進(jìn)行修改或者等同替換,總之,一切不脫離本發(fā)明創(chuàng)造的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明創(chuàng)造專利的保護(hù)范圍當(dāng)中。
權(quán)利要求
1.一種基于GPU加速的環(huán)境光遮擋圖像繪制方法,其步驟包括1)在CPU處理器中建立攝像機(jī)均勻分布的半球攝像機(jī)體系,所述攝像機(jī)的鏡頭參數(shù)包括平行投影矩陣;2)將所述半球攝像機(jī)體系輸入GPU處理器中,選擇一個(gè)攝像機(jī)拍攝待渲染物體周圍一定范圍的場(chǎng)景,獲得待渲染物體周圍一定范圍的場(chǎng)景深度圖,所述場(chǎng)景深度圖中攜帶所述待渲染物體中像素點(diǎn)的場(chǎng)景深度值;3)接收待渲染物體的頂點(diǎn)數(shù)據(jù),所述頂點(diǎn)數(shù)據(jù)包括頂點(diǎn)坐標(biāo);將所述頂點(diǎn)坐標(biāo)與世界坐標(biāo)矩陣相乘后,再與所述平行投影矩陣相乘,得到渲染深度值;4)根據(jù)所述像素點(diǎn)的場(chǎng)景深度值和渲染深度值,計(jì)算所述像素點(diǎn)的AO信息;5)將像素點(diǎn)的AO信息根據(jù)預(yù)先生成AO貼圖ID,存儲(chǔ)到一張AO貼圖中;6)將所述AO貼圖在線場(chǎng)景渲染成為可顯示的環(huán)境光進(jìn)行輸出。
2.如權(quán)利要求1所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制方法,其特征在于 所述步驟4)中,所述AO信息的計(jì)算方法包括將所述像素點(diǎn)的場(chǎng)景深度值與渲染深度值進(jìn)行對(duì)比,當(dāng)渲染深度值小于場(chǎng)景深度值,則視為所述像素點(diǎn)受到攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為1 ;當(dāng)渲染深度值大于或等于場(chǎng)景深度值,則視為所述像素點(diǎn)未受到所述攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為0 ;將所述半球攝像機(jī)體系中所有攝像機(jī)相對(duì)于所述像素點(diǎn)的 AO測(cè)試函數(shù)加和后,即得到所述像素點(diǎn)的AO信息。
3.如權(quán)利要求1或2所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制方法,其特征在于所述步驟6)中,AO貼圖先經(jīng)過(guò)像素?cái)U(kuò)散處理和高斯模糊處理,再將處理后的位置相鄰的AO貼圖拼接成一張較大的AO貼圖,最后將所述較大的AO貼圖進(jìn)行在線場(chǎng)景渲染。
4.一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于它包括顯示器和GPU 處理器,其中GPU處理器中配置依次連接的離線渲染模塊、AO貼圖生成模塊和在線渲染模塊;CPU處理器將半球攝像機(jī)體系傳入所述離線渲染模塊中,所述半球攝像機(jī)體系包括隨機(jī)均勻分布的攝像機(jī),通過(guò)所述攝像機(jī)拍攝待渲染物體的場(chǎng)景深度圖;所述離線渲染模塊從所述場(chǎng)景深度圖中讀取像素點(diǎn)的場(chǎng)景深度值,并根據(jù)所述待渲染物體的頂點(diǎn)坐標(biāo)計(jì)算出像素點(diǎn)的渲染深度值,根據(jù)場(chǎng)景深度值和渲染深度值計(jì)算所述像素點(diǎn)的AO信息;所述AO貼圖生成模塊根據(jù)所述像素點(diǎn)的AO信息生成AO貼圖,并將所述AO貼圖導(dǎo)入在線渲染模塊, 在線場(chǎng)景渲染成為可顯示的環(huán)境光通過(guò)所述顯示器輸出。
5.如權(quán)利要求4所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于 所述攝像機(jī)通過(guò)平行投影拍攝所述拍攝待渲染物體,所述攝像機(jī)的鏡頭參數(shù)包括平行投影矩陣。
6.如權(quán)利要求5所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于 所述離線渲染模塊中,根據(jù)所述待渲染物體的頂點(diǎn)坐標(biāo)計(jì)算所述像素點(diǎn)的渲染深度值和場(chǎng)景深度值的方法包括首先,從AGP總線接收所述待渲染物體的世界坐標(biāo)矩陣,將所述頂點(diǎn)坐標(biāo)與所述世界坐標(biāo)矩陣相乘得到世界坐標(biāo),再將所述世界坐標(biāo)與所述平行投影矩陣相乘得到渲染深度值;所述頂點(diǎn)坐標(biāo)與所述平行投影矩陣相乘后再進(jìn)行渲染,得到屏幕坐標(biāo); 所述屏幕坐標(biāo)作為紋理取樣坐標(biāo),從所述場(chǎng)景深度圖中取出所述待渲染物體中像素點(diǎn)的場(chǎng)景深度值。
7.如權(quán)利要求6所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于所述離線渲染模塊中,得出所述像素點(diǎn)的AO信息的方法包括將所述像素點(diǎn)的場(chǎng)景深度值與渲染深度值進(jìn)行對(duì)比,當(dāng)渲染深度值小于場(chǎng)景深度值,則視為所述像素點(diǎn)受到攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為1 ;當(dāng)渲染深度值大于或等于場(chǎng)景深度值,則視為所述像素點(diǎn)未受到所述攝像機(jī)的影響,輸出AO測(cè)試函數(shù)為0 ;將所述半球攝像機(jī)體系中所有攝像機(jī)相對(duì)于所述像素點(diǎn)的AO測(cè)試函數(shù)加和后,即得到所述像素點(diǎn)的AO信息。
8.如權(quán)利要求4 7之一所述的一種基于GPU加速的環(huán)境光遮擋圖像繪制系統(tǒng),其特征在于在所述AO貼圖生成模塊和在線渲染模塊之間設(shè)置圖像處理模塊,對(duì)所
全文摘要
本發(fā)明涉及一種基于GPU加速的環(huán)境光遮擋圖像繪制方法及系統(tǒng),其步驟包括1)在CPU處理器中建立攝像機(jī)均勻分布的半球攝像機(jī)體系;2)選擇一個(gè)攝像機(jī)拍攝待渲染物體周圍一定范圍的場(chǎng)景,獲得待渲染物體周圍一定范圍的具有場(chǎng)景深度值的場(chǎng)景深度圖;3)接收待渲染物體的頂點(diǎn)數(shù)據(jù),頂點(diǎn)數(shù)據(jù)包括頂點(diǎn)坐標(biāo),根據(jù)頂點(diǎn)坐標(biāo)計(jì)算得到像素點(diǎn)的渲染深度值;4)根據(jù)像素點(diǎn)的場(chǎng)景深度值和渲染深度值,計(jì)算像素點(diǎn)的AO信息;5)將像素點(diǎn)的AO信息根據(jù)預(yù)先生成AO貼圖ID,存儲(chǔ)到一張AO貼圖中;6)將AO貼圖在線場(chǎng)景渲染成為可顯示的環(huán)境光進(jìn)行輸出。由于本方法的AO信息計(jì)算過(guò)程在GPU處理器中完成,利用并行處理能力很強(qiáng)的GPU處理器,使計(jì)算效率大大提高。
文檔編號(hào)G06T15/10GK102254340SQ20111021537
公開(kāi)日2011年11月23日 申請(qǐng)日期2011年7月29日 優(yōu)先權(quán)日2011年7月29日
發(fā)明者劉業(yè)平, 李雷 申請(qǐng)人:北京麒麟網(wǎng)信息科技有限公司