亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于流水線和狀態(tài)機的三角形快速分塊設計方法

文檔序號:6518528閱讀:299來源:國知局
一種基于流水線和狀態(tài)機的三角形快速分塊設計方法
【專利摘要】本發(fā)明公開一種基于流水線和狀態(tài)機的三角形快速分塊設計方法,包括以下步驟:(1)從scene?buffer中讀取裁剪后的三角形數據并編號;(2)將三角形進行視口變換;(3)計算三角形的包圍盒、邊界函數參數;(4)得到與包圍盒相交的tile范圍;(5)根據(4)所的范圍確定三角形、tile相交類型;(6)將三角形編號及(3)(4)所得相關信息寫入中間FIFO;(7)Tile?list生成單元讀取FIFO中相關數據;(8)根據mask?code解析相交類型;(9)根據當前三角形數據進行LET相交測試,若相交則轉入(10),否則轉入(11);(10)計算當前tile所對應的tile?list寫地址。
【專利說明】一種基于流水線和狀態(tài)機的三角形快速分塊設計方法
【技術領域】
[0001]本發(fā)明設計tile-based渲染架構GPU設計【技術領域】,特別是涉及tile-based GPU渲染架構中一種基于流水線和狀態(tài)機的三角形快速分塊設計方法。
【背景技術】
[0002]GPU (Graphics Processing Unit,圖形處理器)的出現極大程度加快了計算機圖形繪制速度,增強了圖形繪制效果,因而廣泛應用于航空航天、醫(yī)療成像等領域。隨著智能手機等移動終端的普及人們對移動設備人機交互界面體驗感覺要求的不斷提高,面向移動設備的GPU的研究也得到了很大的發(fā)展。
[0003]GPU繪制模式主要分為兩種,一種為傳統(tǒng)的立即繪制模式,即繪制過程以三角面為單位進行,一個三角面送入繪制管線后會立即被繪制。由于繪制管線要求對每個三角形進行深度測試,片外存儲器中需要保存一個與屏幕同等大小的幀緩沖、深度緩沖,大量的對不可見像素的深度讀寫極大地浪費了帶寬,并增加了不必要的功耗;另一種則為基于Tile的繪制模式,該模式下將屏幕劃分為很多個Tile,并以此為單位進行繪制。首先對三角形進行分類,得到與每個Tile相交的所有三角形的信息,存入Tilelist中,當一個場景中所有三角面都接收完畢后再進行繪制。該繪制模式下,幀緩沖與深度緩沖大小均與Tile大小一致即可,因此可以將其置于片上,在降低深度測試讀寫帶寬方面具有明顯的優(yōu)勢;并且每個Tilelist中都包含了本Tile在當前繪制場景中所有被繪制的三角形,可以在像素處理操作之前進行深度測試,減少對不可見像素進行紋理貼圖等無效繪制帶來的帶寬及功耗。基于Tile的繪制流程分為劃分Tile、生成Tile list,Tile的繪制三個步驟。其中如何精確、快速生成與每個Tile相交的Tile list對于繪制效率的提升具有十分關鍵的作用。判定三角形是否與Tile相交是基于Tile繪制架構關鍵步驟,該操作對每個三角形都要執(zhí)行,因此算法復雜度不宜過高。常見的覆蓋判定算法主要包括包圍盒測試(BBOX Test)、邊界函數測試(Line Edge Test,LET)、叉乘測試(Cross Product Test’CPT)等。其中 BBOX Test 簡單、便于實現,但因可能存在僅與包圍盒相交而不與三角形相交的tile而增加無效存儲、繪制,進一步加重系統(tǒng)的帶寬、功耗問題;LET及CPT算法更精確地判斷三角形與tile是否相交,能有效減少false-over lap的tile數量,但因其算法復雜度較高,影響了渲染速率。通??梢圆捎脙H對通過BBOX測試的tile進行高級三角形覆蓋測試的方法,使系統(tǒng)性能趨于最優(yōu)。

【發(fā)明內容】

