專利名稱:改善計算機繪圖系統中深度信息傳輸頻寬的方法及裝置的制作方法
技術領域:
本發(fā)明是有關于計算機繪圖系統的領域,特別是指一種能夠改善計算機繪圖系統中、描繪引擎(raster engine)和深度緩沖區(qū)(depth buffer)之間數據傳輸瓶頸的方法及裝置。
背景技術:
在計算機繪圖的應用中,三維(two-dimensional,簡稱3D)的物體是利用足夠大量的多邊形,如三角形,來近似其表面。計算機繪圖系統一般具有兩種主要功能幾何處理以及描繪;轉換(transformation)、打光造型(light modeling)、修剪(clipping)和透視投影(perspectiveprojection)之類的幾何計算是在幾何引擎中執(zhí)行,而3D表示的影像在轉變到二維呈現時,色彩值及隱面消除(hiddens urface removal)之類的許多運算則是在描繪引擎中進行。
一直以來,深度緩沖例程(routine)幾乎是最為廣泛采用的隱面消除算法,這種例程針對屏幕上的每個像素(pixel),判斷那個多邊形上的那個點最接近觀察者,該方法需要一種頁框緩沖器(frame buffer)和一種Z-緩沖器,頁框緩沖器用來儲存色彩值,而與其具有同樣項目的Z-緩沖器則為畫面中的每個像素儲存Z-值(即深度值,為距離觀察者的度量)。如圖1A所示,頁框緩沖器在一開始設成背景顏色,Z-緩沖器100則初始化為零,零所代表的即為后方邊界平面;Z-緩沖器100所能存放的最大值便是代表前方邊界平面的Z-值。如圖1B所示,當多邊形上的點被掃瞄轉換到屏幕上的某個像素時,若其比起已于頁框緩沖器(圖中未示)及Z-緩沖器100中存入色彩值和深度值的另一點較為接近觀察者,則這個新的點其色彩值和深度值會分別取代現存的對應內容。
針對隱面消除,描繪引擎在3D繪圖處理時至少需要讀取一次Z-緩沖器100,以及對每一個像素比較新、舊Z-值,依據比較的結果,描繪引擎對Z-緩沖器100進行寫入運作,借此以新的Z-值來更新Z-緩沖器100。上述過程的優(yōu)點在于任何對象所屬的多邊形能夠以隨意、且與其遠近無關的次序表現;然而,使用深度緩沖例程需要大量的數據在描繪引擎和Z-緩沖器(深度緩沖器)之間傳遞,使得計算機繪圖系統因數據傳輸瓶頸的現象而導致效能降低。由此觀之,Z-緩沖器存取期間存在著傳輸頻寬的問題。
有鑒于此,亟需一種機制,用來減少深度緩沖器存取期間深度信息傳遞的數量,本發(fā)明提出的方法及裝置可滿足此需求。
發(fā)明內容
本發(fā)明的目的是提供一種方法及裝置,以改善計算機繪圖系統中由深度緩沖瓶頸所造成的頻寬問題。
本發(fā)明是針對于一種改善計算機繪圖系統中深度信息傳輸頻寬的方法。根據本發(fā)明,當一群像素被一個新的多邊形修飾時,則求出這個新多邊形的一組平面參數,并且標示該群像素中的那一個像素遭到修飾。關于該群像素,檢查其先前的深度信息是否已經過編碼,若該群像素的先前深度信息已經過編碼,則進行下列步驟先從儲存區(qū)擷取該群像素其先前深度信息的平面態(tài)樣及參數記錄,再分配一個新平面編號給該平面態(tài)樣的其中一個位置,該位置是對應到該群像素中被新的多邊形所修飾的像素;并將這個新多邊形的平面參數組附加到結合于該平面態(tài)樣的參數記錄;然后判斷該群像素的新深度信息是否值得編碼;若值得編碼,則把因編碼新深度信息而更新的平面態(tài)樣及參數記錄回存至儲存區(qū),還更新與該群像素相關的型態(tài)表,以顯示上述參數記錄中現存有效平面參數組的總數。
根據本發(fā)明的另一要點,在接收到一個有關一群像素其深度信息的要求時,先讀取與該群像素相關的型態(tài)表,然后依據此型態(tài)表,判斷該群像素的深度信息是否已經過編碼,若已經過編碼,則從儲存區(qū)取出平面態(tài)樣以及結合于該平面態(tài)樣的參數記錄,再根據該參數記錄中各組平面參數,計算與該群像素相關的每一可見多邊形的對應深度值,其中每組平面參數包含一對應的可見多邊形和該群像素之間的深度初始值,以及這個對應可見多邊形于第一、第二方向的第一和第二深度斜率;接著根據該平面態(tài)樣和這些對應的深度值,譯碼每一可見多邊形在該群像素的深度信息;然后將譯碼所得的該群像素的深度信息送出。然而,若是該群像素的深度信息未經過編碼,則直接將深度信息送出。
本發(fā)明的實施例還揭露一種改善計算機繪圖系統中深度信息傳輸頻寬的裝置,該裝置包括一存儲單元、一譯碼器以及一編碼器。存儲單元用來儲存與一群像素相關的型態(tài)表;譯碼器則耦接于存儲單元,根據該群像素相關的型態(tài)表,譯碼器可提供該群像素的深度信息,若該型態(tài)表顯示該群像素的深度信息已經過編碼,則譯碼器按照平面態(tài)樣以及結合于該平面態(tài)樣的參數記錄來譯碼該群像素的深度信息;而編碼器則耦接于存儲單元和譯碼器之間,當該群像素遭受一個新的多邊形修飾時,編碼器會更新上述的平面態(tài)樣、參數記錄以及存放在存儲單元之中的型態(tài)表。本發(fā)明的裝置最好還包含一高速緩存,其耦接在儲存區(qū)、譯碼器及編碼器之間,以儲放最近存取的平面態(tài)樣和參數記錄。
圖1A~圖1B是運用Z-緩沖例程的示意圖;圖2A是一個三角形投映到以像素為基礎的屏幕的透視投影示意圖;圖2B是圖2A中的Z-緩沖器示意3是本發(fā)明較佳實施例的方塊示意圖;圖4是本發(fā)明譯碼器執(zhí)行的主要步驟流程圖;圖5是輔助說明譯碼器運作的范例;圖6A~圖6B是本發(fā)明編碼器執(zhí)行的主要步驟流程圖;圖7A~圖7C是輔助說明編碼器運作的范例。
符號說明100~Z-緩沖器200~3D模型空間202~平面多邊形210~影像平面220~屏幕222~圖塊230~平面多邊形投映到影像平面的結果250~Z-緩沖器252~Z-圖塊254~平面態(tài)樣310~存儲單元320~譯碼器330~編碼器340~儲存區(qū)350~高速緩存360~描繪引擎510~平面態(tài)樣的范例
520~參數記錄的范例530~譯碼后的Z-圖塊710~修改后的平面態(tài)樣712~平面態(tài)樣更新的結果720~修改后的參數記錄722~參數記錄更新的結果730~修改后的Z-圖塊具體實施方式
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉一較佳實施例,并配合附圖,作詳細說明如下一般來說,3D計算機繪圖的目標是在創(chuàng)造3D模型的屏幕上2D的投影,如同從3D模型中的某個觀察點所看到的一樣。標準的Z-緩沖器將畫在屏幕上的每個像素線性地結合了一個代表距離觀察者遠近的Z-值(即畫面中相對投影平面的深度)。當第一個物體投映上去時,其像素的屬性(例如顏色)會存到頁框緩沖器,而每個像素相關的Z-值則另存到Z-緩沖器。如果第二個物體接著由該模型投映到相同像素,針對這個像素,新物體的Z-值會和已儲存的Z-值做比較,只有在新的Z-值比較大(表示物體較接近觀察者)時,該像素才會被畫上新的物體。在特定的實施方式里,Z-值會隨著深度的增加而增加,或隨著深度的增加而減少;由于本發(fā)明并不限于這類或其它的實施方式,所以說明書里有時候會以某個Z-值比其它Z-值較″近″或較″遠″于觀察點描述之。為獲得正確的透視投映,計算機繪圖系統運用4×4的矩陣轉換來執(zhí)行投影計算,4×4矩陣轉換是以″齊次(homogenous)″坐標系統來表示3D模型空間中的點,而齊次坐標系統是在傳統三度空間坐標X、Y、Z加入第四個坐標W。倘若一組齊次坐標是另一組的倍數,則兩組齊次坐標所參考到的是3D模型空間中的同一點,因此(X,Y,Z,W)以及(X/W,Y/W,Z/W,1)均參考到同一點,其中第四個坐標(″1″)的表示可以被省略。對于每一個投映到影像平面的點,傳統投影計算自然會產生一個1/W的值,故在習知里,某點的1/W值是關于該點在畫面中的深度,由于Z-值或1/W都可以表示畫面中物體的深度,因此說明書里所稱的″深度信息″可泛指這兩種值。
根據本發(fā)明,描繪引擎把屏幕分割成較小的圖塊(tile),每個圖塊由一群M×N個像素所構成,將像素以如圖塊般的群組來運作,描繪引擎可以增加存取數據的效率。對于每個圖塊,描繪引擎會決定那個多邊形對那個圖塊有貢獻,因此深度以及頁框緩沖器兩者均以圖塊為基礎來安排。參考圖2A,一平面多邊形202呈現在離其一段距離的投影面或影像面210,屏幕220中的最終影像則是投映到影像面210所形成-即圖2中的標號230;其中,屏幕220分成許多較小的圖塊,而每個圖塊是M×N像素的矩陣。圖2B所示為對應于屏幕220的Z-緩沖器250,同樣地,Z-緩沖器250亦分成較小的單位,稱為″Z-圖塊″,其中每個Z-圖塊分別對應到屏幕的圖塊。3D模型空間200中的多邊形(三角形)202可以用典型的平面方程式來表示AX+BY+CZ+D=0或是Z=-AX+BY+DC]]>假設三角形202投映到屏幕220的圖塊222,則圖塊222對應的Z-圖塊252中每個位置(i,j)的Z-值可由下式計算而得Z(i,j)=Z0+(-AC)×i+(-BC)×j=Z0+ΔZX×i+ΔZY×j]]>其中,Z0是Z-圖塊252于原點(0,0)的深度初始值,ΔZX是多邊形202于X方向的深度斜率,而ΔZY是多邊形202于Y方向的深度斜率。本發(fā)明以Z0、ΔZX、ΔZY當做是多邊形及其對應Z-圖塊所屬的一組平面參數。有可能一個以上的多邊形會被畫到同一個Z-圖塊,因此每個Z-圖塊會配給一個平面態(tài)樣來表示Z-圖塊中的各個位置保有那一個多邊形的Z-值。如圖2B所示,Z-圖塊252搭配著一個平面態(tài)樣254,根據本發(fā)明,利用平面態(tài)樣以及平面參數組可將屏幕所有圖塊的深度信息予以編碼和譯碼。
參考圖3的實施例,存儲單元310儲存了與屏幕所有圖塊相關的型態(tài)表,而每個圖塊相關的型態(tài)表可以表示K個值。在一實施例中,型態(tài)表中的值″0″代表圖塊只被一個多邊形投映到,″1″代表圖塊被兩個多邊形投映到,以此類推;值得注意的是″K-1″代表對應的Z-圖塊未經編碼。在另一實施例中,型態(tài)表中的值″0″代表對應的Z-圖塊尚未初始化,″1″代表圖塊被一個多邊形投映到,″2″代表圖塊被兩個多邊形投映到,以此類推;″K-1″同樣代表對應的Z-圖塊未經編碼。后者的優(yōu)點是在初始期間,只有存儲單元310中儲存的型態(tài)表需經初始化,但Z-圖塊則不需要,借以減少內存存取的次數。
繼續(xù)參考圖3,譯碼器320耦接于存儲單元310,根據上述的型態(tài)表,譯碼器320可提供深度信息給描繪引擎360;若某個圖塊相關的型態(tài)表顯示該圖塊的深度信息已經過編碼,則譯碼器320從儲存區(qū)340擷取該圖塊的平面態(tài)樣及結合于該平面態(tài)樣的參數記錄,并且按照平面態(tài)樣和參數記錄來譯碼該圖塊的深度信息。除此之外,編碼器330耦接于存儲單元310和譯碼器320之間,當圖塊遭受一個新的多邊形修飾時,編碼器330會更新該圖塊的平面態(tài)樣、參數記錄以及存放在存儲單元310之中的型態(tài)表。實施例還可加上(非必須的)高速緩存350,其耦接在儲存區(qū)340、譯碼器320及編碼器330之間,以儲放最近存取的平面態(tài)樣和參數記錄,如此可加速深度信息處理的速度。
接下來以范例和搭配的流程圖來彰顯本發(fā)明的特征,參考圖4,在譯碼器320從描繪引擎360接收到一個有關某個圖塊其深度信息的要求時,譯碼器320會先從存儲單元310讀取與該圖塊相關的型態(tài)表(步驟S410);依據此型態(tài)表,譯碼器320判斷該圖塊的深度信息在之前是否已經過編碼(步驟S420);若是型態(tài)表顯示該圖塊的深度信息未經過編碼,則譯碼器320從儲存區(qū)(深度緩沖器)340取出深度信息,并直接將深度信息送至描繪引擎360(步驟S470);若深度信息已經過編碼,例如型態(tài)表顯示該圖塊已被兩個多邊形投映上去,則譯碼器320從儲存區(qū)340取出該圖塊的平面態(tài)樣以及結合于該平面態(tài)樣的參數記錄(步驟S430)。
圖5所示為說明用的平面態(tài)樣510以及結合該平面態(tài)樣510的參數記錄520,由于范例的圖塊大小為4×4,所以平面態(tài)樣510有16個位置。在圖5中,參數記錄520包含了三組平面參數,其中第0組代表后方邊界平面,每一組平面參數由Z0、ΔZX、ΔZY所構成。回到圖4,譯碼器320根據參數記錄520中的各組平面參數,計算圖塊上每一可見多邊形的對應深度值(步驟S440);同時,譯碼器320根據平面態(tài)樣510和這些對應的深度值,譯碼得到每一可見多邊形在該圖塊的深度信息(步驟S450)。圖5亦顯示譯碼后的Z-圖塊530。因此,針對圖塊里的每一位置,譯碼器320可從平面態(tài)樣510得到一個平面編號,并且從參數記錄520得到一組與這個平面編號關聯的平面參數,然后譯碼器320以下列的式子計算Z-圖塊中每個位置Z(i,j)的深度值Z(i,j)=Z0+ΔZX×i+ΔZY×j最后,將譯碼所得的深度信息輸出給描繪引擎360(步驟S460)。
接下來參考圖6A、圖6B,當圖塊被一個新的多邊形修飾時,編碼器330從描繪引擎360接收一組屬于這個新多邊形的平面參數(步驟S605),描繪引擎360同時標示該圖塊中的那一個像素遭到修飾;編碼器330還從存儲單元310讀取與該圖塊相關的型態(tài)表,依據此型態(tài)表判斷該圖塊先前的深度信息是否已經過編碼(步驟S610);編碼器330再從儲存區(qū)340擷取該圖塊先前深度信息的平面態(tài)樣及參數記錄(步驟S615),此處仍然利用圖5當做說明范例;編碼器330會為這個新多邊形分配一個新平面編號給平面態(tài)樣510的其中一或多個位置,這些位置是對應到該圖塊中被新多邊形所修飾的像素,并將這個新多邊形(平面3)的平面參數組附加到參數記錄520(步驟S620)。如圖7A、圖7B所示,平面態(tài)樣710為平面態(tài)樣510因此修改的結果,而參數記錄720則改自參數記錄520,圖7C則顯示該圖塊對應的修改后Z-圖塊730。
因為新多邊形(平面3)在上述的圖塊內完全覆蓋一個由平面參數組″1″所代表的先前多邊形(平面1),導致參數記錄720中的平面參數組″1″變成多余,因此將多余的平面參數組″1″從參數記錄720中刪除(步驟S625);再將參數記錄720中的有效平面參數組,包括新多邊形(平面3)的平面參數組,以最少的數目重新進行編號(步驟S630);平面態(tài)樣710亦隨之更改,這些步驟后的結果顯示在圖7中的平面態(tài)樣712以及參數記錄722。接著,編碼器330評估現存于參數記錄722中有效平面參數組的總數來決定這個圖塊的新深度信息是否值得編碼(步驟S635),就這點而言,倘若投映到同一個圖塊上的可見多邊形總數太多,則深度信息編碼所需的位數會超過沒有編碼的原始位數,因此在編碼器330設定一個既定數目來當做是一個圖塊上的可見多邊形總數臨界值。當有效平面參數組的總數大于設定的既定數目,代表新的深度信息沒有編碼的必要,編碼器330將沒有編碼的新深度信息(Z-圖塊)直接存到儲存區(qū)340(步驟S680),編碼器330還更新圖塊相關的型態(tài)表以顯示新的深度信息未經編碼(步驟S685)。
倘若圖塊的新深度信息值得編碼,則編碼器330把因編碼新深度信息而更新的平面態(tài)樣712及參數記錄722回存至儲存區(qū)340(步驟S640),編碼器330同時更新與該圖塊相關的型態(tài)表,以顯示參數記錄722中現存有效平面參數組的總數(步驟S645)。下表一所列的壓縮增益是依不同的圖塊大小及當中的平面數目來表示,而平面參數Z0、ΔZX、ΔZY則以32位浮點數格式,深度信息每次以32位為單位來存取,以及用2位編碼平面態(tài)樣中的值。
表一壓縮增益圖塊大小1個平面 2個平面 3個平面 4個平面4×4 4.00 2.29 1.601.234×8 6.40 4.00 2.912.298×8 9.14 6.40 4.924.00倘若先前的深度信息未經過編碼,參考圖6B,編碼器330會判斷圖塊中的每一像素是否都被上述的新多邊形修飾(步驟S650),若是每一像素都被修飾,編碼器330以新多邊形的平面參數組來初始化參數記錄(步驟S655),回存初始化過的參數記錄至儲存區(qū)340(步驟S660),并且更新該圖塊相關的型態(tài)表以顯示參數記錄中存放著新多邊形的平面參數組(步驟S670);若圖塊中的像素不是全部都被修飾,則編碼器330將新的深度信息直接輸出(步驟S680),這意謂著投映到該圖塊上的可見多邊形總數已超過設定的既定數目。
權利要求
1.一種改善計算機繪圖系統中深度信息傳輸頻寬的方法,至少包含下列步驟若一群像素被一新多邊形修飾,則求得該新多邊形的一組平面參數,并且指出該群像素中何者遭到修飾;判斷該群像素的先前深度信息是否已經過編碼;若該群像素的先前深度信息已經過編碼,則至少進行下列步驟從一儲存區(qū)擷取該群像素的先前深度信息的一平面態(tài)樣及一參數記錄;分配一新平面編號給該平面態(tài)樣中的一位置,其中該位置對應到該群像素中被該新多邊形所修飾的像素;將該新多邊形的平面參數組附加到結合于該平面態(tài)樣的該參數記錄;判斷該群像素的新深度信息是否值得編碼;若該群像素的新深度信息值得編碼,則至少進行下列步驟因編碼該群像素的新深度信息而更新的該平面態(tài)樣及該參數記錄回存至該儲存區(qū);以及更新與該群像素相關的一型態(tài)表以顯示該參數記錄中現存有效平面參數組的總數。
2.根據權利要求1所述的改善計算機繪圖系統中深度信息傳輸頻寬方法,其中上述新多邊形的平面參數組至少包含上述新多邊形和上述像素群間的一深度初始值;上述新多邊形于一第一方向的一第一深度斜率;以及上述新多邊形于一第二方向的一第二深度斜率。
3.根據權利要求2所述的改善計算機繪圖系統中深度信息傳輸頻寬方法,更至少包含下列步驟若上述新多邊形在上述像素群的范圍內完全覆蓋住一先前的多邊形,而該先前的多邊形可由另一組平面參數所代表,則將多余的該先前多邊形的平面參數組從上述參數記錄中刪除;以及將上述參數記錄中的有效平面參數組,其中包括上述新多邊形的平面參數組,進行重新編號。
4.根據權利要求3所述的改善計算機繪圖系統中深度信息傳輸頻寬方法,其中上述判別是否值得編碼的步驟至少包含計算上述參數記錄中現存有效平面參數組的總數;若是由上述參數記錄中現存有效平面參數組所算出來的總數超過一既定數目,則判定上述像素群的新深度信息不須進行編碼。
5.根據權利要求4所述的改善計算機繪圖系統中深度信息傳輸頻寬方法,更至少包含下列步驟若是收到一有關上述像素群新深度信息的要求,則讀取上述像素群相關的上述型態(tài)表;根據上述型態(tài)表,判斷上述像素群的新深度信息是否已經過編碼;若上述像素群的新深度信息已經過編碼,則至少進行下列步驟從上述儲存區(qū)取出上述平面態(tài)樣以及結合于上述平面態(tài)樣的上述參數記錄;根據上述參數記錄中的各組平面參數,計算上述像素群的每一可見多邊形的對應深度值;以及根據上述平面態(tài)樣和該些對應的深度值,譯碼得到每一可見多邊形在上述像素群的新深度信息。
6.一種改善計算機繪圖系統中深度信息傳輸頻寬的裝置,其特征在于所述裝置至少包含一存儲單元,用以儲存與一群像素相關的一型態(tài)表;一譯碼器,耦接于該存儲單元,根據該群像素相關的該型態(tài)表來提供該群像素的深度信息,若該群像素相關的該型態(tài)表顯示該群像素的深度信息已經過編碼,則該譯碼器按照一平面態(tài)樣以及結合于該平面態(tài)樣的一參數記錄來譯碼該群像素的深度信息;以及一編碼器,耦接于該存儲單元和該譯碼器之間,當該群像素遭受一新多邊形修飾時,該編碼器用以更新該平面態(tài)樣、該參數記錄以及存放在該存儲單元之中的該型態(tài)表。
7.根據權利要求6所述的改善計算機繪圖系統中深度信息傳輸頻寬裝置,其特征在于若上述像素群的深度信息已借由上述平面態(tài)樣及上述參數記錄來編碼,則上述譯碼器從一儲存區(qū)擷取上述平面態(tài)樣及上述參數記錄;若上述像素群的深度信息先前未經過編碼,則該儲存區(qū)直接保存上述像素群的深度信息。
8.根據權利要求7所述的改善計算機繪圖系統中深度信息傳輸頻寬裝置,其特征在于上述參數記錄至少包含一組平面參數,其是關于上述像素群內的一可見多邊形,該組平面參數至少包含該可見多邊形和上述像素群間的一深度初始值;該可見多邊形于一第一方向的一第一深度斜率;以及該可見多邊形于一第二方向的一第二深度斜率。
9.根據權利要求8所述的改善計算機繪圖系統中深度信息傳輸頻寬裝置,其特征在于上述譯碼器根據上述參數記錄中的上述平面參數組,計算上述可見多邊形于上述像素群的對應深度值,并且根據上述平面態(tài)樣和該對應深度值,譯碼得到上述可見多邊形在上述像素群的深度信息。
10.根據權利要求8所述的改善計算機繪圖系統中深度信息傳輸頻寬裝置,其特征在于上述編碼器分配一新平面編號給上述平面態(tài)樣中的一位置,而該位置對應到上述像素群中被上述新多邊形所修飾的像素,并且將有關上述新多邊形的一組新平面參數附加到上述參數記錄,若上述編碼器判斷上述像素群的新深度信息值得編碼,則進一步更新上述像素群相關的上述型態(tài)表以顯示上述參數記錄中現存有效平面參數組的總數。
全文摘要
一種改善計算機繪圖系統中深度信息傳輸頻寬的方法及裝置。根據本發(fā)明,譯碼器因應一個關于一群像素群其深度信息的要求而檢查與該群像素相關的型態(tài)表,該型態(tài)表是存放于存儲單元之中,若型態(tài)表顯示這群像素的深度信息已經過編碼,則按照平面態(tài)樣以及結合于平面態(tài)樣的參數記錄來譯碼深度信息。當這群像素遭受新的多邊形修飾時,編碼器會將與其相關的平面態(tài)樣、參數記錄以及存放在存儲單元之中的型態(tài)表予以更新。
文檔編號G06T17/00GK1591478SQ0315653
公開日2005年3月9日 申請日期2003年9月3日 優(yōu)先權日2003年9月3日
發(fā)明者黃鴻儒, 呂忠晏, 張永清 申請人:矽統科技股份有限公司