專利名稱::圖形處理單元中的三維裁剪的制作方法
技術領域:
:本發(fā)明大體上涉及電子器件,且更具體地說,涉及用于在圖形處理單元(GPU)中執(zhí)行3D裁剪的技術。冊雙^圖形處理單元(GPU)是用于針對各種應用渲染二維(2D)和/或三維(3D)圖像的專門硬件單元,所述應用例如為視頻游戲、圖形、計算機輔助設計(CAD)、模擬和顯像工具、成像等。3D圖像可用數(shù)個表面建模,且每一表面可用數(shù)個基元近似?;腔編缀螁挝磺铱砂ㄈ切?、線條等。GPU可執(zhí)行例如變換、光柵化、著色、摻合等各種圖形操作以渲染3D圖像。這些圖形操作可能為計算密集的。此外,用于表示3D圖像的基元的數(shù)目可能較大,例如達數(shù)百萬。因此,可能消耗許多處理和存儲器資源來對大量幾何數(shù)據(jù)執(zhí)行計算以便渲染3D圖像。可執(zhí)行3D裁剪以識別并拋棄不能看見且因此無需渲染的基元。可通過省略用于被拋棄的基元的計算來實現(xiàn)改進的性能。然而,3D裁剪本身是項復雜的操作。GPU可具有專用硬件來執(zhí)行所有3D裁剪操作。然而,此專用3D裁剪硬件將增加GPU的成本和功耗,這可能對于例如移動和手持式裝置等某些應用來說是不合需要的。可通過在可在中央處理單元(CPU)、數(shù)字信號處理器(DSP)等上執(zhí)行的軟件中執(zhí)行3D裁剪來避免使用專用3D裁剪硬件。然而,使用CPU或DSP(其還用于其它目的)執(zhí)行3D裁剪可能引起其它問題,例如用于輸送基元數(shù)據(jù)和3D裁剪結(jié)果的數(shù)據(jù)總線上的較髙負載、發(fā)送出以用于3D裁剪的基元與待渲染的其它基元之間的同步等。
發(fā)明內(nèi)容本文描述一種圖形處理單元(GPU),其使用用于其它圖形功能的一個或一個以上處理單元來有效地執(zhí)行3D裁剪。所述GPU可通過在硬件中執(zhí)行3D裁剪來提供改進的性能,通過不必調(diào)用CPU或DSP執(zhí)行3D裁剪來降低對3D圖形管線的破壞,且提供其它好處。在一種設計中,所述GPU包括第一和第二硬件單元以及至少一個緩沖器。所述第7一硬件單元使用用于第一圖形功能的第一處理單元來執(zhí)行對基元的3D裁剪,所述第一處理單元例如為用于三角形設置、深度梯度設置等的算術邏輯單元(ALU)。第一硬件單元可通過以下操作來執(zhí)行3D裁剪(a)計算用于每一基元的每一頂點的裁剪代碼;(b)基于用于每一基元的所有頂點的裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元;以及(c)相對于裁剪平面裁剪待裁剪的每一基元。所述第二硬件單元計算用于從3D裁剪產(chǎn)生的新頂點的屬性分量值。第二硬件單元使用用于第二圖形功能的第二處理單元,例如用于屬性梯度設置、屬性內(nèi)插等的ALU。緩沖器存儲第一硬件單元所進行的3D裁剪的中間結(jié)果。下文進一步詳細描述本發(fā)明的各種方面和特征。圖1展示用于沒有3D裁剪的GPU的3D圖形管線。圖2展示用于具有3D裁剪的GPU的3D圖形管線。圖3展示用于3D圖形的視見平截頭體。圖4展示相對于視口的基元。圖5展示用于一個頂點的裁剪代碼的位圖。圖6說明相對于裁剪平面裁剪三角形。圖7展示用于3D裁剪的緩沖器的設計。圖8展示圖2中的GPU中的單元220的框圖。圖9展示圖2中的GPU中的單元250的框圖。圖io展示無線通信裝置的框圖。具體實施例方式3D圖像可用數(shù)個基元(例如,三角形、線條、其它多邊形等)表示。每一基元由一個或一個以上頂點界定,例如用于三角形的三個頂點。每一頂點與例如空間坐標、色彩、紋理坐標等各種屬性相關聯(lián)。每一屬性可具有多達四個分量。舉例來說,空間坐標可由三個分量x、y和z或四個分量x、y、z和w給定,其中x和y是水平和垂直坐標,z是深度,且w是齊次坐標。色彩可由三個分量r、g和b或四個分量r、g、b和a給定,其中r是紅色,g是綠色,b是藍色,且a是確定像素透明度的透明度因數(shù)。紋理坐標通常由水平和垂直坐標(u和v)給定。頂點還可與其它屬性相關聯(lián)。圖1展示用于GPU100的3D圖形管線的框圖。頂點著色器110對幾何數(shù)據(jù)執(zhí)行頂點處理,所述幾何數(shù)據(jù)可包含例如三角形和線條等基元。舉例來說,頂點著色器512可針對頂點計算光量值,針對幾何形狀執(zhí)行摻合等。頂點著色器110還可確定每一頂點的坐標(例如,x、y、z、w)和屬性分量值,向三角形設置和深度(z)梯度設置單元120提供頂點坐標,且向頂點高速緩沖存儲器180提供頂點屬性分量值。頂點高速緩沖存儲器180存儲屬性分量值,且可能存儲用于頂點和基元的其它數(shù)據(jù)。單元120計算用于后續(xù)光柵化過程的參數(shù)。舉例來說,單元120可執(zhí)行視口變換以將基元從裁剪坐標系(或裁剪空間)轉(zhuǎn)換為屏幕坐標系(或屏幕空間)。裁剪空間是具有四個維度x、y、z、w的標準化齊次坐標系。屏幕空間是用于顯示屏或某種其它輸出裝置的3維坐標系。單元120還可執(zhí)行剪切以拋棄不在剪切窗口內(nèi)的對象,執(zhí)行背面剔除以拋棄對象背側(cè)上的基元等。單元120可執(zhí)行三角形/基元設置且計算用于每一基元的邊緣的線性等式的系數(shù)、用于深度(z)梯度的系數(shù)等。光柵化器130將每一基元分解為數(shù)個像素且產(chǎn)生用于每一像素的屏幕坐標。早期深度/模版測試單元140可執(zhí)行用于像素的模版測試(如果啟用的話)以確定應渲染還是拋棄所述像素。術語"拋棄"、"丟棄"和"拒絕"是同義的。術語"傳遞"和"接受"也是同義的。單元140可將用于像素的存儲在模版緩沖器(圖1中未展示)中的模版值與參考值進行比較,且基于比較結(jié)果而傳遞或拋棄所述像素。單元140還可對像素執(zhí)行深度測試(其還稱為z測試)(如果適用的話)以確定應渲染還是拋棄所述像素。單元140可將用于像素的z值(當前z值)與z緩沖器中的對應z值(所存儲z值)進行比較,在當前z值比所存儲z值更接近/更靠近的情況下傳遞所述像素并更新所述z緩沖器和(可能)模版緩沖器,且在當前z值比所存儲z值更向后的情況下拋棄所述像素。屬性梯度設置和屬性內(nèi)插單元150內(nèi)插用于基元頂點的屬性分量值,以獲得用于所述基元內(nèi)的像素的屬性分量值。單元150可首先基于頂點的屬性分量值而計算用于屬性內(nèi)插的參數(shù)。這些參數(shù)可為用于屬性內(nèi)插的線性等式的屬性梯度或系數(shù)。單元150可接著基于所述像素的屏幕坐標和內(nèi)插參數(shù)而計算用于每一基元內(nèi)的每一像素的屬性分量值。像素/片段著色器160可對像素和片段執(zhí)行各種圖形操作。片段是像素或其相關聯(lián)信息。舉例而言,像素/片段著色器160可執(zhí)行紋理映射(如果啟用的話)以向像素施加紋理。通過在由像素的紋理坐標所指示的位置處用紋理圖像的色彩修改所述像素的色彩來實現(xiàn)紋理化。后處理器170可對每一片段執(zhí)行其它圖形操作,例如a測試、霧化摻合、a摻合、邏輯操作、抖動操作等。后處理器170向色彩緩沖器提供輸出像素以供在顯示裝置上呈現(xiàn)(所述兩者均未在圖1中展示)。GPU100不具有專用3D裁剪硬件,其可能由于3D裁剪所需的復雜計算而為昂貴的且在僅裁剪較小百分比的基元的情況下可能為不合理的。在此情況下,可在CPU或DSP上所執(zhí)行的軟件中執(zhí)行3D裁剪。在完成頂點處理之后,GPU100可將基元數(shù)據(jù)發(fā)送到CPU或DSP以用于3D裁剪(如果必要的話)。GPU100可接著等待來自CPU或DSP的3D裁剪結(jié)果,這將在GPU閑置時浪費GPU資源?;蛘?,GPU100可處理新基元且將結(jié)果存儲在緩沖器中。在從CPU或DSP接收到具有新基元的3D裁剪結(jié)果時,GPU100可將新基元發(fā)送到下一級且在緩沖器中繞過所述基元。這避免在等待3D裁剪結(jié)果時浪費GPU資源,但需要較多緩沖,且可能引起同步和其它問題。圖2展示用于GPU200的3D圖形管線的框圖,所述GPU200使用用于其它圖形功能的處理單元來有效地支持3D裁剪。GPU200包括頂點著色器110、光柵化器130、早期深度/模版測試單元140、像素/片段著色器160、后處理器170和頂點高速緩沖存儲器180,其如上文針對圖1描述那樣操作。GPU200進一步包括(a)3D裁剪、三角形設置和深度梯度設置單元220代替圖1中的單元120,以及(b)新頂點屬性計算、屬性梯度設置和屬性內(nèi)插單元250代替圖1中的單元150。單元220使用用于三角形設置和深度梯度設置的處理單元(例如,ALU)執(zhí)行用于基元的3D裁剪。對于3D裁剪,單元220確定是傳遞、拋棄還是裁剪每一基元,且針對待裁剪的每一基元,確定從3D裁剪產(chǎn)生的新頂點的坐標和內(nèi)插系數(shù)。下文描述單元220對3D裁剪所進行的處理。單元250計算用于來自3D裁剪的新頂點的屬性分量值。單元250可使用用于屬性梯度設置和屬性內(nèi)插的處理單元(例如,ALU)執(zhí)行此計算。單元250可接著針對新基元連同其它基元執(zhí)行屬性梯度設置和屬性內(nèi)插。如圖2所示執(zhí)行3D裁剪可提供某些優(yōu)點,例如(a)通過在硬件中執(zhí)行3D裁剪實現(xiàn)的改進的性能,(b)通過借用用于其它圖形功能的處理單元實現(xiàn)的用以支持3D裁剪的較小額外硬件成本,(c)通過不必調(diào)用CPU或DSP執(zhí)行3D裁剪實現(xiàn)的對3D圖形管線的較少破壞,以及(d)可能其它好處。圖3展示用于3D圖形的視見平截頭體300。用于渲染引擎的相機位于3D(x,y,z)坐標系的原點處。所述視見平截頭體是可能在屏幕上顯示的建模世界中的3D空間容積。所述視見平截頭體類似經(jīng)裁剪四面體且由六個平面形成——四個平面用于經(jīng)裁剪四面體的四個側(cè)面,一個平面(稱為z近平面)用于四面體的經(jīng)裁剪頂部且另一個平面(稱為z遠平面)用于四面體的底面。位于視見平截頭體外部的對象不被渲染且可被拋棄。所述Z遠平面可放置于無限距離處,使得可渲染對象而不管其距相機的距離如何。在此情況下,視見平截頭體由用于四個側(cè)面的四個平面和z近平面形成。圖4展示相對于視口400的各種基元。視口是3D場景投影到其中的2D矩形且可對應于視見平截頭體的底部。存在z近平面但未在圖4的2D表示中展示。安全帶410是等于或大于所述視口的矩形??上鄬τ谒霭踩珟Ф撬鲆暱趤韴?zhí)行3D裁剪。較大安全帶可導致裁剪較少基元(這是合乎需要的),但還導致將較多經(jīng)裁剪基元傳遞到下一級。對于較小安全帶,情況相反。在一種設計中,如果基元的頂點全部位于用于所述視口的五個平面中的任何一者外部,那么拋棄所述基元。如果任何頂點位于用于安全帶的五個平面中的任何一者外部,那么裁剪未被拋棄的基元。如果基元未被拋棄或裁剪,那么傳遞所述基元。在圖4所示的實例中,拋棄基元l、6、9、11和12,傳遞基元2、7、8和10,且裁剪基元3、4、5、13和14。還可基于其它準則而拋棄、傳遞或裁剪基元??扇缦聢?zhí)行3D裁剪1.確定用于每一基元的每一頂點的裁剪代碼,2.做出用于每一基元的裁剪決策且基于用于所述基元的所有頂點的裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元,3.計算用于每一經(jīng)裁剪基元的新頂點的坐標,且4.計算用于每一經(jīng)裁剪基元的新頂點的屬性分量值。圖2的GPU200內(nèi)的單元220可執(zhí)行步驟1、2和3(例如,在執(zhí)行視口變換和三角形設置之前),如下文所描述。裁剪基元可產(chǎn)生在一個或一個以上裁剪平面的交點處的一個或一個以上新頂點。舉例來說,相對于安全帶裁剪圖4中的三角形4將產(chǎn)生相對于頂部平面的兩個新頂點和相對于右側(cè)平面的兩個新頂點。經(jīng)裁剪的三角形將是具有五個頂點的多邊形,其可被劃分為三個新三角形。單元220計算用于新基元的頂點坐標。以與3D裁剪所傳遞的基元類似的方式,這些新基元被傳遞到3D圖形管線的后續(xù)級并由所述后續(xù)級處理。GPU200的單元250可執(zhí)行步驟4,如下文所描述。可將用于新頂點的屬性分量值的計算交由單元250,以便免除對可能由單元220、130禾口/或140拒絕的頂點的計算。新頂點屬性計算可被推遲,因為管線200中的單元220、130和140不對屬性進行操作?;蛘?,單元220也可計算用于新頂點的屬性分量值??上鄬τ诎踩珟Р眉艋霭踩珟Э上鄬τ谝暱谕ㄟ^分別用于x、y和z坐標的三個安全帶參數(shù)GB—Scale—X、GB—Scale—Y和GB—Scale_Z來界定。GB—Scale—X是針11對X方向的安全帶大小與視口大小的比率。如果安全帶大小與視口大小相同,那么GB—Scale—X等于1.0,且如果安全帶大小大于視口大小,那么GB—Scale一X大于1.0。以類似方式針對y和z方向界定GB—Scale—Y和GB—Scale—Z。對于3D裁剪,最初針對每一基元的每一頂點確定裁剪代碼??赏ㄟ^四個分量x、y、z和w界定頂點,其中x、y和z界定頂點在3D空間中的位置,且w界定透視深度。對于安全帶,z近平面被給定為-GB—Scale_Z*w,左側(cè)平面被給定為-GB一Scale—X*w,右側(cè)平面被給定為GB_Scale—X*w,底部平面被給定為GB_Scale—Y*w,且頂部平面被給定為-GB一Scale—Y^w。此處忽略z遠平面,因為在z遠平面處裁剪的機率較低。用z遠平面裁剪可等效地通過后續(xù)設置管線級以其它方式執(zhí)行,且未在本文中描述。圖5展示用于一個頂點的裁剪代碼的位圖500。所述位圖包括用于九個裁剪平面的九個位,其中每一裁剪平面使用一個位。位l用于z近平面,且適用于視口和安全帶兩者。位2、4、6和8分別用于視口的左側(cè)、頂部、右側(cè)和底部平面。位3、5、7和9分別用于安全帶的左側(cè)、頂部、右側(cè)和底部平面。如果頂點位于對應裁剪平面外部,那么可將位圖中的每一位設定為一("1")。位于安全帶的裁剪平面外部的頂點也位于視口的對應裁剪平面外部。因此,當頂點位于安全帶的裁剪平面外部時,設定兩個位(一個用于安全帶,且另一個用于視口)。當頂點位于視口的裁剪平面與安全帶的對應裁剪平面之間時,僅設定一個位。可基于以下偽代碼來確定用于頂點的裁剪代碼。100If(z<-GB—scale—z*w)ClipCode=0x2;〃z近平面110If(x<-GB—scale_x*w)ClipCode|=Oxc;〃安全帶左側(cè)平面120Elseif(x<-w)ClipCode|=0x4;〃視口左側(cè)平面130If(y<-GB—scale—Y*w)ClipCode|=0x30;〃安全帶頂部平面140Elseif(y<-w)ClipCode|=0x10;〃視口頂部平面150If(x>GB—Scale一x*w)ClipCode|=0xc0;〃安全帶右側(cè)平面160Elseif(x>ClipCode|=0x40;〃視口右側(cè)平面170If(y>GB—scale—Y*w)ClipCode|=0x300;〃安全帶底部平面180Elseif(y>w)ClipCode|=0x100;〃視口底部平面在所述偽代碼中,表示當前值與"|="右側(cè)的值的逐位"或"運算。在以上偽代碼中,如果頂點在z近平面后面,那么行100將位圖的位1設定為一12("1")。如果頂點在安全帶的左側(cè)平面外部(或左側(cè)),那么行110設定位2和3。如果頂點位于視口與安全帶的左側(cè)平面之間,那么行120設定位2。如果頂點位于安全帶的頂部平面上方,那么行130設定位4和5。如果頂點位于視口與安全帶的頂部平面之間,那么行140設定位4。如果頂點位于安全帶的右側(cè)平面外部(或右側(cè)),那么行150設定位6和7。如果頂點位于視口與安全帶的右側(cè)平面之間,那么行160設定位6。如果頂點位于安全帶的底部平面下方,那么行170設定位8和9。如果頂點位于視口與安全帶的底部平面之間,那么行180設定位8。基于用于所述基元的所有頂點的裁剪代碼而針對每一基元做出裁剪決策??苫谝韵聜未a來獲得裁剪決策。200Clip—And=VO.ClipCodeANDVl.ClipCodeANDV2.ClipCode;210Clip—Or=VO.ClipCodeORVl.ClipCodeORV2.ClipCode;220If(Clip_And#0)Discardtheprimitive;230Elseif(Clip_OrAND0x2AA)Cliptheprimitive;240ElsePasstheprimitive;在以上偽代碼中,VO.ClipCode是具有用于基元的第一頂點的裁剪代碼的位圖,Vl.ClipCode是用于第二頂點的裁剪代碼位圖,且V2.ClipCode是用于第三頂點的裁剪代碼位圖。如果基元是線條,那么僅使用用于兩個頂點的VO.ClipCode和Vl.ClipCode。如果基元是點,那么僅使用用于一個頂點的V0.ClipCode。行200執(zhí)行用于基元的三個頂點的三個裁剪代碼位圖的逐位邏輯"與"。行210執(zhí)行用于基元的三個裁剪代碼位圖的逐位邏輯"或"。如果所有三個頂點均位于視口的裁剪平面中的任一者外部,那么行220拋棄所述基元。如果所述基元不被拋棄且任何頂點位于安全帶的任何裁剪平面外部,那么行230裁剪所述基元。如果所述基元不被拋棄或裁剪,那么行240傳遞所述基元。對于3D裁剪,可相對于安全帶的五個裁剪平面以一次一個裁剪平面的方式來裁剪基元。對于每一裁剪平面,可檢査基元的每一邊緣以確定是傳遞、拋棄還是相對于所述裁剪平面裁剪邊緣。對于待裁剪的每一邊緣,針對所述邊緣與裁剪平面之間的交點確定新頂點,丟棄位于裁剪平面外部的頂點,且添加新頂點。圖6說明相對于一個裁剪平面裁剪一個三角形。所述三角形具有標記為V0、VI和V2的三個頂點。可如下確定是否應裁剪頂點V0與VI之間的頂部邊緣。頂點VO與裁剪平面之間的帶符號距離DO可通過頂點V0坐標與裁剪平面系數(shù)的點積或DP4(C0,CP)獲得,其中DP4表示四元素點積,C0包括頂點V0的(x,y,z,w)坐標,且CP包括裁剪平面的(x,y,z,w)系數(shù)。頂點V1與裁剪平面之間的帶符號距離(Dl)也可通過頂點V1坐標與裁剪平面系數(shù)的點積獲得。如果頂點位于裁剪平面內(nèi),那么用于所述頂點的帶符號距離為正,且如果頂點位于裁剪平面外部,那么所述頂點的帶符號距離為負。所述兩個頂點可(a)如果其距離均為正,那么被保留,(b)如果其距離均為負,那么被拋棄,或(c)如果一個距離為正且另一個距離為負,那么被裁剪。如果頂點VO位于裁剪平面內(nèi)部(具有正D0)且頂點Vl位于裁剪平面外部(具有負D1),如圖6所示,那么可通過如下計算內(nèi)插系數(shù)來裁剪所述邊緣t=^i~。等式(1)D0-D1位于裁剪平面與邊緣的交點處的新頂點V3的坐標可如下計算C3=C0*t+Cl*(l-t),等式(2)其中C0、Cl和C3分別是頂點V0、VI和V3的坐標。如果裁剪平面更靠近頂點V0而非頂點V1,那么t將較大,且將給予C0而非C1較多權(quán)重。如果裁剪平面較靠近V1而非V0,那么情況相反。如果頂點VI位于裁剪平面內(nèi)部(具有正D1)且頂點VO位于裁剪平面外部(具有負D0),(其未在圖6中展示),那么可如下計算內(nèi)插系數(shù)t':t'=^^~。等式(3)D1-D0接著可如下計算新頂點V3的坐標<formula>formulaseeoriginaldocumentpage14</formula>等式(4)在等式(1)到(4)中,從內(nèi)部頂點向外部頂點內(nèi)插新頂點。用于內(nèi)插系數(shù)和新頂點坐標的等式依據(jù)哪個頂點在裁剪平面內(nèi)部且哪個頂點在裁剪平面外部??梢耘c頂部邊緣類似的方式裁剪圖6中的三角形的底部邊緣以獲得新頂點V4。用于右側(cè)邊緣的兩個頂點位于裁剪平面外部,且將具有負距離。將拋棄這兩個頂點。由現(xiàn)有頂點V0以及新頂點V3和V4形成新三角形??上鄬τ诹硪徊眉羝矫娌眉舸诵氯切?。用于基元(例如,三角形)的3D裁剪可在針對五個裁剪平面的五個裁剪進程中執(zhí)行。表1列舉所述五個裁剪平面、可執(zhí)行裁剪的次序和用于每一裁剪平面的系數(shù)。在此設計中,相對于z近平面執(zhí)行裁剪,接著相對于左側(cè)平面,接著是頂部平面,接著是右側(cè)平面,且最后是底部平面。還可以其它次序執(zhí)行裁剪。表1<table>tableseeoriginaldocumentpage15</column></row><table>一般來說,可相對于裁剪平面通過以下操作來裁剪多邊形(a)圍繞多邊形的邊緣穿越以及(b)相對于裁剪平面裁剪每一邊緣。對于每一邊緣,首先確定所述邊緣是否與裁剪平面相交,且如果是,那么針對交點計算新頂點且替換位于裁剪平面外部的頂點。頂點數(shù)目可在相對于裁剪平面裁剪之后增加。圖7展示用于基元(例如,三角形或線條)的3D裁剪的緩沖器的設計??稍?D裁剪過程期間針對所述基元獲得多達八個頂點。頂點緩沖器710存儲用于待裁剪的基元的頂點坐標和屬性內(nèi)插系數(shù)。頂點緩沖器710具有索引為0到8的九個位置。每一頂點緩沖器位置可存儲用于一個頂點的(x,y,z,w)坐標和屬性內(nèi)插系數(shù)(a,(3)。每一頂點緩沖器位置還具有有效/無效旗標,其指示所述緩沖器位置是否正存儲有效頂點。頂點緩沖器710在第一裁剪進程之前初始化且在每一裁剪進程期間和之后被更新。讀取索引緩沖器720存儲裁剪進程開始時的用于所述基元的頂點的索引。這些索引指向頂點緩沖器710的存儲所述頂點的位置。讀取索引緩沖器720具有索引為0到7的八個位置。每一讀取索引緩沖器位置可存儲用于一個頂點緩沖器位置的指針(或索引)。讀取索引緩沖器720在每一裁剪進程之前確定。寫入索引緩沖器730存儲在裁剪進程期間和之后的用于所述基元的頂點的索引。寫入索引緩沖器730具有索引為0到7的八個位置。每一寫入索引緩沖器位置可存儲用于一個頂點緩沖器位置的指針(或索引)。寫入索引緩沖器730在每一裁剪進程期間和之后被更新。系數(shù)緩沖器740存儲用于頂點的屬性內(nèi)插系數(shù)。系數(shù)緩沖器740包括索引為0到T-l的T個位置,其中T可為任何值。每一系數(shù)緩沖器位置可存儲用于一個頂點的屬性內(nèi)插系數(shù)。每一系數(shù)緩沖器位置還具有已用/未用旗標,其指示所述緩沖器位置是否正存儲用于有效頂點的系數(shù)。在完成所有五個裁剪進程之后,在系數(shù)緩沖器740的未用位置中保存用于頂點緩沖器710中的所有有效頂點的屬性內(nèi)插系數(shù)。如果稍后拋棄給定頂點(例如,通過圖2中的光柵化器130或早期深度/模版測試單元140),那么將用于所述頂點的旗標設定為未用,且緩沖器位置可用于存儲用于另一頂點的系數(shù)。緩沖器710、720和730在針對z近平面的第一裁剪進程之前被初始化。緩沖器710可在位置0中存儲用于頂點VO的頂點坐標CO和屬性內(nèi)插系數(shù)AO,在位置1中存儲用于頂點VI的坐標C1和系數(shù)Al,且在位置2中存儲用于頂點V2的坐標C2和系數(shù)A2。Ck包括用于頂點Vk的(x,y,z,w)坐標,且Ak包括用于頂點Vk的(a,P)系數(shù),其中k=0,1,2。AO等于用于頂點VO的(1.0,0.0),Al等于用于頂點VI的(0.0,1.0),且A2等于用于頂點V2的(0.0,0.0)。緩沖器710的位置0、l和2被設定為有效,且位置3到8被設定為有效。讀取索引緩沖器720分別在讀取索引緩沖器位置0、1、2和3中存儲頂點緩沖器索引O、1、2、0(其是到緩沖器710中的頂點VO、VI、V2禾QV0的指針)。所述四個頂點緩沖器索引0、1、2、0圍繞待裁剪的基元做出一個完整環(huán)路。變量Count—old指示裁剪進程開始時的頂點數(shù)目且針對三角形而初始化為三。寫入頂點緩沖器730在每一裁剪進程開始時為空(圖7中未展示)。變量Count—new指示當前裁剪進程的頂點數(shù)目,且在裁剪進程開始時初始化為零。對于線條,僅存在兩個頂點VO和VI。在第一裁剪進程之前,頂點緩沖器710的位置O存儲用于第一頂點的CO和A0,且位置1存儲用于第二頂點的Cl和Al。讀取索引緩沖器720在前兩個位置中存儲0和1。Count—old被設定為一??苫谝韵聜未a來執(zhí)行相對于安全帶的第i個裁剪平面(其中i=0,...,4)裁剪基元。300If((Clip—OrAND(2(2*i)))==0)Skipclippingforthisplane;310Else{320Count—new=0;330Last—dist=DP4(VB[readlB],plane[i]);340For(k=1;k^Count—old){350New—dist=DP4(VB[readlB[k]],plane[i]);16360If(Last—dist^0ANDNew—dist^0)〃V[k-1]和V[k]兩者均在平面內(nèi)部370writeIB[Count—new++]=readIB[k-l];〃直接接受V[k-l]380Else(Last—dist20ANDNew—dist<0){〃V[k-1]在內(nèi)部且V[k]在外部3卯writeIB[Count—new++]=readIB[k-l];〃直接接受V[k-l]400t=-New—dist/(Last—dist-New—dist);〃內(nèi)插新頂點410VB[J]=VB[readIB[k-l]]*t+VB[readIB[k]]*(1-t);420writeIB[Count—new++]=J;}〃J是VB中的空位置430Elseif(Last—dist<0ANDNew—dist^0){〃V[k-1]在外部且V[k]在內(nèi)部440t=Last一dist/(Last—dist-New—dist);〃內(nèi)插新頂點450VB[J]=VB[readIB[k]]*t+VB[readIB[k-l]]*(1-t);460writeIB[Count—new++]=J;}470Else〃V[k-1]和V[k]兩者均在外部480donothing;490Last—dist-New—dist;}}500If(triangletype){510writeIB[Count—new]=writeIB;520If(Count_new<3)Droptheprimitive;}530Elseif(New_dist20){540writeIB[l]=readIB[l];}550Elseif(Count—new<1)Droptheprimitive;560ElseCount—new=1;570UpdateVBvalidflagswithwriteIB;580SwitchrolesofreadIBandwriteIB;590Countold=Count—new;〃三角形類型〃可省略最后一個平面〃現(xiàn)在簡并三角形〃線條類型在以上偽代碼中,如果沒有頂點位于第i個平面外部,那么行300跳過針對第i個平面的裁剪。否則,行310到5卯相對于第i個平面執(zhí)行裁剪。行330計算頂點V與第i個平面之間的帶符號距離,其中""表示存儲在讀取索引緩沖器的位置O中的頂點緩沖器索弓1。行340循環(huán)穿過讀取索引緩沖器中的剩余頂點(其中k=l,...,C0unt_0ld),且本質(zhì)上穿越所述基元的所有邊緣。行350到4卯針對頂點V[k-l]與V[k]之間的第k個邊緣執(zhí)行裁剪(如果需要的話)。行350計算頂點V[k]與第i個平面之間的帶符號距離。17行360確定頂點V[k-l]和V[k]是否具有正距離且兩者均在第i個平面內(nèi)部。如果是,那么行370將頂點V[k-l]保存在寫入索引緩沖器中。行380確定是否頂點V[k-l]在第i個平面內(nèi)部且頂點V[k]在第i個平面外部。如果是,那么行3卯將頂點V[k-l]保存在寫入索引緩沖器中。行400計算內(nèi)插系數(shù),如等式(1)中所示。行410計算新頂點的坐標,如等式(2)中所示,且將所述新頂點坐標保存在頂點緩沖器的空位置J中。不在頂點V[k]坐標上保存新頂點坐標,所述頂點V[k]坐標用于下一邊緣。從第i個平面內(nèi)部向外部且針對六個分量x、y、z、w、a和p執(zhí)行內(nèi)插。行420將新頂點保存在寫入索引緩沖器中。行430確定是否頂點V[k-l]在第i個平面外部且頂點V[k]在第i個平面內(nèi)部。如果是,那么行440計算內(nèi)插系數(shù),如等式(3)中所示。行450計算新頂點的坐標,如等式(4)中所示,且將所述新頂點坐標保存在頂點緩沖器的空位置J中。行460將新頂點而非頂點V[k-l]保存在寫入索引緩沖器中。如果頂點V[k-l]和V[k]兩者均在第i個平面外部,那么到達行470。在此情況下,不保存頂點V[k-l]。在已相對于第i個平面裁剪所有邊緣之后,行490將頂點V[k]的距離保存為下一邊緣的最后距離。行500到590執(zhí)行用于相對于下一平面裁剪的準備。如果基元為三角形,那么行510將頂點V[O]保存在寫入索引緩沖器中作為最后頂點。這形成閉合多邊形,其中頂點V[O]作為所述多邊形的第一和最后頂點。如果頂點數(shù)目小于三,那么行520丟棄所述基元。如果基元為線條,那么行530確定頂點V[l]是否在第i個平面內(nèi)部。如果是,那么行540將頂點V[l]保存在寫入索引緩沖器中。行550確定頂點數(shù)目是否小于一,且如果是,那么拋棄所述基元。行570通過將未包括在寫入索引緩沖器中的所有位置標記為無效來更新頂點緩沖器。通過行580針對第(i+l)個平面切換讀取和寫入索引緩沖器的針對第i個平面的角色。用于第i個平面的寫入索引緩沖器用作用于第(i+l)個平面的讀取索引緩沖器,且用于第i個平面的讀取索引緩沖器用作用于第(i+l)個平面的寫入索引緩沖器。在相對于第i個平面裁剪之后的頂點數(shù)目在行5卯中用作用于第(i+l)個平面的裁剪進程開始時的頂點數(shù)目。接著可以與針對第i個平面相同的方式執(zhí)行針對第(i+l)個平面的裁剪。參看圖6中所示的實例,如果頂點VO在裁剪平面內(nèi)部且頂點VI和V2在裁剪平面外部,那么頂點緩沖器、讀取索引緩沖器和寫入索引緩沖器的在裁剪進程開始和結(jié)束時的內(nèi)容可給定為18裁剪進程的開始裁剪進程的結(jié)束VB={V0,VI,V2,x,x,x,x,x}ReadIB={0,1,2,0,x,x,x,x}WriteIB={x,x,x,x,x,x,x,VB={V0,x,x,V3,V4,x,x,x}ReadIB={0,1,2,0,x,x,x,x}WriteIB={0,3,4,0,x,x,x,x}其中"x"表示有效條目。頂點緩沖器的位置1和2在裁剪平面期間存儲頂點VI和V2。行500在裁剪平面結(jié)束時將這些位置標記為無效。所述基元在裁剪之后由頂點VO、V3禾卩V4界定。如果頂點VO在裁剪平面外部且頂點VI和V2在裁剪平面內(nèi)部,那么所述緩沖器的內(nèi)容可給定為-VB={VO,VI,V2,x,x,x,x,x}VB={x,VI,V2,V3,V4,x,x,x}ReadIB={0,1,2,0,x,x,x,x}ReadIB={0,1,2,0,x,x,x,x}WriteIB={x,x,x,x,x,x,x,x}WriteIB={3,1,2,4,3,x,x,x}所述基元在裁剪之后由四個頂點V3、VI、V2和V4界定。在相對于所有五個平面裁剪之后,所述結(jié)果可為具有三個以上頂點的多邊形。在此情況下,可使用存儲在頂點緩沖器中的有效頂點的坐標來針對所述多邊形形成新的三角形。3D裁剪所產(chǎn)生的所有三角形可發(fā)送到管線中的下一級。用于新頂點的屬性內(nèi)插系數(shù)可存儲在系數(shù)緩沖器中以供單元250使用。單元250計算用于3D裁剪所產(chǎn)生的新頂點的屬性分量值。單元250可在執(zhí)行屬性梯度設置和屬性內(nèi)插之前計算這些屬性分量值。單元250還可借用用于屬性梯度設置和屬性內(nèi)插的ALU來執(zhí)行新頂點屬性計算。單元250可如下計算用于新頂點的屬性分量值。如果選擇恒定屬性內(nèi)插模式,那么將用于新頂點的屬性分量值設置為用于領先頂點的屬性分量值。否則,可用存儲在系數(shù)緩沖器740中的系數(shù)(a,(3)執(zhí)行線性內(nèi)插,如下newV.comp[j]=VO.comp[j]*a+Vl.comp[j]*(3+V2.comp[j]*(l隱a-卩),等式(5)其中Vk.comp[j]是用于頂點Vk的第j個分量,其中k-0,1,2,且newV.comp[j]是用于新頂點的第j個分量。裁剪進程的開始裁剪進程的結(jié)束在等式(5)中,頂點V0、V1和V2是已被裁剪且產(chǎn)生新頂點的原始基元的頂點?;谟糜陧旤cV0、V1和V2的屬性分量值(其可由頂點高速緩沖存儲器180提供)以及針對新頂點計算的內(nèi)插系數(shù)a和P(其存儲在系數(shù)緩沖器740中)來確定用于新頂點的屬性分量值??舍槍γ恳粚傩苑至繄?zhí)行等式(5)中的計算??蓪⒂糜谛马旤c的屬性分量值傳遞到屬性梯度設置和屬性內(nèi)插。單元250可首先計算用于所有新頂點的所有分量的屬性分量值,且接著執(zhí)行屬性梯度設置和屬性內(nèi)插。或者,單元250可同時處理一個或一些分量。對于每一分量子集,單元250可針對此分量子集執(zhí)行新頂點屬性計算,接著進行屬性梯度設置和屬性內(nèi)插。圖2所示的設計使用用于其它3D圖形功能的處理單元來有效地執(zhí)行3D裁剪。可通過借用單元220中用于視口變換的ALU來執(zhí)行相對于裁剪平面裁剪基元??赏ㄟ^借用單元250中用于屬性梯度設置和屬性內(nèi)插的ALU來執(zhí)行新頂點屬性計算。當使用恰當安全帶大小時,必須裁剪基元的可能性可能較低(例如,較少百分比)。在此情況下,再次使用ALU來執(zhí)行3D裁剪可在最小程度上影響性能。少量額外硬件可足以在硬件中支持3D裁剪。GB—Scale的一些小倍增和一些比較器可用于產(chǎn)生裁剪代碼且做出裁剪決策。少量小緩沖器710、720、730和740可用于存儲相對于平面裁剪的中間結(jié)果且存儲用于新頂點的屬性內(nèi)插系數(shù)。圖8展示圖2中的GPU200內(nèi)的3D裁剪、三角形設置和深度梯度設置單元220的設計的框圖。裁剪代碼產(chǎn)生器810接收頂點在裁剪空間中的坐標(或頂點裁剪坐標)和安全帶參數(shù),例如GB—Scale—X、GB_Scale—Y禾tlGB—Scale—Z。單元810產(chǎn)生用于每一頂點的裁剪代碼,例如上文用偽代碼的行IOO到180所描述。單元820接收用于頂點的裁剪代碼和指示每一基元的頂點的基元信息。單元820基于用于基元的所有頂點的裁剪代碼來針對每一基元做出裁剪決策,例如上文用偽代碼的行200到240所描述。裁剪執(zhí)行單元830基于單元820所提供的裁剪決策而傳遞、拋棄或裁剪每一基元,并將頂點坐標提供到頂點緩沖器710。針對待裁剪的每一基元,單元830基于安全帶參數(shù)和頂點坐標而裁剪所述基元,例如上文用偽代碼的行300到590所描述。單元840對單元830所提供且存儲在頂點緩沖器710中的基元執(zhí)行視口變換、三角形設置和可能其它圖形功能(例如,剪切和背面剔除)。單元850計算基元的深度梯度系數(shù)。三角形設置單元840和深度梯度設置單元850使用一個或一個以上ALU860。ALU860可由裁剪執(zhí)行單元830借用且用于執(zhí)行裁剪。圖9展示圖2中的GPU200內(nèi)的新頂點屬性計算、屬性梯度設置和屬性內(nèi)插單元20250的設計的框圖。新頂點屬性計算單元910接收基元信息、用于基元的頂點的屬性分量值和用于新頂點的系數(shù)(a,P)。單元910計算用于每一新頂點的屬性分量值,例如等式(5)中所示。單元920基于用于頂點的屬性分量值而計算屬性梯度。單元930基于像素的屏幕坐標和屬性梯度而計算用于每一基元內(nèi)的每一像素的屬性分量值。屬性梯度設置單元920和屬性內(nèi)插單元930使用一個或一個以上ALU940。ALU940可由新頂點屬性計算單元910借用且用于計算用于新頂點的屬性分量值。在圖8所示的設計中,由單元220內(nèi)的三角形設置單元840在視口變換之前執(zhí)行3D裁剪。接著可在視口變換之后由單元840對屏幕空間中的基元執(zhí)行剪切和背面剔除。在另一設計中,3D裁剪被推遲且在視口變換之后執(zhí)行??赏ㄟ^背面剔除拋棄一些基元,這因而可減少待針對3D裁剪處理的基元的數(shù)目。基元可存儲在緩沖器(例如,頂點高速緩沖存儲器180)中,直到完成背面剔除為止,且未被背面剔除拋棄的基元可從緩沖器中檢索且經(jīng)受3D裁剪。或者,通過背面剔除的基元可從屏幕空間變換回到裁剪空間且經(jīng)受3D裁剪。本文中所描述的3D裁剪技術可用于無線通信裝置、手持式裝置、游戲裝置、計算裝置、消費型電子裝置等。下文描述所述技術針對無線通信裝置的示范性使用。圖10展示無線通信系統(tǒng)中的無線通信裝置1000的設計的框圖。無線裝置1000可為蜂窩式電話、計算機、終端、手持機、個人數(shù)字助理(PDA)或某種其它裝置。無線通信系統(tǒng)可為碼分多址(CDMA)系統(tǒng)、全球移動通信系統(tǒng)(GSM)系統(tǒng)或某種其它系統(tǒng)。無線裝置1000能夠經(jīng)由接收路徑和傳輸路徑提供雙向通信。在接收路徑上,基站所傳輸?shù)男盘栍商炀€1012接收且提供到接收器(RCVR)1014。接收器1014調(diào)節(jié)并數(shù)字化所接收的信號且將樣本提供到數(shù)字區(qū)段1020以供進一步處理。在傳輸路徑上,傳輸器(TMTR)1016接收待從數(shù)字區(qū)段1020傳輸?shù)臄?shù)據(jù),處理并調(diào)節(jié)所述數(shù)據(jù),且產(chǎn)生經(jīng)調(diào)制的信號,所述信號經(jīng)由天線1012傳輸?shù)交?。?shù)字區(qū)段1020包括各種處理、接口和存儲器單元,例如調(diào)制解調(diào)器處理器1022、視頻處理器1024、控制器/處理器1026、顯示處理器1028、高級RSIC機器/數(shù)字信號處理器(ARM/DSP)1032、GPU1034、內(nèi)部存儲器1036和外部總線接口(EBI)1038。調(diào)制解調(diào)器處理器1022執(zhí)行用于數(shù)據(jù)傳輸和接收的處理(例如,編碼、調(diào)制、解調(diào)和解碼)。視頻處理器1024針對諸如攝像機、視頻回放和視頻會議等視頻應用對視頻內(nèi)容(例如,靜止圖像、移動視頻和移動文本)執(zhí)行處理??刂破?處理器1026可指導數(shù)字區(qū)段1020內(nèi)的各種處理和接口單元的操作。顯示處理器1028執(zhí)行處理以促進視頻、圖形21和文本在顯示單元1030上的顯示。ARM/DSP1032可針對無線裝置1000執(zhí)行各種類型的處理。GPU1034執(zhí)行圖形處理且可實施圖2中的GPU200、圖7中的緩沖器710到740、圖8中的單元220、圖9中的單元250等。內(nèi)部存儲器1036存儲用于數(shù)字區(qū)段1020內(nèi)的各種單元的數(shù)據(jù)和/或指令。EBI1038促進在數(shù)字區(qū)段1020(例如,內(nèi)部存儲器1036)與主存儲器1040之間的數(shù)據(jù)傳送。數(shù)字區(qū)段1020可用一個或一個以上DSP、微處理器、RISC等實施。數(shù)字區(qū)段1020還可制造在一個或一個以上專用集成電路(ASIC)和/或某種其它類型的集成電路(IC)上。本文中所描述的3D裁剪技術可通過各種方式來實施。舉例來說,這些技術可在硬件、固件、軟件或其組合中實施。對于硬件實施方案來說,用于執(zhí)行3D裁剪的單元(例如,圖7中的緩沖器710到740、圖8中的單元220、圖9中的單元250等)可在一個或一個以上ASIC、DSP、數(shù)字信號處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、電子裝置、經(jīng)設計以執(zhí)行本文中所描述的功能的其它電子單元或其組合內(nèi)實施。本文中所描述的GPU和其它單元可為獨立單元或可為裝置的一部分。所述裝置可為(i)獨立IC,例如圖形IC,(ii)一組一個或一個以上IC,其可包括用于存儲數(shù)據(jù)和/或指令的存儲器IC,(iii)ASIC,例如移動臺調(diào)制解調(diào)器(MSM),其具有集成圖形處理功能,(iv)可嵌入在其它裝置內(nèi)的模塊,(v)蜂窩式電話、無線裝置、手持機或移動單元,(vi)等等。提供先前對本發(fā)明的描述是為了使得所屬領域的技術人員能夠制作或使用本發(fā)明。所屬領域的技術人員將容易明白對本發(fā)明的各種修改,且本文所界定的一般原理可在不脫離本發(fā)明的精神或范圍的情況下應用于其它變型。因此,本發(fā)明不希望限于本文中所描述的實例,而是應被賦予與本文中所揭示的原理和新穎特征一致的最寬范圍。權(quán)利要求1.一種圖形處理單元,其包含第一硬件單元,其用以使用用于第一圖形功能的第一處理單元執(zhí)行對基元的三維(3D)裁剪;以及至少一個緩沖器,其用以存儲所述第一硬件單元所進行的所述3D裁剪的中間結(jié)果。2.根據(jù)權(quán)利要求l所述的圖形處理單元,其進一步包含第二硬件單元,其用以使用用于第二圖形功能的第二處理單元計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值。3.根據(jù)權(quán)利要求1所述的圖形處理單元,其中所述第一處理單元是用于三角形設置和深度梯度設置中的至少一者的算術邏輯單元(ALU)。4.根據(jù)權(quán)利要求2所述的圖形處理單元,其中所述第二處理單元是用于屬性梯度設置和屬性內(nèi)插中的至少一者的算術邏輯單元(ALU)。5.根據(jù)權(quán)利要求1所述的圖形處理單元,其中所述第一處理單元在三角形設置和光柵化之前執(zhí)行3D裁剪。6.根據(jù)權(quán)利要求2所述的圖形處理單元,其中所述第二處理單元在深度和模版測試之后且在屬性梯度設置和屬性內(nèi)插之前計算用于新頂點的屬性分量值。7.根據(jù)權(quán)利要求1所述的圖形處理單元,其中所述基元中的每一者包含至少一個頂點,且其中針對每一基元,所述第一硬件單元產(chǎn)生用于所述基元的每一頂點的裁剪代碼且基于用于所述基元的所有頂點的裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元。8.根據(jù)權(quán)利要求7所述的圖形處理單元,其中所述第一硬件單元相對于多個裁剪平面執(zhí)行3D裁剪,且其中用于每一頂點的所述裁剪代碼指示所述頂點是在所述多個裁剪平面內(nèi)部還是外部。9.根據(jù)權(quán)利要求7所述的圖形處理單元,用于每一頂點的所述裁剪代碼通過包含用于多個裁剪平面中的每一者的一個位的位圖來表示,且其中針對每一頂點,所述第一硬件單元基于所述頂點的坐標和用于所述裁剪平面的參數(shù)而確定用于每一裁剪平面的位值。10.根據(jù)權(quán)利要求8所述的圖形處理單元,其中針對每一基元,所述第一硬件單元在所述基元的所有頂點均在用于視口的裁剪平面中的至少一者外部的情況下拋棄所述基元,在所述基元的至少一個頂點在用于安全帶的裁剪平面外部的情況下裁剪所述基元,及在其它情況下傳遞所述基元。11.根據(jù)權(quán)利要求1所述的圖形處理單元,其中針對待裁剪的每一基元,所述第一硬件單元相對于多個裁剪平面以一次一個裁剪平面的方式裁剪所述基元。12.根據(jù)權(quán)利要求11所述的圖形處理單元,其中所述第一硬件單元再次使用所述至少一個緩沖器來存儲相對于所述多個裁剪平面中的每一者裁剪的中間結(jié)果。13.根據(jù)權(quán)利要求11所述的圖形處理單元,其中為了相對于裁剪平面裁剪基元,所述第一硬件單元以一次一個邊緣的方式處理所述基元的至少一個邊緣,確定是否要相對于所述裁剪平面裁剪每一邊緣,及確定用于待相對于所述裁剪平面裁剪的每一邊緣的新頂點。14.根據(jù)權(quán)利要求11所述的圖形處理單元,其中為了相對于裁剪平面裁剪基元,所述第一硬件單元使用所述第一處理單元計算所述基元的頂點與所述裁剪平面之間的距離,基于所述距離而確定是否要裁剪所述基元的邊緣,及使用所述第一處理單元而計算用于待裁剪的每一邊緣的新頂點的坐標。15.根據(jù)權(quán)利要求14所述的圖形處理單元,其中所述第一硬件單元進一步使用所述第一處理單元計算用于待裁剪的每一邊緣的所述新頂點的內(nèi)插系數(shù),所述內(nèi)插系數(shù)用于計算用于所述新頂點的屬性分量值。16.根據(jù)權(quán)利要求l所述的圖形處理單元,其中所述至少一個緩沖器包含第一緩沖器,其用以存儲被裁剪基元的頂點的坐標。17.根據(jù)權(quán)利要求16所述的圖形處理單元,其中所述第一緩沖器進一步存儲用于計算用于所述被裁剪基元的新頂點的屬性分量值的系數(shù)。18.根據(jù)權(quán)利要求16所述的圖形處理單元,其中所述至少一個緩沖器進一步包含第二緩沖器,其用以在相對于裁剪平面執(zhí)行裁剪之前存儲所述基元的頂點的索引,以及第三緩沖器,其用以在相對于所述裁剪平面執(zhí)行裁剪期間和之后存儲所述基元的頂點的索引。19.根據(jù)權(quán)利要求l所述的圖形處理單元,其中所述至少一個緩沖器包含緩沖器,其用以存儲用于計算用于所裁剪基元的新頂點的屬性分量值的系數(shù)。20.根據(jù)權(quán)利要求19所述的圖形處理單元,其中用于在后續(xù)管線級中被拒絕的所裁剪基元的系數(shù)從所述緩沖器中釋放。21.—種集成電路,其包含第一硬件單元,其用以使用用于第一圖形功能的第一處理單元執(zhí)行對基元的三維(3D)裁剪;以及至少一個緩沖器,其用以存儲所述第一硬件單元所進行的所述3D裁剪的中間結(jié)果。22.根據(jù)權(quán)利要求21所述的集成電路,其進一步包含第二硬件單元,其用以使用用于第二圖形功能的第二處理單元計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值。23.根據(jù)權(quán)利要求21所述的集成電路,其中所述基元中的每一者包含至少一個頂點,且其中針對每一基元,所述第一硬件單元產(chǎn)生用于所述基元的每一頂點的裁剪代碼,基于用于所述基元的所有頂點的裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元,及在所述基元待被裁剪的情況下相對于多個裁剪平面以一次一個裁剪平面的方式裁剪所述基元。24.根據(jù)權(quán)利要求21所述的集成電路,其中所述至少一個緩沖器存儲被裁剪基元的頂點的坐標和用于計算用于所述被裁剪基元的新頂點的屬性分量值的系數(shù)。25.—種方法,其包含在硬件中使用用于第一圖形功能的第一處理單元執(zhí)行對基元的三維(3D)裁剪;以及將所述3D裁剪的中間結(jié)果存儲在至少一個緩沖器中。26.根據(jù)權(quán)利要求25所述的方法,其進一步包含在硬件中使用用于第二圖形功能的第二處理單元計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值。27.根據(jù)權(quán)利要求25所述的方法,其中所述基元中的每一者包含至少一個頂點,且其中所述執(zhí)行3D裁剪包含,針對每一基元,產(chǎn)生用于所述基元的每一頂點的裁剪代碼,基于用于所述基元的所有頂點的裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元,以及在所述基元待被裁剪的情況下,使用所述第一處理單元相對于多個裁剪平面以一次一個裁剪平面的方式裁剪所述基元。28.—種設備,其包含用于在硬件中使用用于第一圖形功能的第一處理單元執(zhí)行對基元的三維(3D)裁剪的裝置;以及用于存儲所述3D裁剪的中間結(jié)果的裝置。29.根據(jù)權(quán)利要求28所述的設備,其進一步包含用于在硬件中使用用于第二圖形功能的第二處理單元計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值的裝置。30.—種無線裝置,其包含圖形處理單元,其可操作以執(zhí)行圖形操作且包含第一硬件單元,其用以使用用于第一圖形功能的第一處理單元執(zhí)行對基元的三維(3D)裁剪,以及至少一個緩沖器,其用以存儲所述第一硬件單元所進行的所述3D裁剪的中間結(jié)果;以及存儲器,其用以存儲用于所述圖形處理單元的數(shù)據(jù)。31.根據(jù)權(quán)利要求30所述的無線裝置,其中所述圖形處理單元進一步包含第二硬件單元,其用以使用用于第二圖形功能的第二處理單元計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值。全文摘要本發(fā)明提供一種圖形處理單元(GPU),其使用用于其它圖形功能的處理單元來有效地執(zhí)行三維(3D)裁剪。所述GPU包括第一和第二硬件單元和至少一個緩沖器。所述第一硬件單元使用用于第一圖形功能的第一處理單元執(zhí)行對基元的3D裁剪,所述第一處理單元例如為用于三角形設置、深度梯度設置等的ALU。所述第一硬件單元可通過以下操作執(zhí)行3D裁剪(a)計算用于每一基元的每一頂點的裁剪代碼;(b)基于用于所述基元的所有頂點的所述裁剪代碼而確定是傳遞、拋棄還是裁剪所述基元;以及(c)相對于裁剪平面裁剪待裁剪的每一基元。所述第二硬件單元例如使用用于屬性梯度設置、屬性內(nèi)插等的ALU計算用于從所述3D裁剪產(chǎn)生的新頂點的屬性分量值。所述緩沖器存儲所述3D裁剪的中間結(jié)果。文檔編號G06T15/00GK101529473SQ200780039025公開日2009年9月9日申請日期2007年10月23日優(yōu)先權(quán)日2006年10月23日發(fā)明者春于,令軍·弗蘭克·陳,云杜,焦國方申請人:高通股份有限公司