本公開涉及計算機,尤其涉及一種光照渲染方法、裝置、電子設備及存儲介質。
背景技術:
1、隨著智能終端硬件性能的提升,移動游戲的畫質和復雜度也在不斷提高,玩家對于游戲視覺體驗的要求越來越高,其中實現(xiàn)游戲場景的全局光照效果是提升游戲視覺體驗的關鍵技術之一。
2、然而,相關技術中用于實現(xiàn)游戲場景全局光照效果的光照渲染方式,雖然可以支持動態(tài)光照場景的全局光照效果,但是無法適用于開放世界游戲場景,且由于流程復雜,性能開銷大,容易造成移動終端以及部分中低端的pc機的游戲運行卡頓,導致游戲畫面的視覺效果差。
技術實現(xiàn)思路
1、本公開提供一種光照渲染方法、裝置、電子設備及存儲介質,以至少解決相關技術中的光照渲染方式無法在移動終端以及部分中低端的pc機上實現(xiàn)開放世界游戲場景的動態(tài)全局光照效果,導致游戲畫面的視覺效果差的問題。本公開的技術方案如下:
2、根據(jù)本公開實施例的第一方面,提供一種光照渲染方法,包括:
3、獲取多個場景覆蓋范圍在虛擬場景中分別對應的當前光照狀態(tài)信息,所述多個場景覆蓋范圍對應于多個層級,且低層級的場景覆蓋范圍小于高層級的場景覆蓋范圍;
4、針對每個所述層級,基于所述層級所對應場景覆蓋范圍的當前光照狀態(tài)信息,生成所述層級的異步光照重建任務;
5、在執(zhí)行所述層級的異步光照重建任務過程中,獲取對應場景覆蓋范圍內(nèi)的多個光照探針分別存儲的預計算光照數(shù)據(jù),所述場景覆蓋范圍對應的三維空間包括以所述多個光照探針為頂點的多個四面體網(wǎng)格;確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格,所述體素位于所述匹配四面體網(wǎng)格內(nèi);基于所述匹配四面體網(wǎng)格中各光照探針的預計算光照數(shù)據(jù),確定存儲至所述體素的間接光照數(shù)據(jù),并將所述間接光照數(shù)據(jù)存儲至所述體素,得到所述層級所對應場景覆蓋范圍的目標體積紋理;
6、基于各所述層級所對應場景覆蓋范圍的目標體積紋理,對所述虛擬場景進行光照渲染。
7、在一些示例性的實施方式中,在確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格之前,所述方法還包括:
8、基于對應層級的步長對所述場景覆蓋范圍所對應的三維空間進行體素化,得到所述場景覆蓋范圍對應的體素空間,所述體素空間由多個所述體素構成;
9、其中,低層級對應的步長小于高層級對應的步長。
10、在一些示例性的實施方式中,所述多個場景覆蓋范圍相互之間存在重疊,所述基于各所述層級所對應場景覆蓋范圍的目標體積紋理,對所述虛擬場景進行光照渲染,包括:
11、確定待渲染像素點在各所述層級所對應場景覆蓋范圍中,所屬的至少一候選場景覆蓋范圍;
12、確定所述至少一個候選場景覆蓋范圍所對應層級中的最低層級;
13、確定所述待渲染像素點,在所述最低層級的候選場景覆蓋范圍所對應目標體積紋理中的匹配體素;
14、基于所述匹配體素中存儲的間接光照數(shù)據(jù),對所述待渲染像素點進行光照渲染。
15、在一些示例性的實施方式中,所述基于所述匹配四面體網(wǎng)格中各光照探針的預計算光照數(shù)據(jù),確定存儲至所述體素的間接光照數(shù)據(jù),包括:
16、基于所述匹配四面體網(wǎng)格中各光照探針與所述體素之間的距離,確定各所述光照探針對應的權重;
17、基于各所述光照探針對應的權重,對各所述光照探針中存儲的預計算光照數(shù)據(jù)進行加權求和,得到存儲至所述體素的間接光照數(shù)據(jù)。
18、在一些示例性的實施方式中,所述基于所述層級所對應場景覆蓋范圍的當前光照狀態(tài)信息,生成所述層級的異步光照重建任務包括:
19、確定所述層級所對應場景覆蓋范圍的當前光照狀態(tài)信息與歷史光照狀態(tài)信息之間的差異,得到所述層級的光照狀態(tài)差異;
20、在所述層級的光照狀態(tài)差異滿足預設光照狀態(tài)更新條件的情況下,生成所述層級的異步光照重建任務。
21、在一些示例性的實施方式中,所述方法還包括:
22、在所述層級的光照狀態(tài)差異不滿足預設光照狀態(tài)更新條件的情況下,確定所述層級所對應場景覆蓋范圍的當前覆蓋范圍變化;
23、在所述當前覆蓋范圍變化滿足預設變化條件的情況下,生成所述層級的異步光照重建任務。
24、在一些示例性的實施方式中,在確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格之前,所述方法還包括:
25、針對所述場景覆蓋范圍所對應三維空間中的體素,從對應層級的歷史目標體積紋理中查找所述體素對應的歷史體素;
26、若查找到所述歷史體素,則將所述歷史體素中存儲的間接光照數(shù)據(jù)存儲至所述體素;
27、若未查找到所述歷史體素,則執(zhí)行所述確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格的步驟。
28、在一些示例性的實施方式中,所述方法還包括:
29、確定所述虛擬場景中光源的光源球諧系數(shù);
30、對于所述虛擬場景內(nèi)的各光照探針,基于所述光照探針中存儲的光線傳輸系數(shù)與所述光源球諧系數(shù)確定間接光照值,將所述間接光照值作為預計算光照數(shù)據(jù)存儲至所述光照探針中。
31、根據(jù)本公開實施例的第二方面,提供一種光照渲染裝置,包括:
32、光照狀態(tài)獲取單元,被配置為執(zhí)行獲取多個場景覆蓋范圍在虛擬場景中分別對應的當前光照狀態(tài)信息,所述多個場景覆蓋范圍對應于多個層級,且低層級的場景覆蓋范圍小于高層級的場景覆蓋范圍;
33、異步任務生成單元,被配置為執(zhí)行針對每個所述層級,基于所述層級所對應場景覆蓋范圍的當前光照狀態(tài)信息,生成所述層級的異步光照重建任務;
34、體積紋理生成單元,被配置為執(zhí)行在執(zhí)行所述層級的異步光照重建任務過程中,獲取對應場景覆蓋范圍內(nèi)的多個光照探針分別存儲的預計算光照數(shù)據(jù),所述場景覆蓋范圍對應的三維空間包括以所述多個光照探針為頂點的多個四面體網(wǎng)格;確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格,所述體素位于所述匹配四面體網(wǎng)格內(nèi);基于所述匹配四面體網(wǎng)格中各光照探針的預計算光照數(shù)據(jù),確定存儲至所述體素的間接光照數(shù)據(jù),并將所述間接光照數(shù)據(jù)存儲至所述體素,得到所述層級所對應場景覆蓋范圍的目標體積紋理;
35、光照渲染單元,被配置為執(zhí)行基于各所述層級所對應場景覆蓋范圍的目標體積紋理,對所述虛擬場景進行光照渲染。
36、在一些示例性的實施方式中,體積紋理生成單元,還被配置為執(zhí)行在確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格之前,基于對應層級的步長對所述場景覆蓋范圍所對應的三維空間進行體素化,得到所述場景覆蓋范圍對應的體素空間,所述體素空間由多個所述體素構成;其中,低層級對應的步長小于高層級對應的步長。
37、在一些示例性的實施方式中,所述多個場景覆蓋范圍相互之間存在重疊,所述光照渲染單元,包括:
38、第一確定單元,被配置為執(zhí)行確定待渲染像素點在各所述層級所對應場景覆蓋范圍中,所屬的至少一候選場景覆蓋范圍;
39、第二確定單元,被配置為執(zhí)行確定所述至少一個候選場景覆蓋范圍所對應層級中的最低層級;
40、匹配體素確定單元,被配置為執(zhí)行確定所述待渲染像素點,在所述最低層級的候選場景覆蓋范圍所對應目標體積紋理中的匹配體素;
41、像素渲染單元,被配置為執(zhí)行基于所述匹配體素中存儲的間接光照數(shù)據(jù),對所述待渲染像素點進行光照渲染。
42、在一些示例性的實施方式中,所述體積紋理生成單元,在基于所述匹配四面體網(wǎng)格中各光照探針的預計算光照數(shù)據(jù),確定存儲至所述體素的間接光照數(shù)據(jù)時,被配置為執(zhí)行基于所述匹配四面體網(wǎng)格中各光照探針與所述體素之間的距離,確定各所述光照探針對應的權重;基于各所述光照探針對應的權重,對各所述光照探針中存儲的預計算光照數(shù)據(jù)進行加權求和,得到存儲至所述體素的間接光照數(shù)據(jù)。
43、在一些示例性的實施方式中,所述異步任務生成單元包括:
44、光照狀態(tài)差異確定單元,被配置為執(zhí)行確定所述層級所對應場景覆蓋范圍的當前光照狀態(tài)信息與歷史光照狀態(tài)信息之間的差異,得到所述層級的光照狀態(tài)差異;
45、第一生成單元,被配置為執(zhí)行在所述層級的光照狀態(tài)差異滿足預設光照狀態(tài)更新條件的情況下,生成所述層級的異步光照重建任務。
46、在一些示例性的實施方式中,所述異步任務生成單元還包括:
47、覆蓋范圍變化確定單元,被配置為執(zhí)行在所述層級的光照狀態(tài)差異不滿足預設光照狀態(tài)更新條件的情況下,確定所述層級所對應場景覆蓋范圍的當前覆蓋范圍變化;
48、第二生成單元,被配置為執(zhí)行在所述當前覆蓋范圍變化滿足預設變化條件的情況下,生成所述層級的異步光照重建任務。
49、在一些示例性的實施方式中,所述體積紋理生成單元,還被配置為執(zhí)行:針對所述場景覆蓋范圍所對應三維空間中的體素,從對應層級的歷史目標體積紋理中查找所述體素對應的歷史體素;若查找到所述歷史體素,則將所述歷史體素中存儲的間接光照數(shù)據(jù)存儲至所述體素;若未查找到所述歷史體素,則執(zhí)行所述確定所述場景覆蓋范圍所對應三維空間中的體素,在所述多個四面體網(wǎng)格中的匹配四面體網(wǎng)格的步驟。
50、在一些示例性的實施方式中,所述裝置還包括:
51、光源球諧系數(shù)確定單元,被配置為執(zhí)行確定所述虛擬場景中光源的光源球諧系數(shù);
52、間接光照值確定單元,被配置為執(zhí)行對于所述虛擬場景內(nèi)的各光照探針,基于所述光照探針中存儲的光線傳輸系數(shù)與所述光源球諧系數(shù)確定間接光照值,將所述間接光照值作為預計算光照數(shù)據(jù)存儲至所述光照探針中。
53、根據(jù)本公開實施例的第三方面,提供一種電子設備,包括:
54、處理器;
55、用于存儲所述處理器可執(zhí)行指令的存儲器;
56、其中,所述處理器被配置為執(zhí)行所述指令,以實現(xiàn)上述第一方面的光照渲染方法。
57、根據(jù)本公開實施例的第四方面,提供一種計算機可讀存儲介質,當所述計算機可讀存儲介質中的指令由電子設備的處理器執(zhí)行時,使得電子設備能夠執(zhí)行上述第一方面的光照渲染方法。
58、根據(jù)本公開實施例的第五方面,提供一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述第一方面的光照渲染方法。
59、本公開實施例通過將虛擬場景分為對應多個層級的場景覆蓋范圍,且低層級的場景覆蓋范圍小于高層級的場景覆蓋范圍,進而針對每個層級,基于該層級所對應場景覆蓋范圍的當前光照狀態(tài)信息生成該層級的異步光照重建任務,并在執(zhí)行該層級的異步光照重建任務過程中,獲取其對應場景覆蓋范圍內(nèi)的多個光照探針分別存儲的預計算光照數(shù)據(jù),該場景覆蓋范圍對應的三維空間包括以該多個光照探針為頂點的多個四面體網(wǎng)格,進而確定該場景覆蓋范圍所對應三維空間中的體素在該多個四面體網(wǎng)格中的匹配四面體網(wǎng)格,基于該匹配四面體網(wǎng)格中各光照探針的預計算光照數(shù)據(jù)確定存儲至該體素的間接光照數(shù)據(jù),并將該間接光照數(shù)據(jù)存儲至該體素,得到該層級所對應場景覆蓋范圍的目標體積紋理,基于各層級所對應場景覆蓋范圍的目標體積紋理,對該虛擬場景進行光照渲染。上述技術方案中,每個層級使用單獨的異步任務去更新,可以在cpu端異步進行,不阻塞渲染線程,可以在移動終端以及部分中低端的pc機上實現(xiàn)開放世界游戲場景的動態(tài)全局光照效果,有效地提升了游戲的畫面品質。
60、應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。