專利名稱:一種gpu加速的實(shí)時(shí)立體渲染方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)圖形學(xué)領(lǐng)域,特別是涉及一種GPU加速的實(shí)時(shí)立體渲染方法。
背景技術(shù):
立體視覺是三維場(chǎng)景渲染的一個(gè)重要部分,目前對(duì)于立體像對(duì)壓縮,立體知覺的舒適感和立體顯示設(shè)備增強(qiáng)的研究比較多,對(duì)立體渲染加速的研究則較少。立體視覺技術(shù), 大大增加了沉浸感,涉及到渲染場(chǎng)景兩次,即對(duì)每只眼睛渲染一次,因此,渲染的時(shí)間增加
了一倍。傳統(tǒng)的立體渲染方法針對(duì)復(fù)雜的場(chǎng)景,進(jìn)行渲染需要的時(shí)間很長(zhǎng),這是因?yàn)獒槍?duì)給定左視點(diǎn)的場(chǎng)景,需要重新計(jì)算右視點(diǎn)的頂點(diǎn)屬性,才能得到相對(duì)應(yīng)與左視點(diǎn)的右視點(diǎn)的場(chǎng)景。渲染復(fù)雜場(chǎng)景所需要的渲染時(shí)間長(zhǎng),這是現(xiàn)有立體渲染方法的缺陷。因而,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是如何找到一種新型的立體渲染方法,該方法針對(duì)復(fù)雜的渲染場(chǎng)景,可以實(shí)現(xiàn)實(shí)時(shí)的立體渲染,大大地縮短了針對(duì)復(fù)雜場(chǎng)景進(jìn)行立體渲染所需要的渲染時(shí)間。
發(fā)明內(nèi)容
本發(fā)明所要解決的一個(gè)技術(shù)問題是提供一種GPU加速的實(shí)時(shí)立體渲染方法,該方法針對(duì)復(fù)雜的渲染場(chǎng)景,可以實(shí)現(xiàn)實(shí)時(shí)的立體渲染,大大地縮短了針對(duì)復(fù)雜場(chǎng)景進(jìn)行立體渲染所需要的渲染時(shí)間。為了解決上述問題,本發(fā)明公開了一種GPU加速的實(shí)時(shí)立體渲染方法,包括分別建立渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型,獲得渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型;計(jì)算渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣,獲得渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣;執(zhí)行渲染場(chǎng)景的頂點(diǎn)處理操作,獲得渲染場(chǎng)景的頂點(diǎn)處理結(jié)果;在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得相應(yīng)的基元的變換結(jié)果;使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果;將每個(gè)渲染目標(biāo)的渲染結(jié)果存入兩個(gè)獨(dú)立的緩存中,獲得在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果;針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì),獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。優(yōu)選的,所述在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得相應(yīng)的基元的變換結(jié)果的步驟,包括在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得初始傳送基元;針對(duì)初始傳送基元進(jìn)行克隆,獲得初始傳送基元的克隆信息;針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換及投影變換,獲得初始傳
4送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果及投影變換的變換結(jié)果;執(zhí)行完第一輪初始傳送基元的變換過程,獲得第一輪初始傳送基元的變換結(jié)果;發(fā)送新的基元到片段著色器中,執(zhí)行第二輪新的基元的變換過程,獲得相應(yīng)的基元的變換結(jié)果。優(yōu)選的,所述針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換及投影變換, 獲得初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果及投影變換的變換結(jié)果的步驟,包括針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果;針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換的變換結(jié)果。優(yōu)選的,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括在使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染的過程中,依據(jù)幾何著色器中的設(shè)置的變量整理進(jìn)入的渲染片段,獲得渲染片段的渲染結(jié)果;其中,若所述渲染片段是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為零;若所述渲染片段不是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為非零。優(yōu)選的,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括所述多個(gè)渲染目標(biāo)中的每個(gè)片段必須在兩個(gè)不同的緩存區(qū)分別進(jìn)行繪制,獲得多個(gè)渲染目標(biāo)中的每個(gè)片段在兩個(gè)不同的緩存區(qū)的繪制結(jié)果。優(yōu)選的,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括若多個(gè)渲染目標(biāo)中的每個(gè)片段的緩沖區(qū)標(biāo)志位指示不正確時(shí),則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。優(yōu)選的,所述若多個(gè)渲染目標(biāo)中的每個(gè)片段的緩沖區(qū)標(biāo)志位指示不正確時(shí),則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除的步驟,包括設(shè)置消除不需要的片段的顏色為黑色及設(shè)置消除不需要的片段的透明度值為零, 則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。優(yōu)選的,所述針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì),獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)的步驟,包括在幾何著色器中,傳送左視點(diǎn)基元轉(zhuǎn)換后的頂點(diǎn)坐標(biāo)到片段著色器中;如果片段屬于右視點(diǎn),則執(zhí)行讀取幾何著色器中的坐標(biāo)值,進(jìn)行視口裁剪變換的操作過程;如果坐標(biāo)存在于深度圖中,則執(zhí)行比較深度圖值和片段深度值及根據(jù)獲得的深度值測(cè)試結(jié)果作出接受或丟棄片段相應(yīng)操作的連續(xù)操作過程;如果坐標(biāo)不存在于深度圖中,則執(zhí)行接收送入的片段的操作過程;執(zhí)行完上述操作過程,獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)1、針對(duì)傳統(tǒng)的立體渲染方法,該方法的渲染時(shí)間大大縮短,實(shí)現(xiàn)了對(duì)復(fù)雜場(chǎng)景的實(shí)時(shí)立體渲染。2、本發(fā)明實(shí)現(xiàn)了以高的細(xì)節(jié)層次渲染場(chǎng)景立體像對(duì),而由此導(dǎo)致的幀率下降可以忽略不計(jì)。總之,本發(fā)明提供了一種GPU加速的實(shí)時(shí)立體渲染方法,該方法針對(duì)復(fù)雜的渲染場(chǎng)景,可以實(shí)現(xiàn)實(shí)時(shí)的立體渲染;大大地縮短了針對(duì)復(fù)雜場(chǎng)景進(jìn)行立體渲染所需要的渲染時(shí)間。
圖1是本發(fā)明一種GPU加速的實(shí)時(shí)立體渲染方法實(shí)施例的步驟流程圖;圖2是本發(fā)明一種GPU加速的實(shí)時(shí)立體渲染方法中的算法流程示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明的核心思想之一是提供了一種GPU (Graphic Processing Unit中文翻譯為 “圖形處理器”,GPU是相對(duì)于CPU的一個(gè)概念,由于在現(xiàn)代的計(jì)算機(jī)中,特別是家用系統(tǒng),游戲的發(fā)燒友,圖形的處理變得越來越重要,需要一個(gè)專門的圖形的核心處理器)加速的實(shí)時(shí)立體渲染方法,包括分別建立渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型;計(jì)算渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣;執(zhí)行渲染場(chǎng)景的頂點(diǎn)處理操作;在幾何著色器中接收頂點(diǎn)著色器傳送的基元;使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染; 將每個(gè)渲染目標(biāo)的渲染結(jié)果存入兩個(gè)獨(dú)立的緩存中;針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì);該方法針對(duì)復(fù)雜的渲染場(chǎng)景,可以實(shí)現(xiàn)實(shí)時(shí)的立體渲染,大大地縮短了針對(duì)復(fù)雜場(chǎng)景進(jìn)行立體渲染所需要的渲染時(shí)間。參照?qǐng)D1,示出了本發(fā)明一種GPU加速的實(shí)時(shí)立體渲染方法實(shí)施例的步驟流程圖, 具體可以包括步驟101、分別建立渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型,獲得渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型。步驟102、計(jì)算渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣,獲得渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣。步驟103、執(zhí)行渲染場(chǎng)景的頂點(diǎn)處理操作,獲得渲染場(chǎng)景的頂點(diǎn)處理結(jié)果。步驟104、在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得相應(yīng)的基元的變換結(jié)果。為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,所述步驟104,具體可以包括子步驟Al、在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得初始傳送基元。子步驟A2、針對(duì)初始傳送基元進(jìn)行克隆,獲得初始傳送基元的克隆信息。
在針對(duì)初始傳送基元進(jìn)行克隆,獲得初始傳送基元的克隆信息的過程中,關(guān)鍵的階段是幾何著色器執(zhí)行的復(fù)制階段。幾何著色器從左視點(diǎn)到右視點(diǎn)克隆了指定基元。當(dāng)初始頂點(diǎn)在左緩存投影的同時(shí),復(fù)制的頂點(diǎn)在右緩存進(jìn)行轉(zhuǎn)換和投影。在此過程中,一致變量matrix對(duì)應(yīng)于右圖像變換矩陣,該變換矩陣是由右視點(diǎn)的模型視圖矩陣和投影矩陣乘積產(chǎn)生。模型視圖矩陣和投影矩陣的乘積產(chǎn)生的左圖像變換矩陣作為主程序里的一致變量可被直接讀入。變量flag指示創(chuàng)建的頂點(diǎn)是屬于左視圖還是右視圖。因?yàn)槊恳粋€(gè)基元重復(fù)執(zhí)行相同的指令,由當(dāng)前模型視圖矩陣乘以每個(gè)基元視點(diǎn)分離變換矢量形成的投影矩陣,將消耗額外計(jì)算時(shí)間。子步驟A3、針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換及投影變換,獲得初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果及投影變換的變換結(jié)果。其中,所述子步驟A3具體可以包括子步驟Bi、針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果。子步驟B2、針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換的變換結(jié)果。子步驟A4、執(zhí)行完第一輪初始傳送基元的變換過程,獲得第一輪初始傳送基元的變換結(jié)果。子步驟A5、發(fā)送新的基元到片段著色器中,執(zhí)行第二輪新的基元的變換過程,獲得相應(yīng)的基元的變換結(jié)果。步驟105、使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果。為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中, 所述步驟105,具體可以包括子步驟Cl、在使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染的過程中,依據(jù)幾何著色器中的設(shè)置的變量整理進(jìn)入的渲染片段,獲得渲染片段的渲染結(jié)果;其中,若所述渲染片段是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為零;若所述渲染片段不是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為非零。為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中, 所述步驟105,具體可以包括子步驟D1、所述多個(gè)渲染目標(biāo)中的每個(gè)片段必須在兩個(gè)不同的緩存區(qū)分別進(jìn)行繪制,獲得多個(gè)渲染目標(biāo)中的每個(gè)片段在兩個(gè)不同的緩存區(qū)的繪制結(jié)果。為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中, 所述步驟105,具體可以包括子步驟E1、若多個(gè)渲染目標(biāo)中的每個(gè)片段的緩沖區(qū)標(biāo)志位指示不正確時(shí),則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。其中,所述子步驟El具體可以包括子步驟F1、設(shè)置消除不需要的片段的顏色為黑色及設(shè)置消除不需要的片段的透明度值為零,則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。在渲染過程中的關(guān)鍵階段是片段著色階段。在片段著色階段,要依據(jù)幾何著色器中設(shè)置的變量flag整理進(jìn)入的片段。如果片段屬于左視點(diǎn),此標(biāo)志設(shè)置為零,否則就設(shè)置為非零。
執(zhí)行對(duì)應(yīng)于左、右圖像片段著色操作階段的操作過程,本發(fā)明同時(shí)使用多渲染目標(biāo)技術(shù)和幀緩存對(duì)象技術(shù)。多渲染目標(biāo)渲染場(chǎng)景到多個(gè)緩沖區(qū),幀緩存對(duì)象可以在直接渲染結(jié)果到一張紋理。
然而使用多渲染目標(biāo)和幀緩存對(duì)象涉及一些制約因素
幀緩存對(duì)象和多渲染目標(biāo)渲染測(cè)試時(shí),例如深度測(cè)試和透明度alpha測(cè)試,盡管有多個(gè)顏色緩存目標(biāo),共享通用緩存。
多渲染目標(biāo)涉及到每個(gè)片段都在兩個(gè)緩存里渲染。然而,結(jié)果卻是不確定的。
左右視點(diǎn)渲染時(shí)共用深度緩存,這是第一個(gè)約束的結(jié)果,當(dāng)片段不符合時(shí)意味著一些片段可能被拋棄。本發(fā)明通過禁用深度測(cè)試來解決這個(gè)問題。本發(fā)明使用畫家算法作為深度測(cè)試的替代方法來解決可見度問題。第二個(gè)評(píng)語(yǔ)說明幾何著色器創(chuàng)建兩個(gè)基元是獨(dú)立的。使用多渲染目標(biāo)涉及到每個(gè)片段必須在兩個(gè)緩沖區(qū)繪制。因此片段不屬于正確的緩沖區(qū)標(biāo)志位指示就會(huì)被丟棄。消除不需要的片段可以由設(shè)置其顏色為黑色,其透明度alpha 值為零實(shí)現(xiàn)。在主程序中應(yīng)該啟用混合功能,禁用深度測(cè)試,這樣片段就無法顯示。
用于混合的函數(shù)
紅色=RsrcXAsrc+RdestX (I-Asrc)
綠色=GsrcXAsrc+GdestX (I-Asrc)
藍(lán)色=BsrcXAsrc+BdestX (I-Asrc)
Alpha = AsrcXAsrc+AdestX (I-Asrc)
步驟106、將每個(gè)渲染目標(biāo)的渲染結(jié)果存入兩個(gè)獨(dú)立的緩存中,獲得在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果。
步驟107、針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì),獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。
為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中, 所述步驟107,具體可以包括
子步驟G1、在幾何著色器中,傳送左視點(diǎn)基元轉(zhuǎn)換后的頂點(diǎn)坐標(biāo)到片段著色器中。
子步驟G2、如果片段屬于右視點(diǎn),則執(zhí)行讀取幾何著色器中的坐標(biāo)值,進(jìn)行視口裁剪變換的操作過程。
子步驟G3、如果坐標(biāo)存在于深度圖中,則執(zhí)行比較深度圖值和片段深度值及根據(jù)獲得的深度值測(cè)試結(jié)果作出接受或丟棄片段相應(yīng)操作的連續(xù)操作過程。
子步驟G4、如果坐標(biāo)不存在于深度圖中,則執(zhí)行接收送入的片段的操作過程。
子步驟G5、執(zhí)行完上述操作過程,獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。
在顯示立體像對(duì)的過程中,對(duì)應(yīng)于左視點(diǎn)和右視點(diǎn),渲染過程中產(chǎn)生兩個(gè)相應(yīng)的獨(dú)立的紋理。立體裝置使用過程中,用戶應(yīng)最終能修改立體像對(duì)。例如,使用立體眼鏡混合紅/青色濾波圖像,如下面的偽代碼所述
禁止深度測(cè)試;
利用加函數(shù)啟用混合;
設(shè)置顏色掩碼為紅色;8
渲染左邊紋理;
設(shè)置顏色掩碼為青色;
渲染右邊紋理;
偏振或主動(dòng)立體系統(tǒng)則不需要這個(gè)過程,圖像通過合適視頻輸出。
為了證明本發(fā)明是一種可以大大地提高渲染立體場(chǎng)景時(shí)間的渲染方法,本發(fā)明做了如下的試驗(yàn)來驗(yàn)證,試驗(yàn)結(jié)果具體如表1所述
表1效率比較表
權(quán)利要求
1.一種GPU加速的實(shí)時(shí)立體渲染方法,其特征在于,包括分別建立渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型,獲得渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型;計(jì)算渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣,獲得渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣; 執(zhí)行渲染場(chǎng)景的頂點(diǎn)處理操作,獲得渲染場(chǎng)景的頂點(diǎn)處理結(jié)果; 在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得相應(yīng)的基元的變換結(jié)果; 使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果; 將每個(gè)渲染目標(biāo)的渲染結(jié)果存入兩個(gè)獨(dú)立的緩存中,獲得在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果;針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì),獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得相應(yīng)的基元的變換結(jié)果的步驟,包括在幾何著色器中接收頂點(diǎn)著色器傳送的基元,獲得初始傳送基元; 針對(duì)初始傳送基元進(jìn)行克隆,獲得初始傳送基元的克隆信息; 針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換及投影變換,獲得初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果及投影變換的變換結(jié)果;執(zhí)行完第一輪初始傳送基元的變換過程,獲得第一輪初始傳送基元的變換結(jié)果; 發(fā)送新的基元到片段著色器中,執(zhí)行第二輪新的基元的變換過程,獲得相應(yīng)的基元的變換結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換及投影變換,獲得初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果及投影變換的變換結(jié)果的步驟,包括針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型視圖變換的變換結(jié)果;針對(duì)初始傳送基元的左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換,獲得左、右視點(diǎn)執(zhí)行相應(yīng)模型投影變換的變換結(jié)果。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括在使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染的過程中,依據(jù)幾何著色器中的設(shè)置的變量整理進(jìn)入的渲染片段,獲得渲染片段的渲染結(jié)果;其中,若所述渲染片段是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為零;若所述渲染片段不是左視點(diǎn),則將該渲染片段的標(biāo)志設(shè)置為非零。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括所述多個(gè)渲染目標(biāo)中的每個(gè)片段必須在兩個(gè)不同的緩存區(qū)分別進(jìn)行繪制,獲得多個(gè)渲染目標(biāo)中的每個(gè)片段在兩個(gè)不同的緩存區(qū)的繪制結(jié)果。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染,獲得相應(yīng)的每個(gè)渲染目標(biāo)的渲染結(jié)果的步驟,包括若多個(gè)渲染目標(biāo)中的每個(gè)片段的緩沖區(qū)標(biāo)志位指示不正確時(shí),則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述若多個(gè)渲染目標(biāo)中的每個(gè)片段的緩沖區(qū)標(biāo)志位指示不正確時(shí),則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除的步驟,包括設(shè)置消除不需要的片段的顏色為黑色及設(shè)置消除不需要的片段的透明度值為零,則多個(gè)渲染目標(biāo)中的每個(gè)片段會(huì)被消除。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì),獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)的步驟,包括在幾何著色器中,傳送左視點(diǎn)基元轉(zhuǎn)換后的頂點(diǎn)坐標(biāo)到片段著色器中;如果片段屬于右視點(diǎn),則執(zhí)行讀取幾何著色器中的坐標(biāo)值,進(jìn)行視口裁剪變換的操作過程;如果坐標(biāo)存在于深度圖中,則執(zhí)行比較深度圖值和片段深度值及根據(jù)獲得的深度值測(cè)試結(jié)果作出接受或丟棄片段相應(yīng)操作的連續(xù)操作過程;如果坐標(biāo)不存在于深度圖中,則執(zhí)行接收送入的片段的操作過程;執(zhí)行完上述操作過程,獲得每個(gè)渲染目標(biāo)的渲染結(jié)果的立體像對(duì)。
全文摘要
本發(fā)明提供了一種GPU加速的實(shí)時(shí)立體渲染方法,包括分別建立渲染場(chǎng)景的左模型及渲染場(chǎng)景的右模型;計(jì)算渲染場(chǎng)景的左模型視圖矩陣、渲染場(chǎng)景的右模型視圖矩陣及投影矩陣;執(zhí)行渲染場(chǎng)景的頂點(diǎn)處理操作;在幾何著色器中接收頂點(diǎn)著色器傳送的基元;使用渲染器對(duì)多個(gè)渲染目標(biāo)進(jìn)行渲染;將每個(gè)渲染目標(biāo)的渲染結(jié)果存入兩個(gè)獨(dú)立的緩存中;針對(duì)在兩個(gè)獨(dú)立緩存中分別存儲(chǔ)的每個(gè)渲染目標(biāo)的渲染結(jié)果,采用立體恢復(fù)方法,進(jìn)行相應(yīng)的顯示立體像對(duì);該方法針對(duì)復(fù)雜的渲染場(chǎng)景,可以實(shí)現(xiàn)實(shí)時(shí)的立體渲染,大大地縮短了針對(duì)復(fù)雜場(chǎng)景進(jìn)行立體渲染所需要的渲染時(shí)間。
文檔編號(hào)G06T15/00GK102509336SQ201110325099
公開日2012年6月20日 申請(qǐng)日期2011年10月24日 優(yōu)先權(quán)日2011年10月24日
發(fā)明者平紅燕 申請(qǐng)人:克拉瑪依紅有軟件有限責(zé)任公司