專利名稱:一種圖形渲染流水線中光柵化階段反走樣的改進方法
技術領域:
本發明涉及電視節目制作領域中的字幕處理領域,尤其涉及一種圖形渲染流水線中光柵化階段反走樣的改進方法。
背景技術:
字幕系統在視頻制作領域有廣泛的應用,也是應用視頻技術的重要組成部分,而電視字幕作為一種必備的電視節目要素,是一種重要的電視圖文的展現形式。從廣義的角度來說,電視字幕所處理的字幕對象渲染的最終目的是根據圖形化的矢量信息和圖像紋理,采用數字圖像處理的相關算法,得到由32位RGBA表示的像素組成的一幀圖像。為了獲得穩定清晰的圖像,通常需要對字幕對象進行反走樣處理。反走樣技術、主要是用于消除點陣構成的顯示設備整數坐標上的圖像連續性被破壞,圖形顯示不圓滑出現鋸齒狀的情況。現有技術中圖形渲染主要是基于圖形處理軟件GPU實現的,GPU的工作是以流水線形式進行的,一個流水線是一系列可以并行和按照固定順序進行的階段,每個階段都從前一個階段接收輸入,然后把輸出發送到后續階段。一般三維應用程序傳給GPU的是頂點、顏色、第二顏色(反射)、紋理、紋理坐標、法向量、燈光、圖元裝配信息等數據,均勻反走樣處理方法可以直接應用在在圖形渲染流水線的光柵化階段,但通常是對需要處理的整個區域內所有采樣點的顏色進行計算,然后對全部采樣點顏色取平均得到像素反走樣的顏色值,從而得到穩定清晰的圖像。發明人在實施本發明的過程中,發現現有技術存在以下技術問題(I)渲染速度慢,特別是有多層紋理的時候;(2)渲染過程復雜,需要對所有采樣點進行計算;
發明內容
為了解決上述現有技術的缺點,本發明的主要目的是提供一種圖形渲染流水線中光柵化階段反走樣的改進方法,以提高在有紋理情況下的計算效率,并且對物體的邊緣和相交邊界有很好的處理效果。為了達到上述目的,本發明提供了一種圖形渲染流水線中光柵化階段反走樣的改進方法,具體包括在光柵化階段之前,根據反走樣級別,準備放大的顏色緩沖區和深度緩沖區并初始化;對構成物體的三角片依次進行光柵化處理;對所有三角片都處理完之后,將顏色緩沖區縮小到原始大小,得到反走樣的渲染結果。本發明的實施方式通過在反走樣處理之前先準備反走樣所需的顏色緩沖區然后對三角片進行光柵化處理并且在光柵化處理完成之后對顏色緩沖區縮小到原始大小的反走樣改進方法可以提高在有紋理情況下的計算效率,更好的實現三維渲染引擎的反走樣效果O
為了更清楚的說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單的介紹,顯而易見的,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I為本發明實施例的一種圖形渲染流水線中光柵化階段反走樣的改進方法的流程圖;圖2為本發明實施例的一種圖形渲染流水線中光柵化階段8X反走樣的改進方法的步驟圖;、圖3為本發明實施例8X反走樣以2*4的小區域為單位的掃描線示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整的描述,顯然所描述的實施例僅是本發明的一部分實施例,不是全部的實施例,基于本發明中的實施例,本領域普通技術人員在沒有付出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。本發明的反走樣的改進方法是應用在圖形渲染流水線的光柵化階段,是可以不依賴GPU,獨立能實現的渲染引擎。另外,因為光柵化階段采用掃描線算法,所以要實現光柵化階段的反走樣,X,Y方向采樣點采用規則的m*n的方式。目前根據需要采樣點方式包括2X(1*2),4X(2*2),8X(2*4),16X(4*4),32X(4*8)等采樣方式。如以 8X 為例,即 X 方向采用兩個采樣點,Y方向采用4個采樣點。本發明實施例一方面提供了一種圖形渲染流水線中光柵化階段反走樣的改進方法,實施流程如圖I所示,具體為步驟SI :準備反走樣需要的顏色緩沖區和深度緩沖區并初始化。獲取當前三角片三個頂點的數據,屏幕空間中的位置vPos,深度值fDepth,頂點光照顏色vColor,每層紋理的Uv坐標vUV[8](最多八層紋理)。要實現反走樣,將頂點位置vPos的X、Y分量分別乘以X,Y方向的反走樣倍數m, η或者叫做采樣方式,記為m*n。步驟S2 :計算三角片的包圍盒,并且此包圍盒的X方向邊界是m的整數倍,Y方向邊界是η的整數倍。步驟S3 :計算包圍盒區域內的掃描線的起點終點位置和起點終點的深度值,上述起點終點位置和起點終點的深度值是通過三角片三個頂點的位置和深度值插值得到的。步驟S4 :以m*n的小區域為單位,對在三角片內部且深度值大于深度緩沖區中的深度值的像素的X,I方向的權重值(區域內的相對位置)分別相加記為fSumX,fSumY,并將總的個數iCount加1,并標記這個像素為TRUE。其中fSumX,fSumY, iCount初始值都記為O。如果iCount為O則繼續重復步驟S4,否則進行步驟S5。步驟S5 :根據步驟S4中得到的權重值將fSumX, fSumY除以總數iCount得到x, y方向的值,并計算相對于采樣點小區域內的一個位置,此位置作為需要計算顏色的位置。步驟S6 :根據三角片頂點位置與上述計算的顏色的位置得到當前頂點的光照顏色和紋理坐標值后計算當前位置的顏 色。步驟S7 :將計算得到的當前位置的顏色賦給S4中位于三角片內且深度值大于深度緩沖區中的深度值的像素。步驟S8 :按照上述方法對所有三角片都處理完之后,將顏色緩沖區縮小到原始大小,得到反走樣的渲染結果。本發明的實施方式通過在反走樣處理之前先準備反走樣所需的顏色緩沖區,計算采樣點區域范圍內的一個指定位置的顏色然后將此顏色值賦予區域范圍內的子像素,然后對三角片進行光柵化處理并且在光柵化處理完成之后對顏色緩沖區縮小到原始大小的反走樣改進方法可以提高在有紋理情況下的計算效率,更好的實現三維渲染引擎的反走樣效果O以下以采樣點為8X為例并結合圖2對本發明實施例一的圖形渲染流水線中光柵化階段反走樣的改進方法進行更加詳細的闡述,具體為步驟SI JfvPos的X,Y方向分別乘以反走樣倍數即X方向乘以2,Y方向乘以4使顏色緩沖區和深度緩沖區存儲的信息量是不用反走樣時候的8倍。在光柵化階段之前,準備反走樣需要的顏色緩沖區和深度緩沖區并初始化。步驟S2 :計算三角片的最小包圍盒,X方向邊界是2的倍數,Y方向是4的倍數。步驟S3 :根據8X采樣點計算包圍盒區域內的掃描線的起點終點位置和起點終點的深度值,并且是通過三個頂點的位置和深度值插值得到的。步驟S4 :記fSumX, fSumY為O, iCount = O ;本實施例的8X反走樣以2*4的小區域為單位,通過3個掃描線的位置和深度值,具體可參見圖3所示。判斷這個區域內每個像素是否在三角片內,并且計算每個像素的深度值,進行深度檢測(也就是與深度緩沖區中的深度值做比較,如大于這個值,表示離觀察者近,未被遮擋)。如是,用將該像素的深度值替換深度緩沖區中的相應位置的深度值,并將此像素的X,Y方向的權重(相對于整個2*4區域的)加入fSumX, fSumY,并且iCount加I,并標記這個像素bFlag為TRUE。步驟S5 :如果iCount = O,繼續計算下一個2*4小區域;否則進行步驟S6。步驟S6 :將fSumX,fSumY除以iCount,得到X,Y方向的值,并且是相對于小區域的位置值,根據小區域的位置,計算這個位置的絕對值,記為vTempPos。步驟S7 :計算當前位置的顏色。根據三角片三個頂點的位置及vTempPos的值,確定三角片三個頂點的權重,用三個頂點的顏色和紋理坐標值乘以相應頂點的權重并相加,得到當前位置vTempPos處的光照顏色和紋理坐標值(如有紋理)。光照顏色與紋理顏色進行混合,第一層紋理與光照顏色混合計算得到顏色值color,如果有第二層紋理,則與前面的顏色值color再做混合計算,依此類推,直到得到最終的顏色值。步驟S8 :將步驟7計算得到的顏色賦給2*4格內并且在三角片內部并且通過深度測試的子像素即步驟S4中標記為TRUE的像素進行顏色緩沖區的填充。步驟S9 :所有三角片都處理完之后,對顏色緩沖區縮小到原始大小即8個采樣點顏色合成一個顏色,得到反走樣的渲染效果。本發明的實施方式通過在反走樣處理之前先準備反走樣所需的顏色緩沖區,計算采樣點區域范圍內的一個指定位置的顏色然后將此顏色值賦予區域范圍內的子像素,然后對三角片進行光柵化處理并且在光柵化處理完成之后對顏色緩沖區縮小到原始大小的反走樣改進方法可以提高在有紋理情況下的計算效率,并且對物體的邊緣和相交邊界有很好的處理效果,更好的實現三維渲染引擎的反走樣效果。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發明可以通過軟件實現,也可以借助軟件加必要的通用硬件平臺的方式來實現。基于這樣的理解,本發明的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是⑶-R0M,U盤,移動硬盤等)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。以上所述,僅為本發明的一個最佳具體實施例,但本發明的特征并不局限于此,任何熟悉該項技術的人在本發明領域內,可輕易想到的變化或修飾,都應涵蓋在以下本發明的申請專利范圍中。權利要求
1.一種圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,包括 在光柵化階段之前,根據反走樣級別,準備放大的顏色緩沖區和深度緩沖區并初始化; 對構成物體的三角片依次進行光柵化處理; 對所有三角片都處理完之后,將顏色緩沖區縮小到原始大小,得到反走樣的渲染結果。
2.如權利要求I所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述準備放大的顏色緩沖區和深度緩沖區具體為 將平面空間中的位置的X,Y分量分別乘以X,Y方向的反走樣倍數得到反走樣需要的顏色緩沖區和深度緩沖區。
3.如權利要求I所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,在準備反走樣需要的顏色緩沖區和深度緩沖區并初始化之前還包括獲取當前三角片三個頂點的數據、屏幕空間中的位置、深度值、頂點光照顏色及每層紋理的坐標。
4.如權利要求I所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述對構成物體的三角片依次進行光柵化處理的具體方法包括 計算三角片的包圍盒; 計算包圍盒區域內的掃描線的起點終點位置和起點終點的深度值; 對在三角片內部且深度值大于深度緩沖區的深度值的像素進行X,y方向權重值計算并進行像素標記; 獲取需要計算顏色的位置; 計算當前位置的顏色; 將所述計算得到當前位置的顏色賦給標記的像素。
5.如權利要求4所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述計算物體的包圍盒是三角片x,y方向的邊界分別是x,y方向采樣數m,n的整數倍。
6.如權利要求4所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述計算包圍盒區域內的掃描線的起點終點位置和起點終點的深度值是通過三角片三個頂點的位置和深度值插值得到的。
7.如權利要求4所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述對在三角片內部且深度值大于深度緩沖區的深度值的像素進行X,y方向權重值計算之前還需要判斷以采樣方式m*n小區域單位內的每個像素是否在三角片內部。
8.如權利要求7所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述判斷m*n小區域單位內的每個像素是否在三角片內部是通過掃描線的位置和深度值進行判斷的。
9.如權利要求8所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述判斷m*n小區域單位內的每個像素是否在三角片內部后還需要對深度值進行深度檢測,所述對深度值進行深度檢測具體為計算m*n小區域單位內且在三角片內部的每個像素的深度值,與深度緩沖區中的深度值做比較,如果大于這個值則將該像素的深度值替換深度緩沖區中的相應位置的深度值。
10.如權利要求4所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述獲取需要計算顏色的位置具體方法為在三角片內部且深度值大于深度緩沖區的深度值的像素的X,y方向權重值相加后的值除以總數,得到X,Y方向的值,并且是相對于m*n小區域的位置值,根據小區域的位置,計算這個位置的絕對值。
11.如權利要求4所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述計算當前位置的顏色是根據三角片頂點位置與所述計算的顏色的位置得到當前位置的光照顏色和紋理坐標值后,并將光照顏色和紋理顏色混合得到的。
12.如權利要求11所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述光照顏色和紋理顏色混合得到當前位置的顏色具體為第一層紋理與光照顏色混合計算得到顏色值,如果有第二層紋理,則與前面的顏色值再做混合計算,依此類推,直到得到最終的顏色值。
13.如權利要求I所述的圖形渲染流水線中光柵化階段反走樣的改進方法,其特征在于,所述將顏色緩沖區縮小到原始大小具體為將m*n個采樣點顏色混合成一個顏色。
全文摘要
本發明公開了一種圖形渲染流水線中光柵化階段反走樣的改進方法,包括在光柵化階段之前,根據反走樣級別,準備放大的顏色緩沖區和深度緩沖區并初始化;對構成物體的三角片依次進行光柵化處理;對所有三角片都處理完之后,將顏色緩沖區縮小到原始大小,得到反走樣的渲染結果。通過本發明的實施方式,能有效提高在有紋理情況下的計算效率。
文檔編號H04N5/278GK102722902SQ201110116359
公開日2012年10月10日 申請日期2011年5月6日 優先權日2011年5月6日
發明者張君琦, 蔡歡, 鄭培楓 申請人:新奧特(北京)視頻技術有限公司