System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及計(jì)算機(jī)圖形,尤其涉及一種webgpu實(shí)時(shí)渲染管線的生成方法。
技術(shù)介紹
1、在現(xiàn)有技術(shù)中,webgpu引擎很少,大部分都是通過預(yù)先定義好某個(gè)材質(zhì)的數(shù)據(jù)綁定插槽以及渲染管線,調(diào)用瀏覽器提供的底層api生產(chǎn)不同的數(shù)據(jù)綁定邏輯(bindgroup)以及渲染管線(renderpipe)針對不同的渲染情況,封裝了較多的渲染邏輯,靈活性很差,在場景多批次渲染中,會(huì)不停的切換渲染管線導(dǎo)致渲染效率較低。
2、因此,目前亟需一種webgpu實(shí)時(shí)渲染管線的生成方法。
技術(shù)實(shí)現(xiàn)思路
1、(一)要解決的技術(shù)問題
2、鑒于現(xiàn)有技術(shù)的上述缺點(diǎn)、不足,本專利技術(shù)提供一種webgpu實(shí)時(shí)渲染管線的生成方法,其解決了現(xiàn)有技術(shù)中渲染效率低且資源復(fù)用率低的技術(shù)問題。
3、(二)技術(shù)方案
4、為了達(dá)到上述目的,本專利技術(shù)采用的主要技術(shù)方案包括:
5、本專利技術(shù)實(shí)施例提供一種webgpu實(shí)時(shí)渲染管線的生成方法,包括:
6、s100、獲取待測3d對象的相機(jī)視椎體,并將所述相機(jī)視椎體傳遞至八叉樹容器對象,進(jìn)行逐步遍歷以及類別區(qū)分,獲取透明渲染對象以及不透明渲染對象,并將所述透明渲染對象以及不透明渲染對象存放至渲染隊(duì)列中;
7、所述相機(jī)視椎體通過相機(jī)提供的視點(diǎn)信息獲??;
8、s200、獲取所述渲染隊(duì)列的全局?jǐn)?shù)據(jù)以及渲染隊(duì)列中每個(gè)渲染對象的模型矩陣,根據(jù)所述渲染隊(duì)列的全局?jǐn)?shù)據(jù)以及每個(gè)渲染對象的模型矩陣,獲取每個(gè)渲染對象的m
9、s300、遍歷渲染隊(duì)列中的每個(gè)對象,獲取其對應(yīng)的材質(zhì),根據(jù)所述材質(zhì)確定渲染對象的具體渲染參數(shù)、材質(zhì)名稱、材質(zhì)狀態(tài)值、紋理貼圖以及宏定義值,并將所述渲染對象的具體渲染參數(shù)一次性上傳至gpu中;
10、s400、根據(jù)cache判斷渲染管線是否已經(jīng)創(chuàng)建完成,若存在cache,則創(chuàng)建完成,直接調(diào)用渲染管線進(jìn)行渲染,若不存在cache,創(chuàng)建渲染管線,調(diào)用渲染管線對渲染隊(duì)列中的每個(gè)渲染對象進(jìn)行渲染,獲取待測3d對象對應(yīng)的2d圖像;
11、所述cache是在創(chuàng)建渲染管線時(shí)設(shè)定的。
12、可選地,所述s100包括:
13、s110、將八叉樹容器對象進(jìn)行逐步遍歷,從根節(jié)點(diǎn)開始,逐層向下檢查八叉樹容器對象節(jié)點(diǎn)的包圍盒是否與相機(jī)視椎體相交;
14、s120、若相交,檢查該節(jié)點(diǎn)內(nèi)三維物體的包圍盒是否與相機(jī)視椎體相交;若相交,標(biāo)記渲染對象,繼續(xù)遍歷;若不相交,繼續(xù)向下遍歷;
15、s130、若所述八叉樹容器對象節(jié)點(diǎn)的包圍盒與相機(jī)視椎體不相交,則直接跳過該節(jié)點(diǎn),繼續(xù)向下遍歷。
16、可選地,所述s100還包括:
17、s140、根據(jù)所述渲染隊(duì)列中每個(gè)渲染對象的renderorder屬性,將所述渲染對象區(qū)分為不透明渲染對象以及透明渲染對象;
18、所述透明渲染對象的renderorder屬性大于設(shè)定值,不透明渲染對象的renderorder屬性小于設(shè)定值。
19、可選地,所述s200中,所述全局?jǐn)?shù)據(jù)具體包括:
20、相機(jī)的投影矩陣、相機(jī)的視圖矩陣、平面分辨率、鼠標(biāo)位置、時(shí)間戳以及曝光度。
21、可選地,所述s200中,根據(jù)所述渲染隊(duì)列的全局?jǐn)?shù)據(jù)以及每個(gè)渲染對象的模型矩陣,獲取每個(gè)渲染對象的mvp矩陣包括:
22、將所述全局?jǐn)?shù)據(jù)中的投影矩陣、視圖矩陣以及渲染對象的模型矩陣輸入以下公式中,獲取mvp矩陣:
23、mvp矩陣=投影矩陣×視圖矩陣×模型矩陣。
24、可選地,s400中,創(chuàng)建渲染管線包括:
25、s410、獲取shader?module緩存;
26、s420、根據(jù)shader代碼,構(gòu)建bindgrouplayout所需要的采樣器的紋理的插槽信息參數(shù),生成bindgrouplayout;
27、s430、根據(jù)所述材質(zhì)狀態(tài)值,宏定義值,材質(zhì)名稱生成cache?key,獲取是否存在可復(fù)用的管線;若沒有,調(diào)用webgpu底層接口創(chuàng)建渲染管線,傳遞創(chuàng)建好的bindgrouplayout、材質(zhì)中包含的渲染狀態(tài)以及shader?module,輸出渲染管線。
28、可選地,所述s400還包括:
29、s440、根據(jù)提前設(shè)定的排序算法,將渲染隊(duì)列進(jìn)行排序,獲取排序后的渲染隊(duì)列,并根據(jù)排序?qū)︿秩緦ο筮M(jìn)行渲染;
30、所述提前設(shè)定的排序算法包括:
31、先渲染不透明渲染對象,再渲染透明渲染對象;
32、對于透明渲染對象renderorder屬性越大,越靠前渲染,默認(rèn)情況下,若該值為0,根據(jù)加入渲染隊(duì)列的順序排序;
33、對于不透明渲染對象,與透明渲染對象相反,值越大越靠前渲染,越小的靠后渲染。
34、可選地,所述s410具體包括:
35、根據(jù)shader代碼的名稱、宏變量以及具體的shader代碼生成shader?modulecache?key,查找是否存在編譯好的shader?module,若不存在,創(chuàng)建shader?module。
36、可選地,所述s100之前還包括:
37、s000、將引擎進(jìn)行初始化;獲取待測3d對象,將所述待測3d對象進(jìn)行八叉樹劃分,獲取八叉樹容器對象;
38、將引擎進(jìn)行初始化具體包括:
39、將webgpu上下文初始化、將shader系統(tǒng)初始化、將全局綁定系統(tǒng)初始化、將全局render?target初始化、將資源管理器初始化以及將輸入系統(tǒng)初始化。
40、可選地,所述方法還包括:
41、當(dāng)某一三維物體的渲染狀態(tài)發(fā)生變化時(shí),且當(dāng)前渲染管線沒有其他渲染物體在使用,采用異步模式將所述當(dāng)前渲染管線進(jìn)行銷毀;
42、所述異步模式為逐幀固定批量進(jìn)行調(diào)度銷毀。
43、(三)有益效果
44、本專利技術(shù)的有益效果是:本專利技術(shù)的一種webgpu實(shí)時(shí)渲染管線的生成方法,由于采用八叉樹的逐級遍歷和交集判斷優(yōu)化,避免了重復(fù)計(jì)算和重復(fù)渲染;同時(shí)采用一次性傳輸批量數(shù)據(jù)的方式,減少了上傳次數(shù),提高了數(shù)據(jù)交互的效率;另外通過設(shè)置不同的cache?key,允許資源的復(fù)用,增加了資源的利用率的同時(shí),也保證了資源的最小化占用。
本文檔來自技高網(wǎng)...【技術(shù)保護(hù)點(diǎn)】
1.一種WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S100包括:
3.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S100還包括:
4.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S200中,所述全局?jǐn)?shù)據(jù)具體包括:
5.根據(jù)權(quán)利要求4所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S200中,根據(jù)所述渲染隊(duì)列的全局?jǐn)?shù)據(jù)以及每個(gè)渲染對象的模型矩陣,獲取每個(gè)渲染對象的MVP矩陣包括:
6.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,S400中,創(chuàng)建渲染管線包括:
7.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S400還包括:
8.根據(jù)權(quán)利要求6所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述S410具體包括:
9.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特
10.根據(jù)權(quán)利要求1所述的WebGPU實(shí)時(shí)渲染管線的生成方法,其特征在于,所述方法還包括:
...【技術(shù)特征摘要】
1.一種webgpu實(shí)時(shí)渲染管線的生成方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的webgpu實(shí)時(shí)渲染管線的生成方法,其特征在于,所述s100包括:
3.根據(jù)權(quán)利要求1所述的webgpu實(shí)時(shí)渲染管線的生成方法,其特征在于,所述s100還包括:
4.根據(jù)權(quán)利要求1所述的webgpu實(shí)時(shí)渲染管線的生成方法,其特征在于,所述s200中,所述全局?jǐn)?shù)據(jù)具體包括:
5.根據(jù)權(quán)利要求4所述的webgpu實(shí)時(shí)渲染管線的生成方法,其特征在于,所述s200中,根據(jù)所述渲染隊(duì)列的全局?jǐn)?shù)據(jù)以及每個(gè)渲染對象的模型矩陣,獲取每個(gè)渲染對...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:姜雪明,楊彥龍,奚燕,王雯,
申請(專利權(quán))人:浙江中控信息產(chǎn)業(yè)股份有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。