專利名稱:一種圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電視節(jié)目制作領(lǐng)域中的字幕處理領(lǐng)域,尤其涉及一種圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法。
背景技術(shù):
隨著計(jì)算機(jī)圖形、圖像、視頻技術(shù)的不斷發(fā)展,加上國內(nèi)廣電行業(yè)正處于從標(biāo)準(zhǔn)清晰度模式向高清晰度模式過渡的時(shí)期,電視臺(tái)等電視制播單位對(duì)電視圖文制播提出了更 高、更新的要求。這就對(duì)視頻制作過程中的每一個(gè)環(huán)節(jié)都需要適時(shí)的技術(shù)更新。圖形渲染中的光柵化階段是字幕制作領(lǐng)域的一個(gè)非常重要的環(huán)節(jié)?,F(xiàn)有技術(shù)中三維場景的渲染主要是基于GPU (Graphic Processing Unit,圖形處理器)的。基于GPU的渲染并行性,可以實(shí)現(xiàn)高效率的渲染。但是現(xiàn)有的GPU渲染還是需要依賴顯卡,CPU本身運(yùn)算能力很大,但是因傳統(tǒng)的CPU運(yùn)算是串行運(yùn)算,運(yùn)用的運(yùn)算單元僅僅用到了其中很小的一部分,這就早成了很大的資源浪費(fèi),運(yùn)算效率也比較低。發(fā)明人在實(shí)施本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下技術(shù)問題(I)在CPU實(shí)現(xiàn)三維渲染時(shí),在光柵化階段效率很低(2)多個(gè)CPU未能充分利用
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的主要目的是提供一種圖形渲染中光柵化三角片填充的多線程實(shí)現(xiàn)方法,以提高圖形渲染的光柵化速度。為了達(dá)到上述目的,本發(fā)明提供了一種圖形渲染中光柵化三角片填充的多線程實(shí)現(xiàn)方法,具體包括計(jì)算三維物體的包圍盒,將所述包圍盒劃分成η個(gè)子區(qū)域并對(duì)應(yīng)η個(gè)線程;劃分三角片到對(duì)應(yīng)的η個(gè)子區(qū)域內(nèi);執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)所述子區(qū)域內(nèi)的三角片填充;繼續(xù)執(zhí)行線程直到將所有η個(gè)線程全部執(zhí)行完畢,完成整個(gè)三角片的填充。本發(fā)明的實(shí)施方式先計(jì)算三維物體的包圍盒劃分為η個(gè)線程的,通過先執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)子區(qū)域內(nèi)的三角片填充,并且循環(huán)執(zhí)行線程,同時(shí)執(zhí)行多個(gè)線程直到將η個(gè)線程全部執(zhí)行完畢完成整個(gè)三角片的填充的方式,能夠大大提高圖形渲染中光柵化三角片的填充,而在CPU上也能實(shí)現(xiàn)高效率的并行性。
為了更清楚的說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單的介紹,顯而易見的,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖I為本發(fā)明實(shí)施例一種圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法的流程圖
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例一方面提供了一種圖形渲染中光柵化三角片填充的多線程實(shí)現(xiàn)方法,如圖2所示為本發(fā)明實(shí)施例的具體實(shí)現(xiàn)方法,闡述如下步驟SI :計(jì)算三維物體在屏幕空間中的包圍盒。依次計(jì)算三維物體在物體空間中的包圍盒的八個(gè)頂點(diǎn)在屏幕空間中的坐標(biāo),然后根據(jù)所述八個(gè)頂點(diǎn)在屏幕空間中的坐標(biāo)計(jì)算屏幕空間中的三維物體的包圍盒,屏幕空間中的包圍盒,只有X,Y方向的邊界。步驟S2 :將上述計(jì)算出的三維物體的包圍盒劃分成η個(gè)區(qū)域并對(duì)應(yīng)η個(gè)線程,線 程的個(gè)數(shù)根據(jù)CPU的個(gè)數(shù)來選擇,一般選擇相當(dāng)于CPU個(gè)數(shù)幾倍的值(推薦4 8倍),選小了,不能充分利用資源,大了,區(qū)域劃分更細(xì),計(jì)算過程有一些額外的開銷。比如4個(gè)CPU的機(jī)器,η可以選為32。步驟S3 :根據(jù)構(gòu)成三維物體的三角片三個(gè)頂點(diǎn)的屏幕坐標(biāo)的位置,將三角片劃分到上述相應(yīng)的η個(gè)子區(qū)域內(nèi),并在區(qū)域內(nèi)記錄劃分到本區(qū)域內(nèi)的三角片,如果一個(gè)三角片跨多個(gè)區(qū)域,則在多個(gè)區(qū)域記錄這個(gè)三角片。所述劃分三角片到劃分的區(qū)域的子區(qū)域內(nèi)主要依據(jù)三角片在屏幕坐標(biāo)中的三條邊在Y方向的值,看落在哪幾個(gè)區(qū)域內(nèi)就將其劃分到該區(qū)域內(nèi)。步驟S4 :執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)所述子區(qū)域內(nèi)的三角片填充。執(zhí)行三角片填充的時(shí)候需要先執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程即對(duì)每個(gè)線程相對(duì)應(yīng)的子區(qū)域進(jìn)行填充。步驟S5 :繼續(xù)執(zhí)行線程直到將所有η個(gè)線程全部執(zhí)行完畢,完成整個(gè)三角片的填充。當(dāng)所述與CPU個(gè)數(shù)相當(dāng)?shù)木€程中某一個(gè)線程執(zhí)行完畢后緊接著執(zhí)行剩下未執(zhí)行的線程中的一個(gè)線程,直到所有的η個(gè)線程全部執(zhí)行完畢,完成整個(gè)物體的三角片的填充。其中,當(dāng)一個(gè)三角片跨多個(gè)區(qū)域時(shí),線程運(yùn)行時(shí),只填充三角片在對(duì)應(yīng)的一個(gè)區(qū)域內(nèi)的像素,無需在每個(gè)區(qū)域內(nèi)都對(duì)整個(gè)三角片進(jìn)行填充,避免三角片的重復(fù)填充,能大大提高填充效率。本發(fā)明實(shí)施例圖形渲染中光柵化三角片填充的多線程實(shí)現(xiàn)方法,計(jì)算屏幕空間中三維物體的包圍盒并劃分區(qū)域及與區(qū)域?qū)?yīng)的線程;先執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)子區(qū)域內(nèi)的三角片填充;并且當(dāng)所述與CPU個(gè)數(shù)相當(dāng)?shù)木€程中某一個(gè)線程執(zhí)行完畢后緊接著執(zhí)行一個(gè)剩下未執(zhí)行的線程,同時(shí)執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程直到將全部線程執(zhí)行完畢完成整個(gè)三角片的填充;尤其當(dāng)一個(gè)三角片跨多個(gè)掃描區(qū)域時(shí),線程運(yùn)行時(shí)只需要將本區(qū)域內(nèi)的三角片進(jìn)行像素填充,避免了一個(gè)三角片重復(fù)填充,大大提高了圖形渲染中光柵化三角片的填充速度,多線程的方法在CPU上實(shí)現(xiàn)了三維渲染光柵化階段的并行性。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過軟件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是⑶-ROM,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。以上所述 ,僅為本發(fā)明的一個(gè)最佳具體實(shí)施例,但本發(fā)明的特征并不局限于此,任何熟悉該項(xiàng)技術(shù)的人在本發(fā)明領(lǐng)域內(nèi),可輕易想到的變化或修飾,都應(yīng)涵蓋在以下本發(fā)明的申請(qǐng)專利范圍中。
權(quán)利要求
1.一種圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,包括 計(jì)算三維物體平面空間中的包圍盒,將所述包圍盒劃分成η個(gè)子區(qū)域并對(duì)應(yīng)η個(gè)線程; 劃分三角片到對(duì)應(yīng)的η個(gè)子區(qū)域; 執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)所述子區(qū)域內(nèi)的三角片填充; 繼續(xù)執(zhí)行其它線程直到將所有η個(gè)線程全部執(zhí)行完畢,完成整個(gè)三角片的填充。
2.如權(quán)利要求I所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,所述計(jì)算三維物體屏幕空間中的包圍盒的方法具體為依次計(jì)算三維物體在物體空間中的包圍盒的八個(gè)頂點(diǎn)在屏幕空間中的坐標(biāo),然后根據(jù)所述八個(gè)頂點(diǎn)在屏幕空間中的坐標(biāo)計(jì)算屏幕空間中的三維物體的包圍盒。
3.如權(quán)利要求I所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,線程的個(gè)數(shù)取CPU個(gè)數(shù)的整倍數(shù)。
4.如權(quán)利要求I所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,所述劃分三角片到對(duì)應(yīng)的η個(gè)子區(qū)域即子區(qū)域記錄劃分到本區(qū)域內(nèi)的三角片。
5.如權(quán)利要求4所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,所述子區(qū)域記錄劃分到本區(qū)域內(nèi)的三角片還包括如果一個(gè)三角片跨多個(gè)區(qū)域,則在多個(gè)區(qū)域記錄這個(gè)三角片。
6.如權(quán)利要求4所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,劃分三角片到對(duì)應(yīng)的子區(qū)域內(nèi)依據(jù)三角片在屏幕坐標(biāo)中的三條邊在Y方向的值。
7.如權(quán)利要求I所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,所述繼續(xù)執(zhí)行線程具體為當(dāng)所述與CPU個(gè)數(shù)相當(dāng)?shù)木€程中某一個(gè)線程執(zhí)行完畢后緊接著執(zhí)行剩下未執(zhí)行的線程中的一個(gè)線程。
8.如權(quán)利要求I所述的圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,其特征在于,所述三角片填充還包括當(dāng)一個(gè)三角片跨多個(gè)區(qū)域時(shí),線程運(yùn)行時(shí),只填充三角片在對(duì)應(yīng)的一個(gè)區(qū)域內(nèi)的像素。
全文摘要
本發(fā)明公開了一種圖形渲染中光柵化階段的多線程實(shí)現(xiàn)方法,包括計(jì)算三維物體的包圍盒,將所述包圍盒劃分成n個(gè)區(qū)域并對(duì)應(yīng)n個(gè)線程;劃分三角片到對(duì)應(yīng)的所述劃分的n個(gè)區(qū)域的子區(qū)域內(nèi);執(zhí)行與CPU個(gè)數(shù)相當(dāng)?shù)木€程進(jìn)行對(duì)應(yīng)所述子區(qū)域內(nèi)的三角片填充;繼續(xù)執(zhí)行其它線程直到將所有n個(gè)線程全部執(zhí)行完畢,完成整個(gè)三角片的填充。通過本發(fā)明實(shí)施例可以大大提高圖形渲染中三角片填充的速度,并且使圖像渲染方法不再依賴GPU操作,可以直接基于CPU進(jìn)行圖形渲染,多線程的方法在CPU上實(shí)現(xiàn)了三維渲染光柵化階段的并行性。
文檔編號(hào)G06T15/00GK102736947SQ20111011635
公開日2012年10月17日 申請(qǐng)日期2011年5月6日 優(yōu)先權(quán)日2011年5月6日
發(fā)明者孫季川, 張君琦, 蔡歡, 鄭培楓 申請(qǐng)人:新奧特(北京)視頻技術(shù)有限公司