本申請涉及3d渲染,尤其涉及一種基于web端的渲染動態(tài)光源方法和裝置。
背景技術(shù):
1、在3d場景中,豐富的光源可以極大提升場景的渲染效果,尤其是夜景效果;另外數(shù)字孿生項(xiàng)目中,大量光源也更有利于照明、標(biāo)記等可視化效果的直觀展示。但大部分引擎(web端)使用傳統(tǒng)的前向渲染管線,該管線并不支持實(shí)時渲染大量燈光;少部分引擎使用傳統(tǒng)延遲渲染管線,支持大量燈光渲染,但又有諸多限制;個別引擎使用世界空間下的clustered?shading技術(shù)改造傳統(tǒng)前向渲染管線,獲得了大量光源渲染的能力,但因其是在世界空間下做的光源空間劃分,導(dǎo)致劃分參數(shù)與場景高度綁定,通用性不強(qiáng),并且光源劃分不會隨相機(jī)變化進(jìn)行動態(tài)分配,性能沒有達(dá)到最優(yōu)。
技術(shù)實(shí)現(xiàn)思路
1、針對現(xiàn)有的3d渲染技術(shù)存在的上述問題,本申請?zhí)峁┝艘环N基于web端的渲染動態(tài)光源方法和裝置。
2、第一方面,本申請?zhí)峁┝艘环N基于web端的渲染動態(tài)光源方法,所述方法包括:
3、在視圖空間內(nèi),對光源進(jìn)行分簇劃分得到體簇劃分信息和光源信息數(shù)據(jù),并將體簇數(shù)據(jù)、所述體簇劃分信息和所述光源信息數(shù)據(jù)傳入著色器;
4、利用所述體簇劃分信息、所述體簇數(shù)據(jù)和所述光源信息數(shù)據(jù),在所述著色器中渲染多光源效果。
5、進(jìn)一步地,所述在視圖空間內(nèi),對光源進(jìn)行分簇劃分得到體簇劃分信息和光源信息數(shù)據(jù),具體包括:
6、在視圖空間下,根據(jù)快速光源劃分算法,計算光源對應(yīng)的燈光包圍球所覆蓋的視圖空間內(nèi)的體簇索引;
7、在體簇數(shù)據(jù)中,根據(jù)所述體簇索引,找到被覆蓋的體簇數(shù)據(jù),將光源索引寫入所述體簇數(shù)據(jù);
8、根據(jù)所述光源索引,得到所述光源信息數(shù)據(jù)。
9、進(jìn)一步地,所述利用所述體簇劃分信息、所述體簇數(shù)據(jù)和索虎光源信息數(shù)據(jù),在所述著色器中渲染多光源效果,具體包括:
10、將所述光源的世界坐標(biāo)系下的位置坐標(biāo)轉(zhuǎn)換到視圖空間下的位置;
11、根據(jù)所述視圖空間下的位置、傳入的視圖空間體簇劃分信息,計算所述視圖空間下的位置坐標(biāo)所處的體簇數(shù)據(jù)中的體簇下標(biāo);
12、使用體簇下標(biāo)從傳入的體簇數(shù)據(jù)中獲取影響該體簇數(shù)據(jù)的光源下標(biāo);
13、使用獲取的光源下標(biāo),從傳入的光源信息數(shù)據(jù)中獲取該光源燈光信息;
14、根據(jù)光源燈光信息進(jìn)行光照渲染。
15、進(jìn)一步地,所述方法還包括:
16、根據(jù)攝像機(jī)數(shù)據(jù),更新視圖空間劃分所依賴的參數(shù)數(shù)據(jù);
17、計算燈光包圍球,并將所述燈光包圍球轉(zhuǎn)換到視圖空間下的坐標(biāo)系。
18、進(jìn)一步地,所述將所述光源的世界坐標(biāo)系下的位置坐標(biāo)轉(zhuǎn)換到視圖空間下的位置,具體包括:
19、利用所述光源的世界坐標(biāo)系下的位置和相機(jī)的視圖矩陣,將世界坐標(biāo)系下的位置應(yīng)用到所述視圖矩陣,得到了所述光源在視圖空間下的位置。
20、進(jìn)一步地,所述使用體簇下標(biāo)從傳入的體簇數(shù)據(jù)中獲取影響該體簇數(shù)據(jù)的光源下標(biāo),具體包括:
21、根據(jù)上一步計算出的體簇下標(biāo),將體簇下標(biāo)轉(zhuǎn)換為采樣存儲體簇數(shù)據(jù)貼圖的uv坐標(biāo),從體簇數(shù)據(jù)貼圖中取出當(dāng)前體簇受光源影響的光源下標(biāo)。
22、第二方面,本申請還提供了一種基于web端的渲染動態(tài)光源裝置,所述裝置包括:
23、第一處理模塊,用于在視圖空間內(nèi),對光源進(jìn)行分簇劃分得到體簇劃分信息和光源信息數(shù)據(jù),并將體簇數(shù)據(jù)、所述體簇劃分信息和所述光源信息數(shù)據(jù)傳入著色器;
24、第二處理模塊,用于利用所述體簇劃分信息、所述體簇數(shù)據(jù)和所述光源信息數(shù)據(jù),在所述著色器中渲染多光源效果。
25、第三方面,本申請還提供了一種計算機(jī)設(shè)備,包括存儲器和處理器,所述存儲器存儲有計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)第一方面中任一項(xiàng)所述的一種基于web端的渲染動態(tài)光源方法。
26、第四方面,本申請還提供一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)第一方面中任一項(xiàng)所述的一種基于web端的渲染動態(tài)光源方法。
27、本申請?zhí)峁┑囊环N基于web端的渲染動態(tài)光源方法,包括在視圖空間內(nèi),對光源進(jìn)行分簇劃分得到體簇劃分信息和光源信息數(shù)據(jù),并將體簇數(shù)據(jù)、所述體簇劃分信息和所述光源信息數(shù)據(jù)傳入著色器;利用所述體簇劃分信息、所述體簇數(shù)據(jù)和所述光源信息數(shù)據(jù),在所述著色器中渲染多光源效果。本發(fā)明解決傳統(tǒng)前向渲染管線,動態(tài)光源支持?jǐn)?shù)量少的問題。傳統(tǒng)前向渲染管線,動態(tài)增減光源消耗高的問題。延遲渲染對半透明物體渲染支持不好、不支持msaa、著色器種類數(shù)量支持有限的問題。clustered?shading(w)&?forward+渲染管線切換不同場景成本高、不支持隨相機(jī)變化動態(tài)劃分光源的問題。
1.一種基于web端的渲染動態(tài)光源方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的基于web端的渲染動態(tài)光源方法,其特征在于,所述在視圖空間內(nèi),對光源進(jìn)行分簇劃分得到體簇劃分信息和光源信息數(shù)據(jù),具體包括:
3.根據(jù)權(quán)利要求1所述的基于web端的渲染動態(tài)光源方法,其特征在于,所述利用所述體簇劃分信息、所述體簇數(shù)據(jù)和索虎光源信息數(shù)據(jù),在所述著色器中渲染多光源效果,具體包括:
4.根據(jù)權(quán)利要求1所述的基于web端的渲染動態(tài)光源方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求3所述的基于web端的渲染動態(tài)光源方法,其特征在于,所述將所述光源的世界坐標(biāo)系下的位置坐標(biāo)轉(zhuǎn)換到視圖空間下的位置,具體包括:
6.根據(jù)權(quán)利要求3所述的基于web端的渲染動態(tài)光源方法,其特征在于,所述使用體簇下標(biāo)從傳入的體簇數(shù)據(jù)中獲取影響該體簇數(shù)據(jù)的光源下標(biāo),具體包括:
7.一種基于web端的渲染動態(tài)光源裝置,其特征在于,所述裝置包括:
8.根據(jù)權(quán)利要求7所述的基于web端的渲染動態(tài)光源裝置,其特征在于,
9.一種計算機(jī)設(shè)備,包括存儲器和處理器,所述存儲器存儲有計算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)權(quán)利要求1至6中任一項(xiàng)所述的基于web端的渲染動態(tài)光源方法。
10.一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,其特征在于,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)權(quán)利要求1至6中任一項(xiàng)所述的基于web端的渲染動態(tài)光源方法。