[0004]本發(fā)明主要解決的技術問題是提供一種基于流水線與狀態(tài)機的三角形快速分塊設計架構,mask code判斷的加入可以有效避免non-false-over lap情況下無效計算,更快、更精確地得到tile list。
[0005]本發(fā)明采用如下技術手段實現發(fā)明目的:
[0006]一種基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,包括以下步驟:
[0007](I)從場景緩存scene buffer中讀取裁剪后的三角形數據并編號;
[0008]( 2 )將三角形進行視口變換;
[0009](3)計算三角形的包圍盒、邊界函數參數;
[0010](4)計算與包圍盒相交的分塊tile范圍;
[0011](5)根據步驟(4)所確定的三角形包圍盒與分塊tile相交類型,用I位掩碼表示,O表示non-false-over lap無錯誤覆蓋類型情況,I表示包含false-over lap表示含有錯誤覆蓋類型;
[0012](6)將三角形編號及步驟(3) (4) (5)所得相關信息寫入中間先進先出存儲單元FIFO ;
[0013](7)分塊列表生成單元Tile list讀取中間先進先出存儲單元FIFO中相關數據;
[0014](8)根據掩碼信息解析相交類型,若為I則轉入步驟(9),若為O則轉入步驟(10);
[0015](9)根據當前三角形數據進行LET相交測試,若相交則轉入步驟(10),否則轉入步驟(11);
[0016](10)計算當前tile所對應的tile list寫地址,并將當前三角形編號寫入;
[0017](11)將當前tile坐標增加相應量,并判斷與包圍盒相交的tile是否都已經處理完,若沒有處理完成,轉步驟(8),若處理完成,轉步驟(7),直到中間先進先出存儲單元FIFO為空結束。
[0018]作為對本技術方案的進一步限定,所述步驟(2)包括以下步驟:
[0019](2.1)顯示器屏幕的寬和高分別記為scr_h,繪制窗口左下角坐標(win_x, win_y),繪制窗口寬和高分別為win_w、win_h,三角形三個頂點坐標v0 (x0, y0),vl (xl, yl),v2 (x2, y2),視口變換后的頂點坐標記為 VO (Χ0, Υ0),Vl (XI,Yl),V2 (X2, Y2),首先計算 win_w/2> win_h/2;
[0020](2.2)分別計算 x0*win_w/2、xl*win_w/2、x2*win_w/2、y0*win_h/2、yl*win_h/2、y2*win_h/2,得到V0、V1、V2相對于繪制窗口左下角的坐標值;
[0021](2.3)將(2.2)得到的坐標值分別與繪制窗口左下角在屏幕坐標系中的坐標值相加,得到三角形三個頂點在屏幕坐標系中的坐標值X0=x0+x0*win_w/2、Y0=y0+y0*win_h/2、Xl=xl+xl*win_w/2、Yl=yl+yl*win_h/2、X2=x2+x2*win_w/2、Y2=y2+y2*win_h/2 ;
[0022]作為對本技術方案的進一步限定,所述步驟(3)包括以下步驟:
[0023](3.1)比較X0、X1、X2,Y0、Yl、Y2,分別記得到的較大值較小值為MIN_X、MIN_Y,MAX_X、MAX_Y,得到三角形的包圍盒;
[0024](3.2)計算三角形三條邊eO、el、e2所在直線的方程參數,具體如下:
[0025]e0=a0*x+b0*y+c0, el=al*x+bl*y+cl, e2=a2*x+b2*y+c2,
[0026]其中,aO=Yl-Y2,al=Y2_Y0, a2=Y0_Yl,bO=X2_Xl, bl=X0_X2, b2=Xl_X0,cO=X1Y2_X2Yl, cl=X2Y0-X0Y2, c2=X0Y1_X1Y0。
[0027]作為對本技術方案的進一步限定,所述步驟(4)包括以下步驟:
[0028](4.1)將步驟(3)中得到的MIN_X、MIN_Y、MAX_X、MAX_Y的浮點類型數據舍棄小數部分轉化為整型,得到 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I ;
[0029](4.2)記所選取的 tile 的邊長均 tile_w,對 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I作相應的低位置零操作,得到的值分別記為I_MIN、J_MIN、I_MAX、J_MAX,即為與包圍盒相交的tile的左下角坐標范圍。
[0030]作為對本技術方案的進一步限定,所述步驟(5)包括以下步驟:
[0031 ] (5.1)分別比較 I_MIN 和 I_MAX,J_MIN 和 J_MAX 是否相等;
[0032](5.2)若以上兩組數據比較結果中任意一組結果為相等,則判斷該三角形與tile相交情況為non-false-over lap情況,mask code置為O ;否則表明與包圍盒相交的tile中包含 false-over lap 情況,mask code 置為 I。
[0033]作為對本技術方案的進一步限定,所述步驟(9)包括以下步驟:
[0034](9.1)對于當前tile坐標(I,J),默認為(I_MIN,J_MIN),選取其中心點坐標tile_center (xc, yc),計算 eO (xc, yc)、el (xc, yc)、e2 (xc, yc),并分另lj 記 tile_w/2*(|a0| + |b0|)、tile_w/2*(|al| + |blI)、tile_w/2*(|a2| +1b2|)為 L0、L1、L2 ;
[0035](9.2)比較(5.1)中計算所得的兩組結果,若有:
[0036]eO (xc, yc) <=L0;
[0037]el (xc, yc) <=L1;
[0038]e2 (xc, yc) <=L2;
[0039]成立,則判斷該tile與三角形相交,否則判斷為不相交。
[0040]作為對本技術方案的進一步限定,所述步驟(11)包括以下步驟:
[0041](11.1)將當前tile坐標的I分量增加tile_w后與I_MAX比較,如果其小于等于I_MAX,則說明仍在待檢測tile范圍內,跳轉至步驟(8);否則跳轉到步驟(11.2);
[0042](11.2)將當前tile坐標的I分量置為I_MIN,J分量增加tile_w后于J_MAX比較,若其小于等于1_祖乂,則說明仍在待檢測tile范圍內,跳轉至步驟(8);否則說明待檢測tile已處理完成,判斷中間先進先出存儲單元FIFO是否為空,若為空,則結束,否則,跳轉至步驟(7)。
[0043]與現有技術相比,本發(fā)明的優(yōu)點和積極效果是:本發(fā)明步驟(I)到(6)為優(yōu)化的三角形BBOX測試,由流水線結構實現;(7)到(11)為tile list生成模塊,采用LET算法進行更精確三角形測試,由有限狀態(tài)機結構實現。本發(fā)明最大限度將三角形分塊過程中可流線操作部分提取出來加以實現,中間FIFO能夠有效掩蓋流水線與狀態(tài)機之間的速度差異,對三角形與tile相交類型的判斷標示能有效避免non-false-over lap情況下的無效計算,極大提高了 tile list生成狀態(tài)機的工作效率。
【專利附圖】

