本公開實(shí)施例涉及數(shù)據(jù)處理,具體涉及一種虛擬場(chǎng)景的渲染方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、虛擬場(chǎng)景是通過計(jì)算機(jī)技術(shù)形成的擬真場(chǎng)景,能夠廣泛應(yīng)用于游戲、虛擬現(xiàn)實(shí)等多個(gè)領(lǐng)域。在虛擬場(chǎng)景的渲染過程中,中央處理器(central?processing?unit,cpu)需要向圖形處理器(graphics?processing?unit,gpu)發(fā)送繪制指令(draw?call,dc),以便通過繪制指令進(jìn)行渲染操作。其中,繪制指令的數(shù)量是影響運(yùn)行性能的重要指標(biāo),過多的繪制指令會(huì)導(dǎo)致gpu的渲染負(fù)擔(dān)過大,從而導(dǎo)致頁面卡頓等問題。
2、在相關(guān)技術(shù)中,可通過合批技術(shù)降低繪制指令的數(shù)量。但是,目前的合批技術(shù)對(duì)于渲染對(duì)象的要求很高,只能針對(duì)完全相同的渲染對(duì)象進(jìn)行合批處理。在虛擬場(chǎng)景中存在大量場(chǎng)景信息的情況下,出現(xiàn)完全相同的兩個(gè)渲染對(duì)象的可能性非常小。因此,在大規(guī)模的虛擬場(chǎng)景中,通常無法應(yīng)用合批操作,進(jìn)而導(dǎo)致渲染效率低下、頁面卡頓等一系列問題。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述問題,提出了本公開以便提供一種克服上述問題或者至少部分地解決上述問題的一種虛擬場(chǎng)景的渲染方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
2、根據(jù)本公開實(shí)施例的一個(gè)方面,提供了一種虛擬場(chǎng)景的渲染方法,包括:
3、獲取與虛擬場(chǎng)景相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù);其中,所述場(chǎng)景實(shí)例化數(shù)據(jù)用于表征所述虛擬場(chǎng)景中包含的多個(gè)場(chǎng)景模塊,以及每個(gè)場(chǎng)景模塊中包含的實(shí)例渲染單元的種類和數(shù)量;所述多個(gè)場(chǎng)景模塊復(fù)用至少兩種實(shí)例渲染單元;
4、將所述多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元進(jìn)行合批渲染。
5、在一種可選的實(shí)現(xiàn)方式中,所述同一種類的多個(gè)實(shí)例渲染單元對(duì)應(yīng)于相同的實(shí)例基本信息;
6、所述將所述多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元進(jìn)行合批渲染包括:
7、針對(duì)任一實(shí)例渲染單元,獲取所述實(shí)例渲染單元的實(shí)例變換數(shù)據(jù);根據(jù)所述實(shí)例變換數(shù)據(jù),對(duì)所述實(shí)例渲染單元的實(shí)例基本信息進(jìn)行變換處理,渲染變換處理后的實(shí)例渲染單元。
8、在一種可選的實(shí)現(xiàn)方式中,所述實(shí)例基本信息包括:與實(shí)例形狀相關(guān)聯(lián)的網(wǎng)格信息、和/或與實(shí)例材質(zhì)相關(guān)聯(lián)的紋理信息;則所述實(shí)例變換數(shù)據(jù)包括:用于對(duì)所述網(wǎng)格信息進(jìn)行變換處理的第一變換數(shù)據(jù)、和/或用于對(duì)所述紋理信息進(jìn)行變換處理的第二變換數(shù)據(jù);
9、所述根據(jù)所述實(shí)例變換數(shù)據(jù),對(duì)所述實(shí)例渲染單元的實(shí)例基本信息進(jìn)行變換處理包括:
10、根據(jù)所述第一變換數(shù)據(jù),通過頂點(diǎn)著色器對(duì)所述實(shí)例渲染單元的網(wǎng)格信息進(jìn)行變換處理;和/或,
11、根據(jù)所述第二變換數(shù)據(jù),通過像素著色器對(duì)所述實(shí)例渲染單元的紋理信息進(jìn)行變換處理。
12、在一種可選的實(shí)現(xiàn)方式中,所述獲取所述實(shí)例渲染單元的實(shí)例變換數(shù)據(jù)包括:
13、從所述實(shí)例渲染單元的實(shí)例屬性矩陣中獲取所述實(shí)例渲染單元的實(shí)例變換數(shù)據(jù);
14、其中,所述實(shí)例屬性矩陣為n*n的矩陣,且所述實(shí)例屬性矩陣包括:第一矩陣區(qū)域以及第二矩陣區(qū)域,所述實(shí)例變換數(shù)據(jù)存儲(chǔ)于所述第一矩陣區(qū)域,且所述第一矩陣區(qū)域至少包括:所述實(shí)例屬性矩陣的第n行以及第n列對(duì)應(yīng)的區(qū)域;其中,n為自然數(shù)。
15、在一種可選的實(shí)現(xiàn)方式中,所述實(shí)例屬性矩陣的第二矩陣區(qū)域用于存儲(chǔ)所述實(shí)例渲染單元的實(shí)例方位數(shù)據(jù);
16、其中,所述實(shí)例方位數(shù)據(jù)包括:實(shí)例位置數(shù)據(jù)、實(shí)例旋轉(zhuǎn)數(shù)據(jù)、和/或?qū)嵗s放數(shù)據(jù);
17、其中,所述實(shí)例縮放數(shù)據(jù)用于表征所述實(shí)例渲染單元的縮放方向;其中,所述縮放方向包括:第一方向和/或與所述第一方向相互垂直的第二方向。
18、在一種可選的實(shí)現(xiàn)方式中,所述場(chǎng)景實(shí)例化數(shù)據(jù)包括:與所述多個(gè)場(chǎng)景模塊相對(duì)應(yīng)的多個(gè)模塊實(shí)例化數(shù)據(jù);其中,所述模塊實(shí)例化數(shù)據(jù)包括:根據(jù)對(duì)應(yīng)的場(chǎng)景模塊中包含的實(shí)例渲染單元的種類和數(shù)量生成的實(shí)例屬性數(shù)據(jù)集;
19、其中,每個(gè)場(chǎng)景模塊對(duì)應(yīng)的模塊實(shí)例化數(shù)據(jù)中包含的實(shí)例屬性數(shù)據(jù)集的數(shù)量與所述場(chǎng)景模塊中包含的實(shí)例渲染單元的種類數(shù)量匹配;
20、并且,每個(gè)實(shí)例屬性數(shù)據(jù)集具有種類標(biāo)識(shí),所述種類標(biāo)識(shí)用于表征所述實(shí)例屬性數(shù)據(jù)集對(duì)應(yīng)的實(shí)例渲染單元的種類。
21、在一種可選的實(shí)現(xiàn)方式中,每個(gè)實(shí)例屬性數(shù)據(jù)集用于存儲(chǔ)所述場(chǎng)景模塊中包含的與所述種類標(biāo)識(shí)對(duì)應(yīng)的多個(gè)相同種類的實(shí)例渲染單元的實(shí)例變換數(shù)據(jù);
22、所述將所述多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元進(jìn)行合批渲染之前,還包括:
23、確定所述多個(gè)模塊實(shí)例化數(shù)據(jù)中具有相同種類標(biāo)識(shí)的實(shí)例屬性數(shù)據(jù)集;
24、根據(jù)所述具有相同種類標(biāo)識(shí)的實(shí)例屬性數(shù)據(jù)集,確定所述多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元。
25、在一種可選的實(shí)現(xiàn)方式中,所述合批渲染的渲染次數(shù)與所述多個(gè)場(chǎng)景模塊中包含的實(shí)例渲染單元的種類數(shù)量相同。
26、在一種可選的實(shí)現(xiàn)方式中,所述虛擬場(chǎng)景為游戲應(yīng)用中的游戲場(chǎng)景,所述獲取與虛擬場(chǎng)景相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù)包括:
27、根據(jù)所述游戲場(chǎng)景中的相機(jī)位置,確定所述虛擬場(chǎng)景中的當(dāng)前可視區(qū)域;
28、動(dòng)態(tài)獲取與所述當(dāng)前可視區(qū)域相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù),將所述場(chǎng)景實(shí)例化數(shù)據(jù)加載至內(nèi)存空間。
29、在一種可選的實(shí)現(xiàn)方式中,所述獲取與虛擬場(chǎng)景相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù)之后,還包括:
30、根據(jù)遮擋關(guān)系,確定所述場(chǎng)景實(shí)例化數(shù)據(jù)中包含的不可見的實(shí)例渲染單元;
31、針對(duì)所述不可見的實(shí)例渲染單元進(jìn)行裁剪處理,得到處理后的場(chǎng)景實(shí)例化數(shù)據(jù),以針對(duì)處理后的場(chǎng)景實(shí)例化數(shù)據(jù)進(jìn)行合批渲染。
32、在一種可選的實(shí)現(xiàn)方式中,所述場(chǎng)景模塊通過以下方式確定:
33、根據(jù)所述虛擬場(chǎng)景的結(jié)構(gòu)信息,確定所述虛擬場(chǎng)景中包含的結(jié)構(gòu)體,以及所述結(jié)構(gòu)體中包含的基準(zhǔn)面;
34、根據(jù)所述基準(zhǔn)面的尺寸和/或形狀,確定所述基準(zhǔn)面中包含的基準(zhǔn)線,以及與所述基準(zhǔn)線相對(duì)應(yīng)的場(chǎng)景模塊。
35、依據(jù)本公開的再一方面,提供了一種虛擬場(chǎng)景的渲染裝置,包括:
36、獲取模塊,適于獲取與虛擬場(chǎng)景相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù);其中,所述場(chǎng)景實(shí)例化數(shù)據(jù)用于表征所述虛擬場(chǎng)景中包含的多個(gè)場(chǎng)景模塊,以及每個(gè)場(chǎng)景模塊中包含的實(shí)例渲染單元的種類和數(shù)量;所述多個(gè)場(chǎng)景模塊復(fù)用至少兩種實(shí)例渲染單元;
37、渲染模塊,適于將所述多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元進(jìn)行合批渲染。
38、依據(jù)本公開的再一方面,提供了一種電子設(shè)備,包括:處理器、存儲(chǔ)器、通信接口和通信總線,所述處理器、所述存儲(chǔ)器和所述通信接口通過所述通信總線完成相互間的通信;
39、所述存儲(chǔ)器用于存放至少一可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行如上述的虛擬場(chǎng)景的渲染方法。
40、依據(jù)本公開的再一方面,提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)中存儲(chǔ)有至少一可執(zhí)行指令,所述可執(zhí)行指令使處理器執(zhí)行如上述的虛擬場(chǎng)景的渲染方法。
41、在本公開的實(shí)施例中,首先,獲取與虛擬場(chǎng)景相對(duì)應(yīng)的場(chǎng)景實(shí)例化數(shù)據(jù);通過場(chǎng)景實(shí)例化數(shù)據(jù)確定虛擬場(chǎng)景中包含的多個(gè)場(chǎng)景模塊以及每個(gè)場(chǎng)景模塊中包含的實(shí)例渲染單元的種類和數(shù)量;然后,將多個(gè)場(chǎng)景模塊中包含的同一種類的多個(gè)實(shí)例渲染單元進(jìn)行合批渲染。由此可見,在該方式中,多個(gè)場(chǎng)景模塊復(fù)用至少兩種實(shí)例渲染單元,從而能夠借助至少兩種實(shí)例渲染單元拼接得到多個(gè)不同的場(chǎng)景模塊,并且,在渲染過程中,能夠針對(duì)多個(gè)場(chǎng)景模塊中包含的相同種類的實(shí)例渲染單元進(jìn)行合批處理,從而使一次渲染過程能夠同時(shí)繪制多個(gè)不同的場(chǎng)景模塊中的實(shí)例渲染單元。由此可見,通過將虛擬場(chǎng)景的構(gòu)成要素拆分為可復(fù)用的、更小粒度的實(shí)例渲染單元,能夠大幅增加合批范圍,提升渲染效率。
42、上述說明僅是本公開技術(shù)方案的概述,為了能夠更清楚了解本公開的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本公開的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本公開的具體實(shí)施方式。