本發(fā)明涉及圖形的處理,例如用于在顯示屏上進行顯示。
背景技術(shù):
在圖形處理系統(tǒng)中常見的是通過將每個對象的表面細分成被稱為“圖元”的多個相似基本部分來對對象進行渲染以顯示,以允許圖形處理操作更加容易地執(zhí)行。這些圖元通常是簡單多邊形,例如三角形的形式。
圖形圖元通常是利用從要求圖形輸出的應(yīng)用(例如,游戲)接收的圖形繪制指令(請求),通過圖形處理系統(tǒng)的應(yīng)用程序界面來生成的。
在這個級每個圖元通常由一組頂點限定且被表示為一組頂點。針對圖元的每個頂點具有與其相關(guān)聯(lián)的指示在該頂點處的圖元的屬性的一組數(shù)據(jù)(諸如定位、顏色、紋理和其它屬性數(shù)據(jù))。然后,該數(shù)據(jù)例如被用于對圖元進行柵格化和渲染,以生成圖形處理系統(tǒng)的期望輸出。在圖元及其頂點已經(jīng)被生成并且進行了限定時,它們能夠通過圖形處理系統(tǒng)進行處理,例如以便顯示其相關(guān)的對象。
更加準確并且因此更真實地顯示對象的表面的一種方法是使表示對象的圖元和頂點的數(shù)量增加。然而,有時可能不需要這種附加信息,例如如果從遠處觀看對象或者該對象的表面對于觀看者而言處于淺角度,使得即使生成表面幾何圖形(對表面幾何圖形進行渲染),該表面幾何圖形中的精細細節(jié)在經(jīng)渲染的輸出中也將不可見。在這種情況下,對表示對象的精細細節(jié)的大量圖元進行處理是處理資源的一種浪費。
為了顯示對象的更精細級別的細節(jié),如有需要,能夠利用較大的“圖塊”(patch)來表示對象的表面幾何圖形,然后能夠在圖形處理流水線中將附加“鑲嵌圖元”(tessellation primitive)鑲嵌在圖塊內(nèi)。因此,這種圖塊是表示要顯示(渲染)的對象的部分或全部的圖形實體。兩種常見的圖塊形狀是三角形和四邊形(例如,正方形)。該處理被稱為“鑲嵌”,并且存在于例如OpenGL和Direct3D的現(xiàn)代版本中。
圖1描述了如OpenGL和Direct3D中中實現(xiàn)的鑲嵌級10,其包括兩個著色器級11、13和固定功能的鑲嵌器或圖元生成器12。
外殼(hull)著色器(使用Direct3D技術(shù))或控制著色器(使用OpenGL技術(shù))11可操作用于接收圖塊(例如從圖形處理流水線上游級),并且尤其計算“鑲嵌因子”。鑲嵌因子限定所需鑲嵌的程度,并因此限定將由鑲嵌處理生成的鑲嵌圖元的數(shù)量。外殼著色器或控制著色器11還可以通過某種方式來修改圖塊。
鑲嵌因子被傳遞到圖元生成器12,該圖元生成器12進行操作以將圖塊鑲嵌到需要的程度。圖元生成器12通常在抽象的2D參數(shù)空間中對圖塊進行操作。圖塊可以例如在參數(shù)空間中被鑲嵌成多個三角形鑲嵌圖元。圖2示出在參數(shù)空間中三角形圖塊14的示例,圖3示出在同一參數(shù)空間中四邊形圖塊15的示例。在這兩種情況下,圖元生成器12進行操作以將圖塊14、15劃分成更小的三角形鑲嵌圖元,其中鑲嵌圖元的數(shù)量依賴于鑲嵌因子。在所示的兩種情況下,鑲嵌因子是15。這得到存在沿著圖塊14、15的每個邊緣的15個鑲嵌圖元。
鑲嵌圖元的組通常通過鑲嵌頂點坐標對(U,V)的組來描述,其在參數(shù)空間中限定表示鑲嵌圖元的頂點的定位的位置。鑲嵌圖元的組通常還通過限定頂點之間的連接性(即,頂點將如何被“連接起來”以生成該組鑲嵌圖元)的信息來描述。該連接性信息由圖元生成器12來計算。
域著色器(使用Direct3D技術(shù))或評估著色器(使用OpenGL技術(shù))13從控制著色器11接收輸出圖塊并且從圖元生成器12接收鑲嵌頂點坐標對,然后進行操作以將鑲嵌頂點坐標對應(yīng)用到輸出圖塊上,以計算針對輸出圖塊的鑲嵌圖元的頂點的定位。
下游圖元組裝級20利用來自域著色器或評估著色器13的所計算的定位和來自圖元生成器12的連接性信息來對鑲嵌圖元進行組裝,然后將經(jīng)組裝的鑲嵌圖元進一步傳遞到圖形處理流水線的下游級用于以通常方式的進一步處理,諸如柵格化和渲染等。
在一個示例中,由圖元生成器12生成的每個鑲嵌頂點坐標對通過34位來表示。然而,這種34位表示可能是非常低效的,特別是如果圖元生成器12作為一系列計算著色器而不是固定功能的單元來實現(xiàn)的話。這是因為,計算著色器通常需要對存儲器的訪問,而存儲器訪問通常是以2的冪例如32位、64位等來進行的。因此,這種34位表示在被寫入到存儲器之前將通常需要被擴展到64位,并且這可能導(dǎo)致大量帶寬浪費。當然有可能地簡單地使用于該示例中的鑲嵌頂點坐標對的表示中的位數(shù)減小,但是這種簡易方案將不可避免地導(dǎo)致數(shù)據(jù)分辨率損失。
如將要理解的,在圖形處理器中,例如在便攜式設(shè)備中,通常期望在可能的情況下嘗試減少傳遞、存儲并訪問數(shù)據(jù)(例如,生成用于顯示的圖像所需的數(shù)據(jù))所需要的帶寬和存儲器的量,但是優(yōu)選地無需相應(yīng)降低數(shù)據(jù)分辨率。
申請人認為,仍然存在改進用于處理圖形數(shù)據(jù),特別是提供并使用鑲嵌的設(shè)置的技術(shù)的余地。
技術(shù)實現(xiàn)要素:
根據(jù)本發(fā)明的一個方面,提供了一種操作圖形處理流水線的方法,該圖形處理流水線包括鑲嵌級,所述方法包括以下步驟:
所述鑲嵌級,所述鑲嵌級對表示要進行渲染的對象的至少一部分或全部的圖塊進行鑲嵌,其中,對所述圖塊進行鑲嵌包括以下步驟:
生成針對所述圖塊的鑲嵌圖元的頂點的鑲嵌頂點坐標對,所述鑲嵌頂點坐標對利用第一二進制表示來表示;并且
將利用所述第一二進制表示來表示的所述鑲嵌頂點坐標對編碼成第二二進制表示,其中,對所述鑲嵌頂點坐標對進行編碼包括以下步驟:
將利用所述第一二進制表示來表示的所述鑲嵌頂點坐標對映射到能夠利用所述第二二進制表示來表示的經(jīng)映射的坐標對;并且
利用所述第二二進制表示來表示所述經(jīng)映射的坐標對。
根據(jù)本發(fā)明的另一方面,提供一種圖形處理流水線,該圖形處理流水線包括:
鑲嵌級,該鑲嵌級被構(gòu)造成對表示要進行渲染的對象的至少一部分或全部的圖塊進行鑲嵌,其中,所述鑲嵌級被構(gòu)造成:
生成針對所述圖塊的鑲嵌圖元的頂點的鑲嵌頂點坐標對,所述鑲嵌頂點坐標對是利用第一二進制表示來表示的;并且
將利用所述第一二進制表示來表示的所述鑲嵌頂點坐標對編碼成第二二進制表示,其中,所述鑲嵌級被構(gòu)造成:
將利用所述第一二進制表示來表示的所述鑲嵌頂點坐標對映射到能夠利用所述第二二進制表示來表示的經(jīng)映射的坐標對;并且
利用所述第二二進制表示來表示所述經(jīng)映射的坐標對。
在本發(fā)明中,針對圖塊的鑲嵌圖元的頂點的鑲嵌頂點坐標對(例如,限定(2D)參數(shù)空間內(nèi)的位置的鑲嵌頂點坐標對)最初利用第一二進制表示來表示。然后,將鑲嵌頂點坐標對利用第二二進制表示來進行編碼。所述編碼包括將所述鑲嵌頂點坐標對映射到能夠利用所述第二二進制表示來表示的針對所述頂點的經(jīng)映射的坐標對(例如,限定所述參數(shù)空間內(nèi)的另選的或者經(jīng)映射的位置的坐標對)。
因此,本發(fā)明提供一種用于將最初用第一二進制表示來表示的鑲嵌頂點坐標對編碼成(例如,更方便的)第二二進制表示的方法。特別地,申請人已經(jīng)認識到,當對圖塊進行鑲嵌時,實際上將存在針對圖塊的鑲嵌圖元的頂點的一些不被使用的、無效的和/或不可到達的坐標對(例如,限定不被使用的、無效的和/或不可到達的位置的對表對)。申請人已經(jīng)進一步認識到,這些其它的不被使用的、無效的和/或不可到達的坐標對能夠被使用來代替針對圖塊的鑲嵌圖元的頂點的實際的、有效的和/或可以到達的鑲嵌頂點坐標對(例如,限定實際的、有效的和/或可以到達的位置的鑲嵌頂點坐標對),以使得利用第一二進制表示來表示的鑲嵌頂點坐標對能夠利用第二二進制表示來編碼。
此外,由于鑲嵌頂點坐標對被映射(例如而不是簡單地將第一二進制表示截短),因此當需要的時候,例如通過使映射過程反轉(zhuǎn)能夠容易地從經(jīng)映射的坐標對恢復(fù)或“重新映射”鑲嵌頂點坐標對,并且當對鑲嵌頂點坐標對進行編碼時沒有任何信息丟失或數(shù)據(jù)分辨率降低。因此,本發(fā)明能夠例如允許利用第一二進制表示來表示的鑲嵌頂點坐標對利用包括或包含比第一二進制表示少的位(例如,兩個)的第二二進制表示來編碼。這接下來能夠允許減少傳遞、存儲和/或訪問鑲嵌頂點坐標對所需要的帶寬和/或存儲器。
第一二進制表示可以包括或包含n個位,其中,n優(yōu)選為34。第一二進制表示每鑲嵌頂點坐標對的坐標可以包括或包含m個位,其中,m優(yōu)選為n/2,例如17。第一二進制表示可以包括或包含針對鑲嵌頂點坐標對的每個坐標的固定點表示。固定點可以被直接定位在針對鑲嵌頂點坐標對的每個坐標的最高(即,非小數(shù))位之后。因此,第一二進制表示可以包括或包含針對鑲嵌頂點坐標對的每個坐標的m-1個小數(shù)位,其中,m-1優(yōu)選為16。
如上所述,存儲器訪問通常是以2的冪,例如32位、64位等來進行的。因此,第二二進制表示優(yōu)選包括或包含2位的冪,諸如32位、64位等。這例如能夠允許圖形處理流水線能夠比利用第一二進制表示來表示的鑲嵌頂點坐標對更加有效地傳遞、存儲和/或訪問經(jīng)映射的坐標對。第二二進制表示例如可以包括或包含n-2個位,其中,n-2優(yōu)選為32。第二二進制表示每經(jīng)映射的坐標對的坐標可以包括或包含m-1個位,其中,m-1優(yōu)選為16。
鑲嵌頂點坐標對優(yōu)選包括重心坐標對。因此,用于由鑲嵌頂點坐標對限定的位置的參數(shù)空間可以被稱為重心空間??梢岳玫诙M制表示尋址的參數(shù)空間的面積可以小于可以利用第一二進制表示尋址的參數(shù)空間的面積。鑲嵌頂點坐標對可以例如包括一對坐標U,V,其中,0≤U,V≤1。經(jīng)映射的坐標對可以例如包括坐標對U’,V’,其中,0≤U’,V’<1。
如上所述,鑲嵌頂點坐標對優(yōu)選限定針對圖塊的鑲嵌圖元的頂點的參數(shù)空間內(nèi)的有效的和/或可以到達的位置。例如,鑲嵌頂點坐標對可以限定表示圖塊的內(nèi)部的或者更加優(yōu)選地沿著圖塊的邊緣的在參數(shù)空間內(nèi)的定位。
經(jīng)映射的坐標對優(yōu)選地還在參數(shù)空間內(nèi)限定位置。然而,經(jīng)映射的坐標對優(yōu)選地限定針對圖塊的鑲嵌圖元的頂點的無效的和/或不可到達的位置,即,將不通常用來表示針對圖塊的鑲嵌圖元的頂點的定位。
例如,經(jīng)映射的坐標對可以限定表示在圖塊外部的位置的參數(shù)空間內(nèi)的(例如,無效的)定位。在該情況下,圖塊可以是三角形的。例如,圖塊可以具有在(0,0)、(0,1)和(1,0)的頂點,并且經(jīng)映射的坐標對可以包括坐標對U’,V’,其中,U’+V’>1。
經(jīng)映射的坐標對還可以或者替代地在所述參數(shù)空間內(nèi)限定(例如,不可到達的)位置,該位置表示位于所述圖塊內(nèi)但是位于所述參數(shù)空間內(nèi)的表示針對所述圖塊的鑲嵌圖元的頂點能夠(有效地)具有的定位的位置之間的定位,例如,這是因為由鑲嵌級使用和/或可用的鑲嵌的特定類型(例如,“奇數(shù)”或“偶數(shù)”)和/或鑲嵌因子(例如,偶數(shù)或奇數(shù))的緣故。在該情況下,圖塊可以是四邊形的。圖塊可以具有在(0,0)、(0,1)、(1,0)和(1,1)的頂點。經(jīng)映射的坐標對可以限定表示與四邊形圖塊的邊緣相鄰(但優(yōu)選地不位于該邊緣處)的定位。這例如可以利用偶數(shù)鑲嵌因子來容納四邊形圖塊的“偶數(shù)”鑲嵌,其中,任何附加的鑲嵌圖元是從圖塊的中心線向外添加的而不是與邊緣相鄰地添加的。經(jīng)映射的坐標對還可以或者替代地限定表示與四邊形圖塊的中心線相鄰的定位的位置。這例如可以利用偶數(shù)鑲嵌因子容納四邊形圖塊的“奇數(shù)”鑲嵌,其中,任何附加的鑲嵌圖元是遠離圖塊的中心線和/或邊緣添加的。
在特定優(yōu)選實施方式中,經(jīng)映射的坐標對限定(例如,無效的和/或不可到達的)位置,該位置表示將在具有第一形狀的第一圖塊(例如,三角形圖塊)外并且將在具有第二(不同)形狀的第二圖塊(例如,四邊形圖塊)內(nèi)但是在表示針對第二圖塊的鑲嵌圖元的頂點能夠(有效地)具有的定位的位置之間的定位。這能夠例如允許使用相同的映射處理,不論正使用的圖塊形狀(例如,三角形或四邊形)如何。
在特定優(yōu)選實施方式中,經(jīng)映射的坐標對限定表示與第二圖塊的邊緣相鄰(但是優(yōu)選地不位于該邊緣處)并且與第二圖塊的中心線相鄰的定位的位置。這能夠例如允許使用相同的映射處理,不論正使用的鑲嵌的類型(例如,“偶數(shù)”或“奇數(shù)”)和/或鑲嵌因子(例如,偶數(shù)或奇數(shù))如何。
將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的步驟可以依賴于確定應(yīng)當映射的鑲嵌頂點坐標對的鑲嵌級。編碼的步驟因此可以包括確定應(yīng)當進行映射的鑲嵌頂點坐標對,并且響應(yīng)于確定應(yīng)當進行映射的鑲嵌頂點坐標對,執(zhí)行將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的步驟。
確定的步驟可以例如基于鑲嵌頂點坐標對的第一坐標和/或第二坐標的值。例如,可以確定的是,當鑲嵌頂點坐標對包括具有無法利用第二二進制表示來表示的值的至少一個坐標時,該鑲嵌頂點坐標對應(yīng)當進行映射,例如這是因為不存在足夠的第二二進制表示中可用的位來表示該至少一個坐標的該值。
因此,被映射到能夠利用第二二進制表示來表示的經(jīng)映射的坐標對的利用第一二進制表示來表示的鑲嵌頂點坐標對優(yōu)選地包括具有無法利用第二二進制表示來表示的值的至少一個坐標。
在這種實施方式中,確定的步驟可以包括考慮鑲嵌頂點坐標對的第一坐標和/或第二坐標的最高(例如,非小數(shù))位、例如,可以確定的是,當鑲嵌頂點坐標對的第一坐標和/或第二坐標的最高(例如,非小數(shù))位為1時,應(yīng)當對鑲嵌頂點坐標對進行映射。
將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對可以包括任何期望的且合適的映射處理。例如,映射處理可以包括使用查找表或者可以包括應(yīng)用映射算法或映射函數(shù)。映射處理可以包括對鑲嵌頂點坐標對的坐標中的一個或兩個(分別地或者一起)進行映射(例如,替換或更改),以提供經(jīng)映射的坐標對。
在優(yōu)選實施方式中,在映射步驟中使用的特定映射處理依賴于無法利用第二二進制表示來表示的鑲嵌頂點坐標對的特定坐標。因此,進行編碼的步驟還可以包括鑲嵌級識別無法利用第二二進制表示來表示的鑲嵌頂點坐標對的一個或更多個特定坐標,基于所識別的一個或更多個特定表對來選擇映射處理,以及利用所選擇的映射處理將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對。
識別無法利用第二二進制表示來表示的鑲嵌頂點坐標對的一個或更多個特定坐標的步驟可以再次基于鑲嵌頂點坐標對的第一坐標和/或第二坐標的值。在這些實施方式中,識別無法利用第二二進制表示來表示的鑲嵌頂點坐標對的一個或更多個特定坐標的步驟可以包括考慮鑲嵌頂點坐標對的第一坐標和/或第二坐標的最高(例如,非小數(shù))位。例如,當該坐標的最高(例如,非小數(shù))位是1時,鑲嵌頂點坐標對的坐標可以被識別為不能利用第二二進制表示來進行表示。
在優(yōu)選實施方式中,當(僅當)鑲嵌頂點坐標對的第一坐標(U)無法利用第二二進制表示來表示時,可以使用第一映射處理。第一映射處理可以包括根據(jù)第一預(yù)定位組和鑲嵌頂點坐標對的第二坐標(V)的一個或更多個(例如,(例如小數(shù)位的)最高一半)位,生成經(jīng)映射的坐標對的第一坐標(U’)。第一映射處理還可以包括根據(jù)第二預(yù)定位組和鑲嵌頂點坐標對的第二坐標(V)的一個或更多個其它(例如,(例如小數(shù)位的)至少顯著一半)位,生成經(jīng)映射的坐標對的第二坐標(V’)。在這些實施方式中,第一預(yù)定位組和第二預(yù)定位組優(yōu)選將經(jīng)映射的坐標對限制到針對圖塊的鑲嵌圖元的頂點的參數(shù)空間內(nèi)的另外無效的和/或不可到達的位置的區(qū)域。第一預(yù)定位組還優(yōu)選與第二預(yù)定位組不同。
第一映射處理優(yōu)選是唯一可識別的,例如通過在該第一映射處理中使用的特定預(yù)定位組。這例如能夠允許鑲嵌級稍后例如當對經(jīng)映射的坐標對進行解碼時,識別出使用了該第一映射處理。
另選地,當(僅當)鑲嵌頂點坐標對的第二坐標(V)無法利用第二二進制表示來表示時,可以使用第二(不同的)映射處理。第二映射處理可以包括根據(jù)第三預(yù)定位組和鑲嵌頂點坐標對的第一坐標(U)的一個或更多個(例如,(例如小數(shù)位的)最低一半)位,生成經(jīng)映射的坐標對的第一坐標(U’)。第二映射處理還可以包括根據(jù)第四預(yù)定位組和鑲嵌頂點坐標的第一坐標(U)的一個或更多個(例如,(例如小數(shù)位的)最高一半)位,生成經(jīng)映射的坐標對的第二坐標(V’)。再次,第三預(yù)定位組和第四預(yù)定位組優(yōu)選將經(jīng)映射的坐標對限制到針對圖塊的鑲嵌圖元的頂點的參數(shù)空間內(nèi)的另外無效的和/或不可到達的位置的區(qū)域。第三預(yù)定位組還優(yōu)選與第四預(yù)定位組不同。
第二映射處理優(yōu)選是唯一可識別的,例如通過在該第二映射處理中使用的特定預(yù)定位組。這例如能夠允許鑲嵌級稍后例如當對經(jīng)映射的坐標對進行解碼時,識別出使用了該第二映射處理。
在上文中,第四預(yù)定位組可以與第一預(yù)定位組相同。類似地,第三預(yù)定位組可以與第二預(yù)定位組相同。然而,如上所述,第一映射處理優(yōu)選地例如通過這些處理中使用的特定預(yù)定位組而與第二映射處理相區(qū)分。因此,第三預(yù)定位組可以與第一預(yù)定位組不同,和/或第四預(yù)定位組可以與第二預(yù)定位組不同。
另選地,當鑲嵌頂點坐標對的第一坐標(U)和第二坐標(V)都無法利用第二二進制表示來表示時,可以使用第三(不同的)映射處理。第三映射處理可以包括根據(jù)第五和第六預(yù)定位組,生成經(jīng)映射的坐標對的第一坐標(U’)。第三映射處理還可以包括根據(jù)第七和第八預(yù)定位組,生成經(jīng)映射的坐標對的第二坐標(V’)。第五、第六、第七和第八預(yù)定位組優(yōu)選限定針對圖塊的鑲嵌圖元的頂點的參數(shù)空間內(nèi)的另外無效的和/或不可到達的位置。
第三映射處理優(yōu)選是例如通過在該第三映射處理中使用的特定預(yù)定位組而唯一可識別。這例如能夠允許鑲嵌級稍后例如當對經(jīng)映射的坐標對進行解碼時,識別出使用了該第三映射處理。
(如將要在下面更加詳細地論述的,例如當通過鑲嵌級確定出映射不應(yīng)當或者不需要用于一個或更多個其它鑲嵌頂點坐標對時,可以不對通過鑲嵌級生成的該一個或更多個其它鑲嵌頂點坐標對執(zhí)行映射處理。因此,當確定為一個或更多個其它鑲嵌頂點坐標對的第一坐標(U)和第二坐標(V)雙方都能夠利用第二二進制表示來表示時,優(yōu)選地不對這些一個或更多個其它鑲嵌頂點坐標對執(zhí)行映射。然而,這些一個或更多個其它鑲嵌頂點坐標對可以通過鑲嵌級被編碼成第二二進制表示。該編碼可以包括例如通過將第一坐標和/或第二坐標的最高(非小數(shù))位移除來將一個或更多個其它鑲嵌頂點坐標對的第一坐標和/或第二坐標截短,以及利用第二二進制表示來表示經(jīng)截短的第一坐標和第二坐標。)
在優(yōu)選實施方式中,映射的步驟是利用包括(例如,n-2或32位)累加器的處理單元來執(zhí)行的。該單元優(yōu)選被構(gòu)造成接收鑲嵌頂點坐標對的第一坐標的位,并且(例如隨后)接收鑲嵌頂點坐標對的第二坐標的位。該單元還可以被構(gòu)造成接收和/或訪問對所使用的特定映射處理合適的上述預(yù)定位組。
首先,第一坐標的位可以由處理單元接收并且被存儲在累加器中。第一坐標的一個或更多個(例如,(例如小數(shù)位)最高一半)位可以被存儲在累加器中的兩個地方。如將要在下面更加詳細地論述的,這能夠避免稍后在映射處理中將這些一個或更多個位重新定位在累加器內(nèi)部的需要。
然后,可以通過處理單元接收第二坐標的位。此時,處理單元可以確定映射處理例如基于如上所述的鑲嵌頂點坐標對的第一坐標和/或第二坐標的值和/或最高(例如,非小數(shù))位來使用。例如,當?shù)谝蛔鴺说淖罡?例如,非小數(shù))位為1并且第二坐標的最高(例如,非小數(shù))位為0時,處理單元可以執(zhí)行上述的第一映射處理。另選地,當?shù)谝蛔鴺说淖罡?例如,非小數(shù))位為0并且第二坐標的最高(例如,非小數(shù))位為1時,處理單元可以執(zhí)行上述的第二映射處理。另選地,當?shù)谝蛔鴺说淖罡?例如,非小數(shù))位為1并且第二坐標的最高(例如,非小數(shù))位為1時,處理單元可以執(zhí)行上述的第三映射處理。
(如上文中所指示,并且如將要在下文中更加詳細地論述的,例如當通過處理單元確定為不應(yīng)當或者不需要使用映射時,處理單元可以不執(zhí)行對通過鑲嵌級生成的一個或更多個其它鑲嵌頂點坐標對的映射處理。例如,當一個或更多個其它鑲嵌頂點坐標對的第一坐標(U)和第二坐標(V)雙方的最高(例如,非小數(shù))位為0時,可以對這些一個或更多個其它鑲嵌頂點坐標對不執(zhí)行映射。然而,一個或更多個其它鑲嵌頂點坐標對可以利用累加器被編碼成第二二進制表示。在這種情況下,第二坐標的(例如,小數(shù))位可以簡單地酌情被復(fù)制到累加器。鑲嵌頂點坐標對的第一坐標的(例如小數(shù))位優(yōu)選地不在該處理中進行重寫。如上所述,由于鑲嵌頂點坐標對的第一坐標的位優(yōu)選已經(jīng)存在并且正確地進行定位,因此優(yōu)選地不需要將這些位重新定位在累加器內(nèi)部。因此,累加器將包含經(jīng)編碼的(但未經(jīng)映射的)鑲嵌頂點坐標對。)
當正在使用第一映射處理時,鑲嵌頂點坐標對的第二坐標的第一預(yù)定位組和第二預(yù)定位組和合適的(例如,小數(shù))位可以被復(fù)制到累加器中的合適位置。存在于累加器中的鑲嵌頂點坐標對的第一坐標的位優(yōu)選地在該處理中進行重寫,這是由于不再需要這些位。
當正在使用第二映射處理時,第三預(yù)定位組和第四預(yù)定位組可以被復(fù)制到累加器中的合適位置。鑲嵌頂點坐標對的第一坐標的合適的(例如小數(shù))位優(yōu)選地不在該處理中進行重寫。如上所述,由于鑲嵌頂點坐標對的第一坐標的位優(yōu)選已經(jīng)存在并且正確地進行定位,因此優(yōu)選地不需要將這些位重新定位在累加器內(nèi)部。
當正在使用第三映射處理時,第五預(yù)定位組、第六預(yù)定位組、第七預(yù)定位組和第八預(yù)定位組可以被復(fù)制到累加器中的合適位置。存在于累加器中的鑲嵌頂點坐標對的第一坐標的位優(yōu)選地在該處理中進行重寫,這是由于不再需要這些位。
實際上,可以存在針對鑲嵌圖元的多個頂點和/或可以存在針對圖塊的多個鑲嵌圖元。因此,對圖塊進行鑲嵌可以包括生成多個鑲嵌頂點坐標對,每個鑲嵌頂點坐標對利用第一二進制表示來表示。
在廣義的實施方式中,可以是利用第一二進制表示來表示的僅其中一個鑲嵌頂點坐標對按照如上所述的方式被編碼成第二二進制表示。然而,在實際中,利用第一二進制表示來表示的多個鑲嵌頂點坐標對可以按照如上所述的方式被編碼成第二二進制表示。因此,可以對多個鑲嵌頂點坐標對中的每個執(zhí)行如上所述的編碼處理。
類似地,在廣義的實施方式中,可以是利用第一二進制表示來表示的僅其中一個鑲嵌頂點坐標對按照如上所述的方式被映射到能夠利用第二二進制表示來表示的經(jīng)映射的坐標對。然而,在實際上,對鑲嵌頂點坐標對進行編碼可以包括按照如上所述的方式將利用第一二進制表示來表示的多個鑲嵌頂點坐標對映射到能夠利用第二二進制表示來表示的各自經(jīng)映射的坐標對。因此,可以對多個鑲嵌頂點坐標對中的每一個執(zhí)行如上所述的映射處理。然后,經(jīng)映射的坐標對各可以利用第二二進制表示來表示。
如上所述,還可以是如下的情況:對于通過鑲嵌級生成的并且利用第一二進制表示來表示的一個或更多個其它鑲嵌頂點坐標對,通過鑲嵌級確定為不要執(zhí)行任何映射。然而,一個或更多個其它鑲嵌頂點坐標對仍將如上所述地被編碼成第二二進制表示(即,沒有映射)。在這種情況下,對該一個或更多個其它鑲嵌頂點坐標對進行編碼可以包括例如通過將第一坐標和第二坐標的最高(例如非小數(shù))位移除來使各自鑲嵌頂點坐標對的第一坐標和/或第二坐標截短,以及利用第二二進制表示來表示經(jīng)截短的第一坐標和第二坐標。由于第一坐標和第二坐標的經(jīng)截短的部分(例如,最高(例如非小數(shù))位)優(yōu)選地具有值零,因此這種編碼優(yōu)選地不影響一個或更多個其它鑲嵌頂點坐標對的分辨率。如上所述,可以利用包含累加器的單元來執(zhí)行該編碼。
在一些實施方式中,在映射的步驟之前,可以對鑲嵌頂點坐標對的第一坐標和/或第二坐標進行修改。該修改處理例如可以具有使針對圖塊的鑲嵌圖元的頂點的無效的和/或不可到達的位置移動使得這些位置與所使用的參數(shù)空間和/或圖塊的中心線相鄰,而不是跨越該中心線的影響。這接下來可以使得編碼處理以少的成本來實現(xiàn),例如在硬件中。
修改處理優(yōu)選地可以容易地進行反向。例如,修改處理可以自逆,即應(yīng)用修改處理將再次優(yōu)選地不進行修改。另選地,修改處理可以是可逆的,即應(yīng)用修改處理的反向?qū)?yōu)選地不進行修改。
第一坐標和/或第二坐標的修改優(yōu)選地包括使討論中的坐標的一個或更多個位取反。討論中的坐標的其余位在修改處理中優(yōu)選地不進行取反。該特定修改處理通常優(yōu)選,這是由于其能夠以較低的成本來實現(xiàn),例如在硬件中實現(xiàn)。另選地,第一坐標和/或第二坐標的修改可以包括向/從討論中的坐標加上或減去恒定的修改值(例如,0x80)。
(僅)當滿足針對討論中的坐標的位的特定位條件時,可以對鑲嵌頂點坐標對的第一坐標和/或第二坐標進行修改。位條件可以是坐標的第一或更多個位對(例如,(例如小數(shù))位的最高對)不相等和/或坐標的一個或更多個其它特定位等于零。
然后,經(jīng)修改的鑲嵌頂點坐標可以進行如上所述的映射處理。
可以通過鑲嵌級的圖元生成器來執(zhí)行生成鑲嵌頂點坐標對和/或?qū)﹁偳俄旤c坐標對進行編碼的步驟。圖元生成器優(yōu)選被實現(xiàn)為一個或更多個計算著色器。
利用第二二進制表示來表示的經(jīng)編碼的(經(jīng)映射的)鑲嵌頂點坐標對可以通過鑲嵌級(例如,圖元生成器)被寫到存儲器,例如用于鑲嵌級(例如,域著色器或評估著色器)的后續(xù)使用。鑲嵌級(例如,域著色器或評估著色器)因此可以從存儲器讀取經(jīng)編碼的(經(jīng)映射的)鑲嵌頂點坐標對。鑲嵌級(例如,域著色器或評估著色器)然后可以在使用之前對經(jīng)編碼的(經(jīng)映射的)鑲嵌頂點坐標對進行解碼(重新映射)。
鑲嵌級(例如,域著色器或評估著色器)優(yōu)選地還可操作用于根據(jù)經(jīng)編碼的(經(jīng)映射的)坐標對生成針對鑲嵌圖元的頂點的定位。生成針對鑲嵌圖元的頂點的定位可以包括將利用第二二進制表示來表示的經(jīng)編碼的(經(jīng)映射的)坐標對進行解碼回到利用第一二進制表示來表示的(原始)鑲嵌頂點坐標對。然后,能夠通過鑲嵌級根據(jù)經(jīng)解碼的鑲嵌頂點坐標對生成針對鑲嵌圖元的頂點的定位。
對利用第二二進制表示來表示的經(jīng)編碼的(經(jīng)映射的)坐標對進行解碼可以是如上所述的編碼處理的逆處理。因此,解碼的步驟可以包括將利用第二二進制表示來表示的經(jīng)映射的坐標對重新映射到利用第一二進制表示來表示的鑲嵌頂點坐標對。
類似地,將利用第二二進制表示來表示的經(jīng)映射的坐標對重新映射到鑲嵌頂點坐標對可以是如上所述的映射處理的逆處理。
將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的步驟可以依賴于確定經(jīng)映射的坐標對應(yīng)當重新進行映射的鑲嵌級。解碼的步驟因此還可以包括確定經(jīng)映射的坐標對應(yīng)當重新進行映射,并且響應(yīng)于確定經(jīng)映射的坐標對應(yīng)當重新進行映射,將鑲嵌頂點坐標對重新映射到鑲嵌頂點坐標對。確定的步驟可以是基于經(jīng)映射的坐標對的第一坐標和/或第二坐標的值的。
在優(yōu)選實施方式中,所用的特定重新映射處理依賴于曾被用來生成經(jīng)映射的坐標對的特定映射處理的。解碼的步驟因此還可以包括鑲嵌級識別曾被用來產(chǎn)生經(jīng)映射的坐標對的特定映射處理,基于所識別的該特定映射處理來選擇重新映射處理,以及利用所選擇的重新映射處理將經(jīng)映射的坐標對重新映射回到鑲嵌頂點坐標對。識別被用來對經(jīng)映射的坐標對進行映射的映射處理的步驟可以基于經(jīng)映射的坐標對的第一坐標和/或第二坐標的值。
在優(yōu)選實施方式中,當識別出使用了第一映射處理來生成經(jīng)映射的坐標對時,可以使用第一重新映射處理。第一重新映射處理可以包括將鑲嵌頂點坐標對的第一坐標設(shè)置成預(yù)定值(例如,表示1)。第一重新映射處理還可以包括重新組裝來自經(jīng)映射的坐標對(例如,第一坐標和第二坐標)的合適的(非預(yù)定)位的鑲嵌頂點坐標對的第二坐標。
另選地,當識別出使用了第二映射處理來生成經(jīng)映射的坐標對時,可以使用第二重新映射處理。第二重新映射處理可以包括將鑲嵌頂點坐標對的第二坐標設(shè)置成預(yù)定值(例如,表示1)。第二重新映射處理還可以包括重新組裝來自經(jīng)映射的坐標對(例如,第一坐標和第二坐標)的合適的(非預(yù)定)位的鑲嵌頂點坐標對的第一坐標。
另選地,當識別出使用了第三映射處理來生成經(jīng)映射的坐標對時,可以使用第三重新映射處理。第三重新映射處理可以包括將鑲嵌頂點坐標對的第一坐標設(shè)置成預(yù)定值(例如,表示1)。第三重新映射處理還可以包括將鑲嵌頂點坐標對的第二坐標設(shè)置成預(yù)定值(例如,表示1)。
作為上述重新映射處理的結(jié)果,鑲嵌頂點坐標對可以或者因此利用第一二進制表示來表示。
如上所述,在實際中,在本發(fā)明的實施方式中可以對多個鑲嵌頂點坐標對進行編碼。因此,在本發(fā)明的實施方式中,相應(yīng)地可以對多個鑲嵌頂點坐標對進行解碼。解碼的步驟因此可以包括將利用第二二進制表示來表示的多個坐標對解碼成曾利用第一二進制表示來表示的其各自的(原始)鑲嵌頂點坐標對。
類似地,在實際中,在本發(fā)明的實施方式中可以對多個鑲嵌頂點坐標對進行映射。因此,相應(yīng)地可以按照如上所述的方式對多個鑲嵌頂點坐標對進行重新映射。重新映射的步驟因此可以包括將利用第二二進制表示來表示的多個經(jīng)映射的坐標對重新映射成曾利用第一二進制表示來表示的其各自的(原始)鑲嵌頂點坐標對。
還如上所述,在實際中,可以存在被編碼成第二二進制表示但不被映射到經(jīng)映射的坐標對的一個或更多個其它鑲嵌頂點坐標對。因此,可以存在可以被確定為需要進行解碼而無需重新映射的利用第二二進制表示來表示的一個或更多個其它鑲嵌頂點坐標對。對一個或更多個其它鑲嵌頂點坐標對進行解碼可以包括例如通過向這些坐標對的第一坐標和/或第二坐標加上最高(例如非小數(shù))位(例如0)來使這些坐標對的第一坐標和/或第二坐標擴大。然后,經(jīng)解碼的(原始的)鑲嵌頂點坐標對可以或者因此利用第一二進制表示來表示。
如上所述,在映射處理之前,可以對鑲嵌頂點坐標對的第一坐標和/或第二坐標進行修改。因此,在重新映射處理之后,也可以對鑲嵌頂點坐標對的第一坐標和/或第二坐標進行修改(不修改)。該修改處理可以與如上所述的修改處理相同,例如當該修改處理自反向,或者另選地可以是如上所述的修改處理的逆處理時。
因此,第一坐標和/或第二坐標的修改可以包括使討論中的坐標的一個或更多個位取反。討論中的坐標的其余位在修改處理中優(yōu)選地不進行取反。另選地,第一坐標和/或第二坐標的修改可以包括從/向討論中的坐標減去或加上合適的恒定的修改值(例如,0x80)。
類似地,(僅)當滿足針對討論中的坐標的位的特定位條件時,可以對鑲嵌頂點坐標對的第一坐標和/或第二坐標進行修改。位條件可以是坐標的第一或更多個位對(例如,(例如小數(shù))位的最高對)不相等和/或坐標的一個或更多個其它特定位等于零。
然后,能夠根據(jù)未經(jīng)修改的鑲嵌頂點坐標對生成針對鑲嵌圖元的頂點的定位。
鑲嵌級可以包括可操作用于對圖塊進行鑲嵌以生成針對一個或更多個鑲嵌圖元的一個或更多個頂點的一個或更多個定位的任何合適的級。鑲嵌級優(yōu)選地通過導(dǎo)出一個或更多個經(jīng)解碼的鑲嵌頂點坐標對來生成針對一個或更多個鑲嵌圖元的一個或更多個頂點的一個或更多個定位,所述一個或更多個經(jīng)解碼的鑲嵌頂點坐標對然后被應(yīng)用于討論中的圖塊,以給出要用于一個或更多個頂點的實際的一個或更多個定位。鑲嵌級的輸出優(yōu)選地是然后將被圖元組裝級使用以生成一個或更多個鑲嵌圖元用于圖形處理流水線的其余部分進行處理的一個或更多個頂點的陣列。
鑲嵌級可操作用于執(zhí)行任何期望類型的鑲嵌,諸如三角形或四邊形鑲嵌。然而,其優(yōu)選可操作用于執(zhí)行三角形鑲嵌。如上所述,鑲嵌級可操作用于執(zhí)行任何期望圖塊形狀的鑲嵌,諸如三角形和/或四邊形(例如正方形)圖塊。
鑲嵌級優(yōu)選地可操作用于執(zhí)行作為鑲嵌操作的一部分的多個(著色器)操作。例如,鑲嵌級可以執(zhí)行如下所述的三個主要鑲嵌(著色器)操作。
第一(著色器)操作優(yōu)選地接收(輸入)圖塊,并且計算鑲嵌因子。還可以在這個級指定要使用的鑲嵌的類型(例如“偶數(shù)”或“奇數(shù)”)。在一個實施方式中,還可以通過第一操作以某種方式對圖塊進行修改,以生成輸出圖塊。在優(yōu)在優(yōu)選實施方式中,通過外殼著色器或控制著色器來執(zhí)行第一操作。鑲嵌因子優(yōu)選地限定所需鑲嵌的程度,并因此限定將由鑲嵌處理生成的圖元的數(shù)量。如上所述,圖塊的鑲嵌因子可以包括限定沿著圖塊的每個邊緣需要的鑲嵌圖元的數(shù)量的數(shù)字。計算鑲嵌因子的方式優(yōu)選地通過第一操作(外殼著色器或控制著色器)的配置來限定,并且可以例如依賴于要進行顯示的場景中相機(視點)的定位。
第二(著色器)操作優(yōu)選地接收鑲嵌因子并且將圖塊鑲嵌(劃分)成(例如,多個鑲嵌圖元)所需要的程度(即,依賴于鑲嵌因子)。第二操作優(yōu)選地生成(計算)將要被用來限定針對圖塊被劃分成的一個或更多個鑲嵌圖元的一個或更多個頂點的定位的一個或更多個鑲嵌頂點坐標對。在三角形鑲嵌的情況下,第二操作優(yōu)選地對圖塊進行操作,即對圖塊進行鑲嵌,以生成限定一個或更多個三角形鑲嵌圖元的一個或更多個鑲嵌頂點坐標對。
第二操作還優(yōu)選地以如上所述的方式對一個或更多個鑲嵌頂點坐標對進行編碼(映射)。圖塊所劃分成的一個或更多個鑲嵌圖元因此優(yōu)選地由一個或更多個經(jīng)編碼的(經(jīng)映射的)坐標對來限定。
圖塊所劃分成的一個或更多個鑲嵌圖元還可以通過限定鑲嵌頂點坐標對之間的連接性的信息(即,限定如何將鑲嵌頂點坐標對“連接起來”的信息)來限定。限定鑲嵌頂點坐標對之間的連接性的信息等同于(并且是)限定頂點之間的連接性的信息。圖元生成器可以確定并生成連接性信息。
在優(yōu)選實施方式中,通過圖元生成器來執(zhí)行第二操作。在優(yōu)選實施方式中,圖元生成器優(yōu)選被實現(xiàn)為一個或更多個計算著色器。
鑲嵌級的第三操作優(yōu)選地從第一操作接收(輸出的)圖塊,以及從第二操作接收一個或更多個經(jīng)編碼的(經(jīng)映射的)坐標對,以如上所述的方式將一個或更多個坐標對解碼(重新映射)成一個或更多個(原始)鑲嵌頂點坐標對,并且將該一個或更多個鑲嵌頂點坐標對應(yīng)用到圖塊,以優(yōu)選地計算一個或更多個頂點的一個或更多個定位(即,計算針對圖塊正被鑲嵌成的一個或更多個圖元的一個或更多個頂點的一個或更多個定位)。在優(yōu)選實施方式中,通過域著色器或評估著色器來執(zhí)行第三操作。
圖形處理流水線還可以包括圖元組裝級,該圖元組裝級被構(gòu)造成利用針對由鑲嵌級生成的一個或更多個頂點的一個或更多個定位來組裝一個或更多個鑲嵌圖元。
圖元組裝級優(yōu)選可操作用于組裝一個或更多個鑲嵌圖元,以例如通過圖元組裝級下游的圖形處理流水線的一個或更多個處理級的處理。圖元組裝級可以是利用一個或更多個頂點的一個或更多個定位,并且可選地利用限定頂點之間的連接性的信息,來組裝圖元的任何合適的這種級。圖元組裝級優(yōu)選地可操作用于利用來自鑲嵌級的一個或更多個頂點的一個或更多個定位,并且可選地利用來自鑲嵌級的限定頂點之間的連接性的信息。
圖形處理流水線優(yōu)選地還包括位于圖元組裝級下游的多個處理級,其包括可操作用于對經(jīng)組裝的一個或更多個鑲嵌圖元進行柵格化以生成要處理的圖形片段的至少一個柵格化器,以及可操作用于對由柵格化器生成的片段進行處理以生成經(jīng)渲染的片段數(shù)據(jù)的渲染器。
由圖元組裝級進行組裝的鑲嵌圖元優(yōu)選地通過諸如柵格化器和渲染器的圖形處理流水線的其余處理級來進行處理。
圖形處理流水線的柵格化器可以生成要渲染的圖形片段,優(yōu)選地以生成用于對期望圖形輸出(諸如要顯示的幀)的采樣點的經(jīng)渲染的圖形數(shù)據(jù)。由柵格化器生成的每個圖形片段優(yōu)選地具有與其相關(guān)聯(lián)的一組圖形輸出的采樣點,并且被用來生成用于與該片段相關(guān)聯(lián)的該組采樣點的一個或更多個采樣點的經(jīng)渲染的圖形數(shù)據(jù)。
柵格化器可以被構(gòu)造成以任何期望的且合適的方式來生成片段以渲染。其可以接收例如要進行柵格化的圖元,針對多組采樣點定位對這些圖元進行測試,并且因此生成表示圖元的片段。
渲染器應(yīng)當優(yōu)選地對由柵格化器生成的片段進行處理,以生成用于片段表示的(被覆蓋的)采樣點的經(jīng)渲染的片段數(shù)據(jù)。這些渲染過程可以包括例如片段著色、混合、紋理映射等。渲染器優(yōu)選地具有可編程片段著色器的形式。
圖形處理流水線還可以包括圖形處理流水線可以包括的諸如早期深度(或者早期深度和模板)測試器、后期深度(或者深度和模板)測試器、混合器等的任何其它合適的且期望的處理級。
如將要理解的,圖塊是要進行渲染的表示對象的一部分或全部(例如對象的表面的一部分或全部)的圖形實體。圖塊可以是諸如貝塞爾表面的表面,并且可以由多個控制點來限定??梢岳缋脧囊髨D形輸出的應(yīng)用(例如,游戲)接收(請求)、并且被傳遞到鑲嵌級用于鑲嵌的圖形繪制指令,通過圖形處理系統(tǒng)的應(yīng)用程序界面來生成圖塊。
如將要理解的,雖然已經(jīng)具體參照表示要處理的對象的全部或部分的單個圖塊的處理對本發(fā)明進行了描述,但是本發(fā)明可以并且優(yōu)選地被用于要處理的多個圖塊(不論是相同的還是不同的對象),并且優(yōu)選地每當需要圖塊鑲嵌時使用。因此,在需要鑲嵌的情況下,例如其將被重復(fù)用于進行渲染的對象的每個圖塊,并且用于要渲染的每個對象的多個圖塊。因此,將要理解的是,由于要渲染的對象可以由多個圖塊來表示,實際上本發(fā)明的方法可以對需要用以表示該對象的多個圖塊(例如,每個和/或每一個圖塊)執(zhí)行。還將要理解的是,由于要顯示的場景可以包括要渲染的多個對象,因此實際上本發(fā)明的方法可以對需要用以顯示該場景的多個對象(例如,每個和/或每一個對象)執(zhí)行。
按照本發(fā)明的方式的實際操作能夠根據(jù)需要地進行觸發(fā)和控制。例如,并且優(yōu)選地,一個或更多個繪制調(diào)用能夠被用來通過啟用鑲嵌來觸發(fā)該操作。
本發(fā)明能夠被用于圖形處理流水線可以被用來生成的全部形式的輸出,例如用于顯示的幀、渲染到紋理輸出等。
在實施方式中,可以在產(chǎn)生并輸出例如寫到用于顯示裝置的幀緩存的所渲染片段數(shù)據(jù)的單個圖形處理平臺上來實現(xiàn)本發(fā)明的各種功能。
在一些實施方式中,所述圖形處理流水線包括和/或與存儲本文描述的所述數(shù)據(jù)和/或存儲用于執(zhí)行本文描述的過程的一個或更多個存儲器和/或存儲設(shè)備進行通信。圖形處理流水線還可以與主微處理器進行通信,和/或利用顯示器用于基于由圖形處理器生成的數(shù)據(jù)來顯示圖像。
本發(fā)明可以在任意合適的系統(tǒng)(諸如合適配置的基于微處理器的系統(tǒng))中實施。在實施方式中,本發(fā)明在計算機和/或基于微處理器的系統(tǒng)中實施。
可以以任意期望且合適的方式來實現(xiàn)本發(fā)明的各種功能。例如,如所期望的,本發(fā)明的功能能夠在硬件或軟件中實現(xiàn)。由此,例如,除非另外指示,本發(fā)明的各種功能元件和“裝置”可以包括可操作為,執(zhí)行各種功能等的合適的處理器或多個處理器、控制器或多個控制器、功能單元、電路、處理邏輯、微處理器布置等(諸如適當專用的硬件元件和/或可以被編程為以期望方式操作的可編程硬件元件)。
這里還應(yīng)注意,如將由本領(lǐng)域技術(shù)人員理解的,可以復(fù)制和/或在給定處理器上并行實現(xiàn)本發(fā)明的各種功能等。同樣地,各種處理級可以依據(jù)要求共享處理電路等。
受制于進行上面討論的具體功能需要的任意硬件,圖形處理流水線另外可以包括:圖形處理流水線所包括的普通功能單元等中的任意一個或多個或全部。
本領(lǐng)域技術(shù)人員還將理解的是,如合適的話,本發(fā)明的全部所述的實施方式可以包括,并且在實施方式中確實包括本文所述的特征中的任何一個或多個或者全部。
根據(jù)本發(fā)明的方法可以至少部分使用軟件(例如,計算機程序)來實施。因此可見,當從其他實施方式來看時,本發(fā)明提供:計算機軟件,當安裝在數(shù)據(jù)處理器上時,該計算機軟件具體適用于執(zhí)行本文所述的方法的;計算機程序要素,其包括當該程序元件在數(shù)據(jù)處理器上運行時用于執(zhí)行本文所述的方法的計算機軟件代碼部分;以及計算機程序,當該程序在數(shù)據(jù)處理系統(tǒng)上運行時,該計算機程序包括適用于執(zhí)行本文所述的方法或多種方法的全部步驟的代碼。數(shù)據(jù)處理器可以為微處理器系統(tǒng)、可編程FPGA(現(xiàn)場可編程門陣列)等。
本發(fā)明還擴展為包括計算機軟件載體,該計算機軟件載體包括在用于操作包括數(shù)據(jù)處理器的圖形處理器、渲染器或為微處理器時連同所述數(shù)據(jù)處理器一起使得所述處理器、渲染器或系統(tǒng)進行本發(fā)明的方法的步驟的這種軟件。這種計算機軟件載體可以為物理存儲介質(zhì)(諸如ROM芯片、CD ROM、RAM、閃存或盤),或者可以為信號(諸如電線上的電子信號、諸如到衛(wèi)星的光信號或無線電信號等)。
將要進一步理解的是,并非本發(fā)明的方法的全部步驟都需要由計算機軟件來執(zhí)行,因此從更寬泛的實施方式來看,本發(fā)明提供用于執(zhí)行本文所列出的方法的步驟中的至少一個的計算機軟件和安裝在計算機軟件載體上的這種軟件。
因此,本發(fā)明可以合適地實施為與計算機系統(tǒng)一起使用的計算機程序產(chǎn)品。這種實施可以包括固定在有形非瞬時性介質(zhì)上的一系列計算機可讀指令,該有形非瞬時性介質(zhì)例如有計算機可讀介質(zhì),例如磁盤、CD ROM、ROM、RAM、閃速存儲器或硬盤。這種實施還可以包括通過有形介質(zhì)或者無形地利用無線技術(shù)經(jīng)由調(diào)制解調(diào)器或其它接口裝置可以向計算機系統(tǒng)傳輸?shù)囊幌到y(tǒng)計算機可讀指令,該有形介質(zhì)包括但不限制于光學或模擬通信線路,該無線技術(shù)包括但不限制于微波、紅外或其它傳輸技術(shù)。一系列的計算機可讀指令體現(xiàn)本文之前所述的全部或部分的功能。
本領(lǐng)域技術(shù)人員將理解,這種計算機可讀指令能夠以許多編程語言的形式來編寫,用于很多計算機架構(gòu)或操作系統(tǒng)。進一步地,這種指令可以利用當前或未來的包括但不限制于半導(dǎo)體的任何存儲技術(shù)來存儲,可以是磁性的或光學的,或者可以利用當前或未來包括但不限制于光學、紅外或微波的任何通信技術(shù)來進行發(fā)送??梢韵氲降氖牵@種計算機程序產(chǎn)品可以利用隨附的印刷或電子文檔,例如利用計算機系統(tǒng)在例如系統(tǒng)ROM或固定磁盤上預(yù)加載的壓縮封裝軟件,作為可拆除介質(zhì)進行分配,或者通過網(wǎng)絡(luò)例如因特網(wǎng)或萬維網(wǎng)從服務(wù)器或電子公告板中進行分配。
附圖說明
將通過僅示例的方式并參照附圖描述本發(fā)明的各種實施方式,在附圖中:
圖1示意性地示出包括鑲嵌級的常規(guī)圖形處理流水線的一部分;
圖2示出經(jīng)鑲嵌的三角形圖塊;
圖3示出經(jīng)鑲嵌的四邊形圖塊;
圖4示意性地示出根據(jù)本發(fā)明的實施方式的包括圖形處理流水線和存儲器的圖形處理系統(tǒng);
圖5示意性地示出根據(jù)本發(fā)明的實施方式的包括鑲嵌級的圖形處理流水線的一部分;
圖6示出連同將通常不用于通過陰影指示的鑲嵌頂點的區(qū)域一起的經(jīng)鑲嵌的三角形圖塊;
圖7示出連同將通常不用于通過陰影指示的鑲嵌頂點的區(qū)域一起的經(jīng)鑲嵌的四邊形圖塊;
圖8示出連同將通常不用于通過陰影指示的鑲嵌頂點的區(qū)域一起的另選的經(jīng)鑲嵌的四邊形圖塊;
圖9示出連同將通常不用于通過陰影指示的鑲嵌頂點的區(qū)域一起的相疊加的經(jīng)鑲嵌的三角形和四邊形圖塊;
圖10A和圖10B示出修改鑲嵌頂點坐標的方法;
圖11示出在對鑲嵌頂點坐標對進行編碼之前加載累加器的方法;
圖12示出作為對鑲嵌頂點坐標對進行編碼的處理的一部分的將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的第一映射處理;
圖13示出作為對鑲嵌頂點坐標對進行編碼的處理的一部分的將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的第二映射處理;
圖14示出作為對鑲嵌頂點坐標對進行編碼的處理的一部分的將鑲嵌頂點坐標對映射到經(jīng)映射的坐標對的第三映射處理;以及
圖15示出在不進行映射的情況下對鑲嵌頂點坐標對進行編碼的處理。
具體實施方式
現(xiàn)在將在處理計算機圖形以顯示的場境下描述本發(fā)明的實施方式。
該實施方式特別涉及圖形處理流水線中的鑲嵌操作。如上所述,當要顯示計算機圖形圖像時,該圖像通常首先被定義為一系列圖元(primitive)(多邊形),該圖元然后反過來被劃分(光柵化)為用于圖形渲染的圖形片段。在正常圖形渲染操作期間,渲染器將修改(例如)與各片段關(guān)聯(lián)的顏色(紅色、綠色以及藍色(RGB)和透明度(阿爾法)數(shù)據(jù)),使得可以正確顯示片段。在片段已經(jīng)完全遍歷了渲染器時,其關(guān)聯(lián)數(shù)據(jù)值被存儲在存儲器中,準備用于輸出,例如用于顯示。
圖4示出與本發(fā)明的操作相關(guān)的圖形處理系統(tǒng)的主要元件。如本領(lǐng)域技術(shù)人員將理解的,可以存在圖4中未例示的、圖形處理系統(tǒng)的其它元件。這里還應(yīng)注意,圖4僅是示意性的,并且例如,在實踐中,即使所示的功能單元和流水線級在圖4中被示意性地示出為獨立的級,但它們也可以共享大量硬件電路。
圖4示意性地示出組成用于對圖形圖像進行渲染以便進行顯示的圖形處理系統(tǒng)的一部分的圖形處理流水線1和存儲器2。流水線1包括一系列不同級,每個級執(zhí)行對組成要進行顯示的對象的圖元的不同操作,以使其準備好用于最后的顯示。
流水線中首先是頂點著色器30,該頂點著色器30對針對所生成的輸出的頂點進行頂點著色,并且將經(jīng)過頂點著色的頂點傳遞到鑲嵌級110。
當圖形處理流水線1要產(chǎn)生期望輸出,諸如要進行顯示的幀時,所需要的圖形處理(例如,幀)將作為一個或更多個“繪制調(diào)用”進行處理。每個繪制調(diào)用將包括要進行處理的一個或更多個圖形對象。對于每個繪制調(diào)用,限定要被用于繪制調(diào)用的頂點的相應(yīng)組的頂點數(shù)據(jù)被限定。在優(yōu)選實施方式中,要進行處理的每個對象由一個或更多個“圖塊”來表示,其各表示討論中的對象的區(qū)域。
用于繪制調(diào)用的頂點數(shù)據(jù)被頂點著色器30處理,以將頂點的虛擬三維定位轉(zhuǎn)化成其在屏幕空間中的二維定位。
在已經(jīng)完成了頂點處理時,確定鑲嵌是否被啟用用于繪制調(diào)用。如果鑲嵌尚未被啟用,則處理直接進行到圖元組裝級20。然而,為了當前說明的目的,將假設(shè)鑲嵌已經(jīng)被啟用。在這種情況下,處理中的下一個級是執(zhí)行鑲嵌級110中的鑲嵌。
鑲嵌級110進行操作以將圖塊鑲嵌成多個較小的鑲嵌圖元(這將在下面進一步進行討論)。
然后,鑲嵌級110下游的圖元組裝級20利用圖元的頂點的定位和限定頂點之間的連接性的信息來對圖元進行組裝,并且將經(jīng)組裝的圖元傳遞到柵格化器40。
柵格化級40進行操作,以將組成渲染輸出(例如,要顯示的圖像)的圖元柵格化為單獨圖形片段以處理。為此,柵格化器40接收用于渲染的圖形圖元,將圖元光柵化為采樣點,并生成具有用于渲染圖元的適當定位(表示適當?shù)牟蓸佣ㄎ?的圖形片段。由柵格化器生成的片段然后向上被發(fā)送到流水線的其余部分以處理。
由柵格化器40生成的圖形片段被傳遞到片段著色器50以于渲染(著色)。片段著色級的輸出是例如一組的例如針對表示討論中的輸出的區(qū)域的每個采樣定位的顏色值。
然后,來自片段著色級的經(jīng)渲染的采樣定位通過像素處理器60進行處理,以例如對經(jīng)渲染的采樣定位進行降采樣,以提供實際將被輸出(例如顯示)的像素的經(jīng)渲染的像素數(shù)據(jù)。然后,像素數(shù)據(jù)可以被輸出到主要存儲器2(例如,幀緩沖區(qū)),例如以顯示。
現(xiàn)在,將參照圖5更加詳細地描述鑲嵌級110的操作。
圖5示出與本發(fā)明的操作相關(guān)的鑲嵌級110和圖元組裝級20的主要元件。如本領(lǐng)域技術(shù)人員將理解的,可以存在圖5中未例示的、這些級的其它元件。這里還應(yīng)注意,圖5僅是示意性的,并且例如,在實踐中,即使所示的功能單元和流水線級在圖5中被示意性地示出為獨立的級,但它們也可以共享大量硬件電路。
該實施方式的鑲嵌級110可操作用于執(zhí)行三角形鑲嵌。
鑲嵌級110的第一級111從頂點著色器30接收圖塊數(shù)據(jù),并且計算鑲嵌因子。計算鑲嵌因子的方式可以例如依賴于相機在要顯示的場景中的定位。
鑲嵌級110的第二級112將圖塊鑲嵌成多個三角形鑲嵌圖元,其中所生成的鑲嵌圖元的數(shù)量依賴于鑲嵌因子。
在該實施方式中,第二級112計算一組鑲嵌頂點坐標對,其限定圖塊被劃分成鑲嵌圖元的頂點的定位的重心參數(shù)空間內(nèi)的位置。在該實施方式中,鑲嵌頂點坐標是重心坐標(U,V),并且值的范圍為0.0到1.0。
在該實施方式中,鑲嵌頂點坐標對各由包括34位的第一二進制表示來表示。第一二進制表示的最低17位表示鑲嵌頂點坐標對的第一坐標U,并且第一二進制表示的最高17位表示鑲嵌頂點坐標對的第二坐標V。鑲嵌頂點坐標對的坐標各由包括16小數(shù)位的固定點數(shù)來表示,使得0.0的坐標由0(即,0 0000 0000 00000000)來表示,并且1.0的坐標由65536(即,1 0000 0000 0000 0000)來表示。
在該實施方式中,第二級112將鑲嵌頂點坐標對編碼成包括32位的第二二進制表示。第二二進制表示的最低16位表示經(jīng)編碼的坐標對的第一坐標U’,并且第二二進制表示的最高16位表示經(jīng)編碼的坐標對的第二坐標V’。
在該實施方式中,編碼處理利用參數(shù)空間中的不被使用的、無效的和/或不可到達的位置的區(qū)域,即表示用于鑲嵌圖元的頂點對于圖塊而言將通常不會具有的定位的區(qū)域。現(xiàn)在將參照圖6至圖9來解釋這些區(qū)域。
圖6示出參數(shù)空間中的三角形圖塊116。參數(shù)空間的右下方中的經(jīng)著色的區(qū)域117(即,在U+V>1的情況下)不落入三角形圖塊116中。因此,可以使用經(jīng)著色的區(qū)域117來對鑲嵌頂點坐標對進行編碼(映射),這是由于位于經(jīng)著色的區(qū)域117中的位置對于圖塊116的頂點的定位而言是無效的并且因此將通常不用于表示圖塊116的頂點的位置。
圖7示出參數(shù)空間中的正方形圖塊118。圖塊118具有奇數(shù)鑲嵌因子(15)但是已經(jīng)進行“偶數(shù)”鑲嵌。這使得沿著圖塊的中心線添加窄的鑲嵌圖元。由于鑲嵌圖元被從中心線向外添加,將存在與圖塊118的邊緣相鄰的經(jīng)著色的區(qū)域119,其包括針對圖塊118的頂點的定位的不可到達的位置并且因此將通常不用于表示圖塊118的頂點的定位。因此,經(jīng)著色的區(qū)域119還可以用來對鑲嵌頂點坐標對進行編碼(映射)。
圖8再次示出參數(shù)空間中的正方形圖塊122。圖塊122具有偶數(shù)鑲嵌因子(14)但是已經(jīng)進行“奇數(shù)”鑲嵌的。這再一次使得添加更窄的鑲嵌圖元,但是這次是遠離圖塊112的中心線。由于鑲嵌圖元遠離中心線被添加,將存在沿著中心線的經(jīng)著色的區(qū)域123,其包括針對圖塊122的頂點的定位的不可到達的位置并且因此將通常不用于表示圖塊122的頂點的定位。因此,經(jīng)著色的區(qū)域123還可以用來對鑲嵌頂點坐標對進行編碼(映射)。
圖9示出在參數(shù)空間中連同其經(jīng)著色的區(qū)域一起相疊加的三角形圖塊116、正方形圖塊118和正方形圖塊122。圖9示出不論圖塊的形狀如何并且不論使用的鑲嵌的類型(偶數(shù)或奇數(shù))如何,存在將通常不用于表示頂點的定位的區(qū)域124、125。在該實施方式中,區(qū)域124、125因此被用來對鑲嵌頂點坐標對進行編碼(映射)。
現(xiàn)在將參照圖10A至圖15來描述用于鑲嵌頂點坐標對的編碼處理。
如圖10A中所示,在編碼之前,對鑲嵌頂點坐標對的第一坐標U進行修改,以生成經(jīng)修改的第一坐標Ux。在該實施方式中,Ux包括24位。Ux是通過將U[16:0]復(fù)制到Ux[16:0]而生成的,但是在當U[15]和U[14]不相等并且U[7]為零時的條件下,U[15:8]在被復(fù)制之前被取反。U[23:17]利用零填充。
類似地,在編碼之前,如圖10B中所示,對鑲嵌頂點坐標對的第二坐標V進行修改,以生成經(jīng)修改的第二坐標Vx。在該實施方式中,Vx包括17位。Vx是通過將V[16:0]復(fù)制到Vx[16:0]而生成的,但是在當V[15]和V[14]不相等并且V[7]為零時的條件下,V[15:8]在被復(fù)制之前被取反。
上述修改具有使參數(shù)空間中的無效的和不可到達的位置移動以使得這些位置與參數(shù)空間的中心線相鄰,而不是跨越該中心線。這使得隨后的編碼在硬件中成本較少。
如圖11中所示,Ux然后被復(fù)制到處理單元的累加器A中,用于鑲嵌級110的第二級112,使得A[31:16]=Ux[23:8]且A[15:0]=Ux[15:0]。應(yīng)當注意的是,Ux[15:8]兩次被復(fù)制到累加器。如將要在下面更加詳細地論述的,這能夠避免稍后在編碼處理中將Ux[15:8]重新定位在累加器內(nèi)的需要。
此時,鑲嵌級110的第二級112的處理單元將確定要應(yīng)用到鑲嵌頂點坐標對的映射處理(如果有的話)。
特別地,當A[24]=1(即Ux[16]=1)并且Vx[16]=0時,U是65536(即1.0)但V不是。在這種情況下,使用如圖12中所示的第一映射處理。這里,Vx[15:8]被復(fù)制到A[7:0],具有值0x7F的第一預(yù)定位組被復(fù)制到A[15:8],Vx[7:0]被復(fù)制到A[23:16],并且具有值0xFF的第二預(yù)定位組被復(fù)制到A[31:24]。這將鑲嵌頂點坐標對映射到如圖9中所示的區(qū)域125。
另外,當A[24]=0(即Ux[16]=0)并且Vx[16]=1時,V是65536(即1.0)但U不是。在這種情況下,使用如圖13中所示的第二映射處理。這里,具有值0xFF的第三預(yù)定位組被復(fù)制到A[15:8],并且具有值0x7F的第四預(yù)定位組被復(fù)制到A[31:24]。如上所述,A[23:16]已經(jīng)包括Ux[15:8],并且A[7:0]已經(jīng)包括Ux[7:0],所以不需要將這些位復(fù)制到累加器。這將鑲嵌頂點坐標對映射到如圖9中所示的區(qū)域124。
另外,當A[24]=1(即Ux[16]=1)并且Vx[16]=1時,U和V都是65536(即1.0)。在這種情況下,使用如圖14中所示的第三映射處理。這里,具有值0x00的第五預(yù)定位組被復(fù)制到A[7:0],具有值0xFF的第六預(yù)定位組被復(fù)制到A[15:8],具有值0x80的第七預(yù)定位組被復(fù)制到A[23:16],并且具有值0x80的第八預(yù)定位組被復(fù)制到A[31:24]。這將鑲嵌頂點坐標對映射到如圖9中所示的區(qū)域124的唯一位置。
上述映射處理的結(jié)果是,A[15:0]包括利用第二二進制表示來進行編碼的經(jīng)映射的坐標對的第一經(jīng)映射的坐標U’并且A[31:16]包括第二經(jīng)映射的坐標V’。
另選地,當A[24]=0(即Ux[16]=0)并且Vx[16]=0時,U和V都不是是65536(即1.0)。在這種情況下,不應(yīng)用映射處理。然而,仍然利用圖15中所示的編碼處理將鑲嵌頂點坐標編碼成第二二進制表示。這里,Vx[15:0]被復(fù)制到A[31:16]。如上所述,A[15:0]已經(jīng)包括Ux[15:0],所以不需要將這些位復(fù)制到累加器。該處理的結(jié)果是A[15:0]包括第一坐標U’,并且A[31:16]包括利用第二二進制表示進行編碼的第二坐標V’。
在該實施方式中,如果合適的話,對每個鑲嵌頂點對應(yīng)用上述編碼(映射)處理中的一種,使得針對圖塊獲得一組合適的經(jīng)編碼的(經(jīng)映射的)坐標對。
因此,鑲嵌頂點坐標對通過鑲嵌級110的第二級112被編碼成第二二進制表示。由于第二二進制表示包括32位(即,2位的冪)而不是34位,因此經(jīng)編碼的坐標對A[31:0]能夠在被鑲嵌級110的第三級113使用之前被更加有效地存儲在存儲器中。具體地,該實施方式每頂點將節(jié)省4字節(jié)的內(nèi)存寫入和4字節(jié)的內(nèi)存讀取。因此,假設(shè)每秒2.5億個三角形的三角形圖元率和每三角形估計0.6個頂點(即,每秒1.5億個頂點),則該實施方式可以得到每秒1.2千兆字節(jié)的帶寬節(jié)省。
雖然在成本和便利性方面上述編碼(和映射)是優(yōu)選的,但是將要理解的是其它方式也當然是可能的。
在該實施方式中,第二級112還計算鑲嵌圖元的連接性信息。第二級112能夠以任何合適的且期望的方式,例如利用針對該處理的任何已知的且合適的技術(shù)來計算鑲嵌圖元的連接性信息。
鑲嵌級110的第三級113接收經(jīng)編碼的坐標對A[31:0]并且對該坐標對A[31:0]進行解碼。用于經(jīng)編碼的坐標對A[31:0]的解碼處理基本上是用來對如上所述的坐標對進行編碼的編碼處理的逆處理。
因此,當A[31:24]=0xFF并且A[15:8]=0x7F時,Ux[16:0]被設(shè)置為{1’b1,16’b0}(即65536)并且Vx[16:0]被設(shè)置為{1’b0,A[7:0],A[23:16]}。另外,當A[31:24]=0x7F并且A[15:8]=0xFF時,Ux[16:0]被設(shè)置為{1’b0,A[23:16],A[7:0]}并且Vx[16:0]被設(shè)置為{1’b1,16’b0}(即65536)。另外,當A[31:8]=0x8080FF時,Ux[16:0]和Vx[16:0]都被設(shè)置為{1’b1,16’b0}(即65536)。這些解碼處理的結(jié)果是經(jīng)映射的坐標對A[31:0]被解碼(重新映射)成經(jīng)修改的坐標對Ux,Vx。
另選地,當上述條件中均不被滿足時,Ux[16:0]被設(shè)置成{1’b0,A[15:8],A[7:0]}并且Vx[16:0]被設(shè)置成{1’b0,A[31:24],A[23:16]}。在這種情況下,重新映射處理不被應(yīng)用到坐標對A[31:0]。然而,仍然將經(jīng)編碼的坐標對A[31:0]解碼成經(jīng)修改的坐標對Ux,Vx。
經(jīng)解碼的(重新映射的)坐標對的第一坐標Ux然后被解修改以獲得原始的未經(jīng)修改的第一坐標U。經(jīng)解碼的(重新映射的)坐標對的第二坐標Vx也被解修改以獲得原始的未經(jīng)修改的第二坐標V。這基本上是參照圖10A和圖10B進行描述的相同的修改處理。因此,U是通過將Ux[16:0]復(fù)制到U[16:0]而獲得的,但是在當Ux[15]和Ux[14]不相等并且Ux[7]為零的條件下,Ux[15:8]在被復(fù)制之前被取反。類似的,V是通過將Vx[16:0]復(fù)制到V[16:0]而獲得的,但是在當Vx[15]和Vx[14]不相等并且Ux[7]為零的條件下,Vx[15:8]在被復(fù)制之前被取反。
在該實施方式中,對每個經(jīng)編碼的坐標對應(yīng)用上述編碼(映射)處理中的一種,使得針對圖塊獲得一組合適的經(jīng)解碼的鑲嵌頂點坐標對。
然后,鑲嵌級110的第三級113將經(jīng)解碼的鑲嵌頂點坐標對應(yīng)用到來自第一級111的輸出圖塊,以計算鑲嵌圖元(即,圖塊正在被鑲嵌成的)的頂點的定位。
鑲嵌級110的輸出是一組頂點定位和連接性信息。然后,圖元組裝級20利用由鑲嵌級110生成的定位和連接性信息來組裝鑲嵌圖元。在進行了組裝時,圖元組裝級20將鑲嵌圖元傳遞到圖形處理流水線的下游級以進一步處理(如上所述)。
從上文中可以看出,本發(fā)明在其優(yōu)選實施方式中至少提供用于將最初用第一二進制表示來表示的鑲嵌頂點坐標對編碼成更加方便的第二二進制表示的一種有效方式。在本發(fā)明的優(yōu)選實施方式中,至少通過將利用第一二進制表示來表示的至少一個鑲嵌頂點坐標對映射到利用第二二進制表示來表示的經(jīng)映射的坐標對來實現(xiàn)上述方式,其中,經(jīng)映射的坐標對限定針對圖塊的鑲嵌圖元的頂點的不被使用的、無效的和/或不可到達的位置。