【附圖說明】
[0044]圖1為本發(fā)明的流水線部分流程圖。
[0045]圖2為本發(fā)明的狀態(tài)機部分流程圖。
【具體實施方式】
[0046]下面結合附圖和優(yōu)選實例對本發(fā)明作更進一步的詳細描述
[0047]如圖1所示,為本發(fā)明實現的流水線結構部分。(SI)場景緩存Scene buffer中存有裁剪后、歸一化的視錐體內的三角形坐標數據,均為-1到I之間的浮點格式數據。當檢測到場景緩存scene buffer非空時,開始從中讀取三角形數據,并根據讀取順序給三角形編號。(S2)根據輸入的繪制窗口信息對三角形坐標進行視口變換,即將三角形坐標轉化到屏幕坐標系中。(S3)在確定三角形在屏幕坐標系中坐標后,通過比較三個頂點的X、Y坐標分量得到其最大值、最小值,即為三角形包圍盒;計算三角形三條邊所在直線的方程參數;
(S4)將步驟(S3)得到的包圍盒坐標舍棄小數部分,轉化為整數,并根據所選取的tile的邊長,對其相應的低位置O,得到與包圍盒相交的tile的左下角坐標范圍;(S5)比較(S4)所得的與包圍盒相交的tile范圍,以此判斷三角形的相交類型,并用將mask code置O或置I來標示含有false-over lap和non-false-over lap兩種情況;(S6)將三角形邊界參數、編號、mask code寫入中間FIFO。
[0048]如圖2所示,為本發(fā)明實現的狀態(tài)機結構部分。(S7)當檢測到中間FIFO非空時。開始從中讀取三角形數據,否則維持空閑狀態(tài);(S8)對讀入的三角形數據進行解析,首先根據mask code判斷三角形的相交類型,若mask code為I,則表明與包圍盒相交的tile中含有false-over lap情況,需要進行進一步的三角形覆蓋測試,轉入(S9);若mask code為0,則表明與包圍盒相交的tile均與三角型相交,不需要進行進一步的三角形覆蓋測試,轉入(SlO) ;(S9)根據得到的三角形信息,對其進行LET過濾,若測試結果為相交,則轉入(S10),否則轉入(Sll)5(SlO)計算當前tile所對應的的tile list的寫地址,并將當前三角形編號寫入;(Sll)將當前tile的坐標I分量增加tile_w后,判斷所得tile是否在與包圍盒相交的tile范圍內,若在該范圍內,則轉至(S8),否則將I分量置為與包圍盒相交的tile范圍中的最小值,將J分量增加^1^?后判斷該tile是否在待檢測范圍內,若在該范圍內則跳轉至(S8),否則表明待檢測tile范圍內所有tile均已處理完,判斷中間先進先出存儲單元FIFO是否為空,若為空,則結束,否則,跳轉至步驟(S7)。
[0049]當然,上述說明并非對本發(fā)明的限制,本發(fā)明也不僅限于上述舉例,本【技術領域】的普通技術人員在本發(fā)明的實質范圍內所做出的變化、改型、添加或替換,也屬于本發(fā)明的保護范圍。`
【權利要求】
1.一種基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,包括以下步驟: (O從場景緩存scene buffer中讀取裁剪后的三角形數據并編號; (2)將三角形進行視口變換; (3)計算三角形的包圍盒、邊界函數參數; (4)計算與包圍盒相交的分塊tile范圍; (5)根據步驟(4)所確定的三角形包圍盒與分塊tile相交類型,用I位掩碼表示,O表示non-false-over lap無錯誤覆蓋類型情況,I表示包含false-over lap表示含有錯誤覆蓋類型; (6)將三角形編號及步驟(3)(4) (5)所得相關信息寫入中間先進先出存儲單元FIFO; (7)分塊列表生成單元Tilelist讀取中間先進先出存儲單元FIFO中相關數據; (8)根據掩碼信息解析相交類型,若為I則轉入步驟(9),若為O則轉入步驟(10); (9)根據當前三角形數據進行LET相交測試,若相交則轉入步驟(10),否則轉入步驟(11); (10)計算當前tile所對應的tilelist寫地址,并將當前三角形編號寫入; (11)將當前tile坐標增`加相應量,并判斷與包圍盒相交的tile是否都已經處理完,若沒有處理完成,轉步驟(8),若處理完成,轉步驟(7),直到中間先進先出存儲單元FIFO為空結束。
2.根據權利要求1所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(2)包括以下步驟: (2.1)顯示器屏幕的寬和高分別記為scr_h,繪制窗口左下角坐標(win_X,win_y),繪制窗口寬和高分別為win_w、win_h,三角形三個頂點坐標v0 (x0, y0),vl (xl, yl),v2 (x2, y2),視口變換后的頂點坐標記為 VO (Χ0, Υ0),Vl (XI,Yl),V2 (X2, Y2),首先計算 win_w/2> win_h/2; (2.2)分別計算 x0*win_w/2、xl*win_w/2、x2*win_w/2、y0*win_h/2、yl*win_h/2、y2*win_h/2,得到V0、V1、V2相對于繪制窗口左下角的坐標值; (2.3)將(2.2)得到的坐標值分別與繪制窗口左下角在屏幕坐標系中的坐標值相加,得到三角形三個頂點在屏幕坐標系中的坐標值X0=x0+x0*win_w/2、Y0=y0+y0*win_h/2、Xl=xl+xl*win_w/2、Yl=yl+yl*win_h/2> X2=x2+x2*win_w/2、Y2=y2+y2*win_h/2。
3.根據權利要求2所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(3)包括以下步驟: (3.1)比較XO、X1、X2,YO、Yl、Y2,分別記得到的較大值較小值為ΜΙΝ_Χ、ΜΙΝ_Υ,ΜΑΧ_Χ、ΜΑΧ_Υ,得到三角形的包圍盒; (3.2)計算三角形三條邊e0、el,e2所在直線的方程參數,具體如下:
e0=a0*x+b0*y+c0, el=al*x+bl*y+cl, e2=a2*x+b2*y+c2,
其中,aO=Yl-Y2, al=Y2-Y0, a2=Y0_Yl,bO=X2_Xl, bl=X0_X2, b2=Xl_X0,cO=X1Y2_X2Y1, c1=X2Y0-X0Y2, c2=X0Y1-X1Y0o
4.根據權利要求3所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(4)包括以下步驟:(4.1)將步驟(3)中得到的MIN_X、MIN_Y、MAX_X、MAX_Y的浮點類型數據舍棄小數部分轉化為整型,得到 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I ; (4.2)記所選取的 tile 的邊長均 tile_w,對 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I 作相應的低位置零操作,得到的值分別記為I_MIN、J_MIN、I_MAX、J_MAX,即為與包圍盒相交的tile的左下角坐標范圍。
5.根據權利要求4所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(5)包括以下步驟: (5.1)分別比較I_MIN和I_MAX,J_MIN和J_MAX是否相等; (5.2)若以上兩組數據比較結果中任意一組結果為相等,則判斷該三角形與tile相交情況為non-false-over lap情況,mask code置為O ;否則表明與包圍盒相交的tile中包含 false-overlap 情況,mask code 置為 I。
6.根據權利要求5所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(9)包括以下步驟: (9.1)對于當前tile坐標(I,J),默認為(I_MIN,J_MIN),選取其中心點坐標tile_center (xc, yc),計算 eO (xc, yc)> el (xc, yc)> e2 (xc, yc),并分另lj 記 tile_w/2*(IaOI +1bOI)、tile_w/2*(|al| +1bl|)、tile_w/2*(|a2| +1b2 )為 LO、L1、L2 ; (9.2)比較(5.1)中計算所得的兩組結果,若有:
eO (xc, yc) <=L0;
el (xc, yc) <=L1;
e2 (xc, yc) <=L2; 成立,則判斷該tile與三角形相交,否則判斷為不相交。
7.根據權利要求1所述的基于流水線和狀態(tài)機的三角形快速分塊設計方法,其特征在于,所述步驟(11)包括以下步驟: (11.1)將當前tile坐標的I分量增加tile_w后與I_MAX比較,如果其小于等于1_MAX,則說明仍在待檢測tile范圍內,跳轉至步驟(8);否則跳轉到步驟(11.2); (11.2)將當前tile坐標的I分量置為I_MIN,J分量增加tile_w后于J_MAX比較,若其小于等于J_MAX,則說明仍在待檢測tile范圍內,跳轉至步驟(8);否則說明待檢測tile已處理完成,判斷中間先進先出存儲單元FIFO是否為空,若為空,則結束,否則,跳轉至步驟(7)。
【文檔編號】G06T1/20GK103559679SQ201310556494
【公開日】2014年2月5日 申請日期:2013年11月11日 優(yōu)先權日:2013年11月11日
【發(fā)明者】孫濤, 周莉, 王佳 申請人:濟南大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1