本公開涉及圖形數(shù)據(jù)處理領(lǐng)域,尤其涉及一種圖元裁剪方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、圖形處理單元(graphics?processing?unit,gpu)管線包括一系列的處理階段,用于將圖形數(shù)據(jù)轉(zhuǎn)換為最終在屏幕上顯示的像素。這些階段依次處理圖形數(shù)據(jù),每個(gè)階段執(zhí)行特定的任務(wù),最終生成最終的圖像。光柵化是gpu管線中的一個(gè)關(guān)鍵階段,在光柵化階段之前,gpu通常會(huì)對(duì)圖元進(jìn)行裁剪(clipping),以確保只有部分在視錐體內(nèi)的圖元會(huì)被光柵化,從而提高渲染效率。
2、裁剪在gpu管線中是一個(gè)耗時(shí)較大的操作,并且單個(gè)圖元可能會(huì)被裁剪成多個(gè)圖元,導(dǎo)致裁剪后圖元的數(shù)量增加。為減少裁剪耗時(shí)、減少裁剪后圖元的數(shù)量,可以在視口周圍增加裁剪保護(hù)帶(guardband),與視口邊界相交的圖元只要未超出裁剪保護(hù)帶,就不會(huì)被裁剪。
3、現(xiàn)有技術(shù)的方案中,裁剪保護(hù)帶的配置不夠靈活,gpu的裁剪性能尚有提升空間。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本公開提出了一種圖元裁剪方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。該方法根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,自適應(yīng)確定裁剪保護(hù)帶的配置信息,使得渲染目標(biāo)的尺寸變化時(shí),靈活配置裁剪保護(hù)帶,在不影響光柵化功能的前期下,提高gpu性能。
2、根據(jù)本公開的一方面,提供了一種圖元裁剪方法,所述方法包括:根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定裁剪保護(hù)帶的配置信息,使得所述渲染目標(biāo)位于所述裁剪保護(hù)帶中,所述渲染目標(biāo)的尺寸包括所述渲染目標(biāo)在渲染目標(biāo)空間的一個(gè)或多個(gè)裁剪方向上的尺寸,所述配置信息包括所述裁剪保護(hù)帶在每個(gè)裁剪方向上的配置信息;根據(jù)圖元的頂點(diǎn)坐標(biāo)以及所述配置信息,生成所述圖元的裁剪掩碼,所述圖元的裁剪掩碼指示是否裁剪所述圖元,在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),所述圖元的裁剪掩碼還指示所述圖元的裁剪方式;在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),根據(jù)所述圖元的裁剪掩碼指示的裁剪方式裁剪所述圖元,裁剪后的圖元的頂點(diǎn)坐標(biāo)的精度小于或等于所述預(yù)設(shè)數(shù)據(jù)精度。
3、在一種可能的實(shí)現(xiàn)方式中,所述裁剪保護(hù)帶在任意一個(gè)裁剪方向上的配置信息包括比例信息和偏移信息,其中,所述比例信息表示第一差值與所述渲染目標(biāo)在該裁剪方向上的尺寸的比值,所述第一差值等于所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸與所述渲染目標(biāo)在該裁剪方向上的尺寸的差值;所述偏移信息表示所述渲染目標(biāo)在該裁剪方向上的最小坐標(biāo)與渲染目標(biāo)空間在該裁剪方向上的最小坐標(biāo)的差值。
4、在一種可能的實(shí)現(xiàn)方式中,所述根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定裁剪保護(hù)帶的配置信息,包括:針對(duì)所述渲染目標(biāo)的尺寸對(duì)應(yīng)的任意一個(gè)裁剪方向,根據(jù)光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定渲染目標(biāo)空間在該裁剪方向上的最大尺寸和最大坐標(biāo);根據(jù)所述渲染目標(biāo)在該裁剪方向上的尺寸和所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、最大坐標(biāo),確定所述裁剪保護(hù)帶在該裁剪方向上的比例信息,根據(jù)所述渲染目標(biāo)在該裁剪方向上的尺寸、所述比例信息以及所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、最大坐標(biāo),確定所述裁剪保護(hù)帶在該裁剪方向上的偏移信息,使所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸小于所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、所述裁剪保護(hù)帶在該裁剪方向上的最小坐標(biāo)大于0、所述裁剪保護(hù)帶在該裁剪方向上的最大坐標(biāo)小于渲染目標(biāo)空間在該裁剪方向上的最大坐標(biāo)。
5、在一種可能的實(shí)現(xiàn)方式中,所述渲染目標(biāo)的尺寸對(duì)應(yīng)于一個(gè)裁剪方向時(shí),所述渲染目標(biāo)在該裁剪方向上的尺寸大于或等于在其他裁剪方向上的尺寸;所述裁剪保護(hù)帶在該裁剪方向上的配置信息還作為所述裁剪保護(hù)帶在其他裁剪方向上的配置信息。
6、在一種可能的實(shí)現(xiàn)方式中,針對(duì)所述渲染目標(biāo)的尺寸對(duì)應(yīng)的任意一個(gè)裁剪方向,所述裁剪保護(hù)帶在該裁剪方向上的最小坐標(biāo)為b-m×r/2,最大坐標(biāo)為b+(r+m×r/2),其中,r表示所述渲染目標(biāo)在該裁剪方向上的尺寸,r是正整數(shù);m表示所述裁剪保護(hù)帶在該裁剪方向上的比例信息,m是正數(shù);b表示所述裁剪保護(hù)帶在該裁剪方向上的偏移信息,b是正數(shù)。
7、在一種可能的實(shí)現(xiàn)方式中,任意一個(gè)裁剪方向上,所述裁剪保護(hù)帶的比例信息和偏移信息有多個(gè)數(shù)值組合可選時(shí),選擇使得所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸與所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸最接近的數(shù)值組合。
8、在一種可能的實(shí)現(xiàn)方式中,所述根據(jù)圖元的頂點(diǎn)坐標(biāo)以及所述配置信息,生成所述圖元的裁剪掩碼,包括:根據(jù)所述裁剪保護(hù)帶的配置信息,確定所述裁剪保護(hù)帶在每個(gè)裁剪方向上的裁剪面的坐標(biāo);根據(jù)所述圖元的頂點(diǎn)坐標(biāo)和每一裁剪面的坐標(biāo),確定所述圖元和每一裁剪面的位置關(guān)系;根據(jù)所述位置關(guān)系生成所述圖元的裁剪掩碼。
9、在一種可能的實(shí)現(xiàn)方式中,所述圖元和至少一個(gè)裁剪面相交且與所述渲染目標(biāo)相交時(shí),所述圖元的裁剪掩碼指示裁剪所述圖元,所述圖元的裁剪方式包括使用與所述圖元相交的裁剪面裁剪所述圖元;所述圖元和每個(gè)裁剪面均不相交或者和所述渲染目標(biāo)不相交時(shí),所述圖元的裁剪掩碼指示不裁剪所述圖元。
10、在一種可能的實(shí)現(xiàn)方式中,所述圖元和至少一個(gè)裁剪面相交時(shí),所述圖元的裁剪掩碼指示裁剪所述圖元,所述圖元的裁剪方式包括使用與所述圖元相交的裁剪面裁剪所述圖元;所述圖元和每個(gè)裁剪面均不相交時(shí),所述圖元的裁剪掩碼指示不裁剪所述圖元。
11、在一種可能的實(shí)現(xiàn)方式中,所述在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),根據(jù)所述圖元的裁剪掩碼指示的裁剪方式裁剪所述圖元,包括:在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),從與所述圖元相交的裁剪面中選擇任意一個(gè)裁剪面;使用選擇的裁剪面裁剪所述圖元;所述方法還包括:根據(jù)裁剪得到的新頂點(diǎn)的頂點(diǎn)坐標(biāo)更新所述圖元的裁剪掩碼。
12、根據(jù)本公開的另一方面,提供了一種圖元裁剪裝置,所述裝置包括:第一確定模塊,用于根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定裁剪保護(hù)帶的配置信息,使得所述渲染目標(biāo)位于所述裁剪保護(hù)帶中,所述渲染目標(biāo)的尺寸包括所述渲染目標(biāo)在渲染目標(biāo)空間的一個(gè)或多個(gè)裁剪方向上的尺寸,所述配置信息包括所述裁剪保護(hù)帶在每個(gè)裁剪方向上的配置信息;第一生成模塊,用于根據(jù)圖元的頂點(diǎn)坐標(biāo)以及所述配置信息,生成所述圖元的裁剪掩碼,所述圖元的裁剪掩碼指示是否裁剪所述圖元,在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),所述圖元的裁剪掩碼還指示所述圖元的裁剪方式;第一裁剪模塊,用于在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),根據(jù)所述圖元的裁剪掩碼指示的裁剪方式裁剪所述圖元,裁剪后的圖元的頂點(diǎn)坐標(biāo)的精度小于或等于所述預(yù)設(shè)數(shù)據(jù)精度。
13、在一種可能的實(shí)現(xiàn)方式中,所述裁剪保護(hù)帶在任意一個(gè)裁剪方向上的配置信息包括比例信息和偏移信息,其中,所述比例信息表示第一差值與所述渲染目標(biāo)在該裁剪方向上的尺寸的比值,所述第一差值等于所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸與所述渲染目標(biāo)在該裁剪方向上的尺寸的差值;所述偏移信息表示所述渲染目標(biāo)在該裁剪方向上的最小坐標(biāo)與渲染目標(biāo)空間在該裁剪方向上的最小坐標(biāo)的差值。
14、在一種可能的實(shí)現(xiàn)方式中,所述根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定裁剪保護(hù)帶的配置信息,包括:針對(duì)所述渲染目標(biāo)的尺寸對(duì)應(yīng)的任意一個(gè)裁剪方向,根據(jù)光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,確定渲染目標(biāo)空間在該裁剪方向上的最大尺寸和最大坐標(biāo);根據(jù)所述渲染目標(biāo)在該裁剪方向上的尺寸和所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、最大坐標(biāo),確定所述裁剪保護(hù)帶在該裁剪方向上的比例信息,根據(jù)所述渲染目標(biāo)在該裁剪方向上的尺寸、所述比例信息以及所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、最大坐標(biāo),確定所述裁剪保護(hù)帶在該裁剪方向上的偏移信息,使所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸小于所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸、所述裁剪保護(hù)帶在該裁剪方向上的最小坐標(biāo)大于0、所述裁剪保護(hù)帶在該裁剪方向上的最大坐標(biāo)小于渲染目標(biāo)空間在該裁剪方向上的最大坐標(biāo)。
15、在一種可能的實(shí)現(xiàn)方式中,所述渲染目標(biāo)的尺寸對(duì)應(yīng)于一個(gè)裁剪方向時(shí),所述渲染目標(biāo)在該裁剪方向上的尺寸大于或等于在其他裁剪方向上的尺寸;所述裁剪保護(hù)帶在該裁剪方向上的配置信息還作為所述裁剪保護(hù)帶在其他裁剪方向上的配置信息。
16、在一種可能的實(shí)現(xiàn)方式中,針對(duì)所述渲染目標(biāo)的尺寸對(duì)應(yīng)的任意一個(gè)裁剪方向,所述裁剪保護(hù)帶在該裁剪方向上的最小坐標(biāo)為b-m×r/2,最大坐標(biāo)為b+(r+m×r/2),其中,r表示所述渲染目標(biāo)在該裁剪方向上的尺寸,r是正整數(shù);m表示所述裁剪保護(hù)帶在該裁剪方向上的比例信息,m是正數(shù);b表示所述裁剪保護(hù)帶在該裁剪方向上的偏移信息,b是正數(shù)。
17、在一種可能的實(shí)現(xiàn)方式中,任意一個(gè)裁剪方向上,所述裁剪保護(hù)帶的比例信息和偏移信息有多個(gè)數(shù)值組合可選時(shí),選擇使得所述裁剪保護(hù)帶在該裁剪方向上的實(shí)際尺寸與所述渲染目標(biāo)空間在該裁剪方向上的最大尺寸最接近的數(shù)值組合。
18、在一種可能的實(shí)現(xiàn)方式中,所述根據(jù)圖元的頂點(diǎn)坐標(biāo)以及所述配置信息,生成所述圖元的裁剪掩碼,包括:根據(jù)所述裁剪保護(hù)帶的配置信息,確定所述裁剪保護(hù)帶在每個(gè)裁剪方向上的裁剪面的坐標(biāo);根據(jù)所述圖元的頂點(diǎn)坐標(biāo)和每一裁剪面的坐標(biāo),確定所述圖元和每一裁剪面的位置關(guān)系;根據(jù)所述位置關(guān)系生成所述圖元的裁剪掩碼。
19、在一種可能的實(shí)現(xiàn)方式中,所述圖元和至少一個(gè)裁剪面相交且與所述渲染目標(biāo)相交時(shí),所述圖元的裁剪掩碼指示裁剪所述圖元,所述圖元的裁剪方式包括使用與所述圖元相交的裁剪面裁剪所述圖元;所述圖元和每個(gè)裁剪面均不相交或者和所述渲染目標(biāo)不相交時(shí),所述圖元的裁剪掩碼指示不裁剪所述圖元。
20、在一種可能的實(shí)現(xiàn)方式中,所述圖元和至少一個(gè)裁剪面相交時(shí),所述圖元的裁剪掩碼指示裁剪所述圖元,所述圖元的裁剪方式包括使用與所述圖元相交的裁剪面裁剪所述圖元;所述圖元和每個(gè)裁剪面均不相交時(shí),所述圖元的裁剪掩碼指示不裁剪所述圖元。
21、在一種可能的實(shí)現(xiàn)方式中,所述在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),根據(jù)所述圖元的裁剪掩碼指示的裁剪方式裁剪所述圖元,包括:在所述圖元的裁剪掩碼指示裁剪所述圖元時(shí),從與所述圖元相交的裁剪面中選擇任意一個(gè)裁剪面;使用選擇的裁剪面裁剪所述圖元;所述裝置還包括:更新模塊,用于根據(jù)裁剪得到的新頂點(diǎn)的頂點(diǎn)坐標(biāo)更新所述圖元的裁剪掩碼。
22、根據(jù)本公開的另一方面,提供了一種電子設(shè)備,包括:處理器;用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;其中,所述處理器被配置為在執(zhí)行所述存儲(chǔ)器存儲(chǔ)的指令時(shí),實(shí)現(xiàn)上述方法。
23、根據(jù)本公開的另一方面,提供了一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序指令,其中,所述計(jì)算機(jī)程序指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法。
24、根據(jù)本公開的另一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀代碼,或者承載有計(jì)算機(jī)可讀代碼的非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述計(jì)算機(jī)可讀代碼在電子設(shè)備的處理器中運(yùn)行時(shí),所述電子設(shè)備中的處理器執(zhí)行上述方法。
25、根據(jù)本公開實(shí)施例的圖元裁剪方法,根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,可自適應(yīng)確定裁剪保護(hù)帶的配置信息,并使得渲染目標(biāo)位于裁剪保護(hù)帶中,提高裁剪保護(hù)帶的配置靈活性;根據(jù)圖元的頂點(diǎn)坐標(biāo)以及配置信息,生成圖元的裁剪掩碼,圖元的裁剪掩碼指示是否裁剪圖元,在圖元的裁剪掩碼指示裁剪圖元時(shí),圖元的裁剪掩碼還指示圖元的裁剪方式,因此根據(jù)圖元的裁剪掩碼即可確定是否要裁剪圖元以及如何裁剪圖元;在圖元的裁剪掩碼指示裁剪圖元時(shí),根據(jù)圖元的裁剪掩碼指示的裁剪方式裁剪圖元,由于裁剪保護(hù)帶的配置信息基于光柵化階段的預(yù)設(shè)數(shù)據(jù)精度確定,配置信息又用于生成圖元的裁剪掩碼,因此,根據(jù)圖元的裁剪掩碼指示的裁剪方式裁剪后的圖元的頂點(diǎn)坐標(biāo)的精度可以小于或等于預(yù)設(shè)數(shù)據(jù)精度,以保證不影響光柵化功能。綜上所述,本公開的圖元裁剪方法能夠根據(jù)渲染目標(biāo)的尺寸和光柵化階段的預(yù)設(shè)數(shù)據(jù)精度,自適應(yīng)確定裁剪保護(hù)帶的配置信息,使得渲染目標(biāo)的尺寸變化時(shí),靈活配置裁剪保護(hù)帶,在不影響光柵化功能的前期下,提高gpu性能。
26、根據(jù)下面參考附圖對(duì)示例性實(shí)施例的詳細(xì)說明,本公開的其它特征及方面將變得清楚。