本發(fā)明涉及在基于圖塊(tile)的計(jì)算機(jī)圖形渲染(render)系統(tǒng)中揀出(cull)隱藏的細(xì)分的(tesselated)圖元(primitive)的方法和系統(tǒng)。
背景技術(shù):基于圖塊的渲染是用于渲染2D或3D計(jì)算機(jī)圖形圖像的公知技術(shù)。渲染空間被再分為多個(gè)被稱為圖塊或塊的區(qū)域,所述區(qū)域通常是矩形,并且每一個(gè)包括多個(gè)像素。渲染空間可對(duì)應(yīng)于在屏幕上顯示的圖像,但例如存儲(chǔ)器中的紋理數(shù)據(jù)的其他渲染目的也是可能的。圖塊可以是各種大小,但典型大小是例如16x16像素。在高屏幕分辨率圖像中通常是1280x1024個(gè)像素。因此,高屏幕分辨率圖像可被再分為5120個(gè)圖塊(每個(gè)包括16x16個(gè)像素)?;趫D塊的計(jì)算機(jī)圖形系統(tǒng)的圖元數(shù)據(jù)通常從存儲(chǔ)器中讀取并被轉(zhuǎn)化為屏幕空間。圖元通常是多邊形,例如三角形,但也可以是線或點(diǎn)。然后針對(duì)每個(gè)圖塊可生成顯示列表,用于指示全部或部分位于該圖塊中的圖元(如果有的話)。指示常包括針對(duì)每個(gè)圖元的標(biāo)識(shí)符或索引,該標(biāo)識(shí)符或索引參考或提供了指向存儲(chǔ)在參數(shù)存儲(chǔ)器中的與圖元相關(guān)聯(lián)的幾何數(shù)據(jù)的指針。該顯示列表存儲(chǔ)在存儲(chǔ)器中。然后使用其顯示列表獨(dú)立地對(duì)每個(gè)圖塊進(jìn)行渲染。對(duì)于每個(gè)圖塊,在對(duì)應(yīng)的顯示列表中被標(biāo)識(shí)的圖元被處理并且隱藏面移除可被執(zhí)行。然后,可見碎片(fragment)的產(chǎn)生的像素?cái)?shù)據(jù)被傳到著色(shading)單元,著色單元將紋理和著色施加至對(duì)象中的每一個(gè)可見像素。在圖塊中的每一個(gè)像素的最終像素值已被確定后,圖塊的像素?cái)?shù)據(jù)被寫至存儲(chǔ)器中以用于在輸出設(shè)備上顯示。隱藏面移除通常使用被稱為“z緩存”的技術(shù)。在該技術(shù)中,針對(duì)每個(gè)圖元在被圖元覆蓋的圖塊中的每個(gè)像素處計(jì)算深度值。然后,依次處理每一個(gè)圖元,將每個(gè)圖元的深度值與存儲(chǔ)在“z緩存(buffer)”中的對(duì)應(yīng)的像素的深度值進(jìn)行比較。如果新圖元的深度值比當(dāng)前所存儲(chǔ)的深度值(針對(duì)之前被處理的當(dāng)前在該像素處可見的圖元的面)更接近眼睛或視點(diǎn),則該像素的深度值和該像素的其他值被新圖元在對(duì)應(yīng)像素處的值所取代。如果新圖元的深度值比當(dāng)前所存儲(chǔ)的深度值距離眼睛或視點(diǎn)更遠(yuǎn),該像素的包括深度值在內(nèi)的值保持不變。細(xì)分(tessellation)是用于給低細(xì)節(jié)模型增加紋理的公知技術(shù),在計(jì)算機(jī)圖形行業(yè)中通常指面數(shù)據(jù)(surfacedata)的面片(patch)。面數(shù)據(jù)的面片被分成多個(gè)圖元,然后圖元可選擇地從面片的面中被置換(displace)以獲得多個(gè)細(xì)分的圖元。圖元可通過用戶可編程函數(shù)的應(yīng)用和/或根據(jù)置換高度圖(displacementheightmap)而被置換。然后細(xì)分的圖元可被拼貼(tile)和如上所述的被渲染。細(xì)分是在計(jì)算機(jī)圖形行業(yè)被越來越廣泛地使用的有用的工具。然而,可以理解的是對(duì)表數(shù)據(jù)的面片進(jìn)行細(xì)分實(shí)質(zhì)上增加了渲染圖像所需的計(jì)算量。面數(shù)據(jù)的每一個(gè)細(xì)分的面片可包括數(shù)以千計(jì)的細(xì)分圖元,這些圖元需要被處理并且也需要被存儲(chǔ)在存儲(chǔ)器(memory)中。申請(qǐng)人認(rèn)為減小對(duì)圖塊以及特別是包括細(xì)分的圖元的圖塊進(jìn)行渲染所需的數(shù)據(jù)傳輸、數(shù)據(jù)存儲(chǔ)和處理的量是值得期待的。
技術(shù)實(shí)現(xiàn)要素:根據(jù)本發(fā)明,提供了一種在基于圖塊的圖形系統(tǒng)中進(jìn)行揀出的方法,包括:將渲染空間再分為多個(gè)圖塊;讀取面數(shù)據(jù)的面片;將面數(shù)據(jù)的面片細(xì)分以得到多個(gè)細(xì)分的圖元;分析包括細(xì)分的圖元中的至少一些圖元的面片的至少部分,以確定用于表示在至少一個(gè)圖塊上評(píng)估的極限(bounding)深度值的數(shù)據(jù);針對(duì)該面片位于其中的每一個(gè)圖塊,使用表示極限深度值的數(shù)據(jù)以確定該面片是否隱藏在該圖塊中;并且如果該面片被確定未隱藏在至少一個(gè)圖塊中,則渲染該面片的至少部分。本發(fā)明的實(shí)施方式具有能將面片從圖塊中被揀出而不需要針對(duì)每一個(gè)單個(gè)的細(xì)分的圖元處理和執(zhí)行深度揀出的優(yōu)點(diǎn)。因此,本發(fā)明使得渲染包括面數(shù)據(jù)的面片的圖像所需的處理和存儲(chǔ)器帶寬的量能夠被減小。本發(fā)明具有下面的優(yōu)點(diǎn),當(dāng)確定用于表示在至少一個(gè)圖塊上評(píng)估的極限深度值的數(shù)據(jù)時(shí),面片的面中的細(xì)分的圖元的任意置換能以相似的方式被考慮到。在一個(gè)優(yōu)選實(shí)施方式中,分析步驟還包括,針對(duì)多個(gè)細(xì)分的圖元中的每一者,使用細(xì)分的圖元的極限深度值以確定該細(xì)分的圖元是否隱藏在至少一個(gè)圖塊中,其中細(xì)分的圖元中的至少一些包括經(jīng)確定未被隱藏在至少一個(gè)圖塊中的細(xì)分的圖元。這一實(shí)施方式具有可能僅有未被隱藏的那些細(xì)分的圖元的極限深度值被用于確定表示面片的極限深度值的數(shù)據(jù)的優(yōu)點(diǎn)。這意味著面片的極限深度值很可能用于表示更小范圍的深度值,這增加了能基于使用極限深度值執(zhí)行的深度測(cè)試將面片從圖塊中揀出的可能性。進(jìn)一步地,在一個(gè)優(yōu)選實(shí)施方式中,該方法還包括揀出被確定隱藏在至少一個(gè)圖塊中的每一個(gè)細(xì)分的圖元,如此使得該圖元不被指示在該至少一個(gè)圖塊的顯示列表中。這使得存儲(chǔ)空間能夠被節(jié)省。在該至少一個(gè)圖塊上評(píng)估的極限深度值可以是整個(gè)面片的極限深度值??商鎿Q地,可針對(duì)該面片位于其中的每一個(gè)單獨(dú)的圖塊確定極限深度值。在這種情況下,分析步驟可包括,針對(duì)該面片位于其中的每一個(gè)圖塊,分析該面片所對(duì)應(yīng)的部分以確定用于表示該圖塊上評(píng)估的極限深度值的數(shù)據(jù)。因此,在這種情況下,如果面片位于多個(gè)圖塊上,在至少一個(gè)圖塊上評(píng)估的極限深度值將包括多個(gè)極限深度值(在單獨(dú)的圖塊上評(píng)估的每一個(gè))。在至少一個(gè)圖塊上評(píng)估的極限深度值可包括最大極限深度值和或最小極限深度值。用于表示至少一個(gè)圖塊上評(píng)估的極限深度值的數(shù)據(jù)可用于在面片在圖塊的顯示列表中被指示之前或之后來確定該面片是否隱藏在該圖塊中。第一實(shí)施方式包括,對(duì)于面片位于其中的每個(gè)圖塊,如果確定面片未隱藏在圖塊中,則在該圖塊的顯示列表中指示面片的至少部分。該實(shí)施方式具有下面的優(yōu)點(diǎn),不僅能減小渲染圖像所需的處理和存儲(chǔ)帶寬的量,還能減小存儲(chǔ)圖塊的顯示列表所需的存儲(chǔ)空間的量,這是因?yàn)槿绻嫫淮_定是不可見的或隱藏的,則在圖塊的顯示列表中不需要指示該面片。該實(shí)施方式還可以包括:將表示極限深度值的數(shù)據(jù)寫入存儲(chǔ)器;并且,針對(duì)其顯示列表指示了該面片的至少部分的每一個(gè)圖塊,從存儲(chǔ)器中讀取表示極限深度值的數(shù)據(jù)并且使用表示極限深度值的數(shù)據(jù)以確定該面片是否隱藏在圖塊中??商鎿Q的第二實(shí)施方式包括:針對(duì)該面片位于其中的每一個(gè)圖塊,在圖塊的顯示列表中指示面片的至少部分;將用于表示至少一個(gè)圖塊上評(píng)估的極限深度值的數(shù)據(jù)寫入存儲(chǔ)器;以及在該步驟中,針對(duì)該面片位于其中的每一個(gè)圖塊,使用表示極限深度值的數(shù)據(jù)以確定該面片是否隱藏在圖塊中還包括:從存儲(chǔ)器中讀取用于表示極限深度值的數(shù)據(jù)。這些實(shí)施方式需要將用于表示在至少一個(gè)圖塊上評(píng)估的極限深度值的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,這將占用存儲(chǔ)空間。然而,這一實(shí)施方式的顯著優(yōu)點(diǎn)是表示面片的極限深度值的數(shù)據(jù)能用于執(zhí)行對(duì)于面片的深度測(cè)試,而不需在圖塊渲染期間處理面數(shù)據(jù)的面片。因此,該實(shí)施方式使得存儲(chǔ)器帶寬和處理能力能夠類似于第一實(shí)施方式一樣被節(jié)省,因?yàn)榕e例來說如果面片被從圖塊中揀出,則不需要從參數(shù)存儲(chǔ)器中讀取與該面片相關(guān)聯(lián)的幾何數(shù)據(jù)。該第二實(shí)施方式還可包括附加步驟,在該步驟前,針對(duì)該面片位于其中的每一個(gè)圖塊,在圖塊的顯示列表中指示面片的至少部分,包括使用表示在至少一個(gè)圖塊上評(píng)估的極限深度值的數(shù)據(jù)來確定該面片是否隱藏在圖塊中,并且如果該面片未隱藏在該圖塊中,則從該圖塊中揀出該面片,如此使得該面片不再位于該圖塊中。還提供了相應(yīng)的裝置。附圖說明現(xiàn)在將參考附圖僅通過示例的方式來描述本發(fā)明的實(shí)施方式,其中:圖1是示出體現(xiàn)本發(fā)明的裝置的示意性方框圖;圖2,2a和2b示出了對(duì)面數(shù)據(jù)的細(xì)分的面片是否可從圖塊中揀出的確定;圖3是示出本發(fā)明的一個(gè)實(shí)施方式中的方法步驟的流程圖;圖4是示出本發(fā)明的另一個(gè)實(shí)施方式中的方法步驟的流程圖;圖5是示出用于確定一系列例如三角形的圖元的極限深度范圍的示例方法的流程圖;以及圖6是示出用于確定例如面面片的對(duì)象的極限深度范圍的示例方法的流程圖。具體實(shí)施方式申請(qǐng)人的公開號(hào)是No.GB2480012的專利申請(qǐng)公開了在基于圖塊的計(jì)算機(jī)圖形渲染系統(tǒng)中對(duì)面數(shù)據(jù)的面片進(jìn)行細(xì)分的方法和系統(tǒng)。在該系統(tǒng)中,如上所述,面數(shù)據(jù)的面片被細(xì)分以得到多個(gè)細(xì)分的圖元。然后,針對(duì)每個(gè)圖塊,例如,通過存儲(chǔ)每一個(gè)細(xì)分的圖元的一個(gè)或多個(gè)索引,在圖塊的顯示列表中指示至少部分地位于圖塊中的每一個(gè)細(xì)分的圖元。然而,不是將與每個(gè)單獨(dú)的細(xì)分的圖元相關(guān)聯(lián)的幾何數(shù)據(jù)存儲(chǔ)在參數(shù)存儲(chǔ)器,而是存儲(chǔ)用于面數(shù)據(jù)的面片的幾何數(shù)據(jù),隨后根據(jù)面數(shù)據(jù)的面片的幾何數(shù)據(jù)能重新得到細(xì)分的圖元??梢岳斫獾氖沁@一方法實(shí)際上減小了需要存儲(chǔ)在參數(shù)存儲(chǔ)器中的數(shù)據(jù)的量,但代價(jià)是增加了渲染每個(gè)圖塊所需的計(jì)算量。為了對(duì)每個(gè)圖塊進(jìn)行渲染,面數(shù)據(jù)的面片被重新細(xì)分以重新得到在各自的顯示列表中標(biāo)識(shí)的細(xì)分的圖元。然后每一個(gè)細(xì)分的圖元按照上述方式被處理。用于揀出全部隱藏在圖塊中的圖元(換言之,在圖塊中任意像素都不可見的圖元)的方法和系統(tǒng),而不需進(jìn)行已知的典型隱藏面移除技術(shù)(例如,如申請(qǐng)人的GB專利no.2,378,108所公開的)所需的全部處理。在這一方法中,全部隱藏在圖塊中的圖元在執(zhí)行隱藏面移除前通過比較每個(gè)圖元的深度和存儲(chǔ)在圖塊的“z緩存”中的深度范圍而被揀出。例如,可比較圖元的最小深度(最接近視點(diǎn)的深度)和“z緩存”中存儲(chǔ)的深度值所指示的最強(qiáng)或最大深度(例如,距離視點(diǎn)最遠(yuǎn)的深度)。如果圖元的最小深度比“z緩存”中的最大深度值離視點(diǎn)更遠(yuǎn),則可知該圖元一定全部隱藏在圖塊中,而不需在圖塊中的每個(gè)像素計(jì)算和比較圖元的深度值。因此,該方法減小了渲染每個(gè)圖塊所需的處理的量。下面用術(shù)語(yǔ)“對(duì)象”來描述圖形元素,例如圖元或在計(jì)算機(jī)圖形行業(yè)中通常被稱為面數(shù)據(jù)的“面片”的模型。下面示出了在其中使用“小于”深度比較模式的圖形系統(tǒng)的上下文中的示例。換言之,在其深度小于其他對(duì)象在該點(diǎn)的深度的點(diǎn)處對(duì)象是可見的。然而,可以理解的是圖形系統(tǒng)能使用多種不同的深度比較模式,并且它們之間可進(jìn)行互換。其他示例深度比較模式包括“大于”、“大于或等于”、“小于或等于”、“等于”、“不等于”、“一直”和“從不”。使用“小于”深度比較的示例僅是為了表達(dá)清晰,并且下面的技術(shù)能無困難地應(yīng)用于任意合適的深度比較模式。圖1是示出本發(fā)明的一個(gè)實(shí)施方式中的使用細(xì)分來產(chǎn)生計(jì)算機(jī)圖形圖像并對(duì)其進(jìn)行著色的裝置的示意圖。包括這一裝置的部分可被實(shí)現(xiàn)為例如圖形處理器單元(GPU)的處理器中的電路,或者可被實(shí)現(xiàn)為運(yùn)行在例如GPU或CPU的可編程設(shè)備上的程序。面數(shù)據(jù)10的面片被傳到細(xì)分處理器20,細(xì)分處理器20將面片分為多個(gè)圖元并且可選地通過應(yīng)用用戶可編程函數(shù)或依靠置換或紋理圖將圖元從面片的面上置換出以得到多個(gè)細(xì)分的圖元。面片通常是由關(guān)于參數(shù)‘t’(對(duì)于曲線)或域坐標(biāo)‘u,v’(對(duì)于曲面)來描述曲線形狀的控制點(diǎn)的集合所定義的參數(shù)函數(shù)。計(jì)算機(jī)圖形中使用的面片的一個(gè)示例是貝塞爾(Bezier)面片,但本領(lǐng)域的技術(shù)人員可理解還存在其他面片。正如本領(lǐng)域的那些技術(shù)人員所知,例如MicrosoftDirect3D11API的許多應(yīng)用可編程接口(API)能支持圖形流水線中的面數(shù)據(jù)的面片的細(xì)分。MicrosoftDirect3D11API支持置換貼圖(displacementmapping),由此細(xì)分的圖元可在面片的面的置換位置。一旦得到細(xì)分的圖元,其被傳至最小和或最大深度計(jì)算器30,最小和或最大計(jì)算器30用于分析該面片以確定極限深度值??蛇x地,圖元可先被傳至修剪和揀出單元(未示出),修剪和揀出單元移除例如任何背向的、離屏的或不可見的圖元,并且之后剩余的圖元可被傳至投影單元(也未示出),投影單元將圖元轉(zhuǎn)化至顯示空間。在這一實(shí)施方式中,最小和或最大深度計(jì)算器30確定了面數(shù)據(jù)的全部細(xì)分的面片的最小和或最大深度。換言之,面數(shù)據(jù)的細(xì)分的面片的距離視點(diǎn)最遠(yuǎn)的深度和或面數(shù)據(jù)的細(xì)分的面片的距離視點(diǎn)最近的深度。這可通過確定和比較所得到的細(xì)分的圖元中的每一個(gè)的深度來完成,該細(xì)分的圖元用于組成面數(shù)據(jù)的被曲面的面片。因此在任意時(shí)間都不需要存儲(chǔ)細(xì)分的圖元中的每一個(gè)的深度。可使用公知技術(shù)來確定細(xì)分的圖元中的每一個(gè)的深度,下面給出了示例。根據(jù)細(xì)分的圖元數(shù)據(jù)確定面片的最小和或最大深度可確保最小和或最大深度可體現(xiàn)可能已被應(yīng)用于面片的任意置換貼圖的效果。如本領(lǐng)域那些技術(shù)人員所理解的,確定面片的最小和或最大深度的其他方法是可能的。例如,可確定包括對(duì)象的包圍體(boundingvolume),根據(jù)該包圍體能使用已知技術(shù)來確定最小和最大極限深度值。包圍體能是例如球體、柱體或長(zhǎng)方體的許多形狀。在計(jì)算機(jī)圖形中所用的例如貝塞爾(Bezier)和B樣條曲線(B-spline)類型的多種面面片具有全部位于其控制點(diǎn)的凸包中的特性。因此可通過在細(xì)分前先對(duì)面片進(jìn)行分析來確定包圍體??梢岳斫獾氖撬_定的對(duì)象的極限深度值的準(zhǔn)確度將依賴于包圍體對(duì)封閉對(duì)象的圍繞有多緊密,并且要注意必須確保要考慮到置換貼圖的影響。在一個(gè)可替換的實(shí)施方式中,可通過對(duì)面數(shù)據(jù)的面片位于每個(gè)圖塊中的分別的部分進(jìn)行分析來確定最大和或最小深度數(shù)據(jù)。面數(shù)據(jù)的面片可以是非常大的并且常延伸穿過多于一個(gè)圖塊,所以針對(duì)面片的位于單個(gè)圖塊中的各個(gè)部分所確定的最小和或最大深度數(shù)據(jù)可表示遠(yuǎn)小于針對(duì)整個(gè)面片所確定的最小和或最大深度數(shù)據(jù)的深度值范圍。深度值的更小的范圍增加了在渲染前面片可從圖塊中被揀出的機(jī)會(huì)。本領(lǐng)域的技術(shù)人員將理解存在多種確定面片位于圖塊中的部分的最小和最大深度數(shù)據(jù)的方法,并且這些方法中包括使用包圍體和面片的凸包特性的方法。系統(tǒng)中存在拼貼(tiling)單元40,拼貼單元40能確定圖元是全部地還是部分地位于圖塊中,使得根據(jù)被拼貼的細(xì)分的圖元確定最小和或最大深度數(shù)據(jù)的方法特別地適用??梢岳斫獾氖?,在這種情況下,拼貼單元40必須確定哪些細(xì)分的圖元和因此面數(shù)據(jù)的細(xì)分的面片的哪部分位于每一個(gè)圖塊中??纱_定和比較組成圖塊中的面數(shù)據(jù)的細(xì)分的面片的細(xì)分的圖元中的每一個(gè)的深度,以得到位于每一個(gè)圖塊中的面數(shù)據(jù)的細(xì)分的面片的各個(gè)部分的最小和或最大深度數(shù)據(jù)。拼貼單元40將渲染空間分為多個(gè)圖塊,每一個(gè)圖塊包括多個(gè)圖像像素。圖塊通常是矩形的,但也能是其他形狀。然后對(duì)于每個(gè)圖塊,拼貼單元40確定細(xì)分的圖元中的每一個(gè)是否位于(部分地或全部地)該圖塊中。換言之,細(xì)分的圖元的至少部分是否位于該圖塊的可見區(qū)域內(nèi)。這能使用多種公知技術(shù)來實(shí)現(xiàn)。在一些實(shí)施方式中,拼貼單元40可包括深度測(cè)試處理器50。當(dāng)對(duì)象確定位于圖塊中時(shí),深度測(cè)試處理器比較該對(duì)象的最小或最大深度值和該圖塊的深度閾值。根據(jù)對(duì)象的深度比較模式來執(zhí)行該比較測(cè)試,由此該比較確定對(duì)象是否在該圖塊中有可能可見,或者該對(duì)象是否隱藏。深度測(cè)試處理器通常不是逐像素測(cè)試,并且因此不能確定對(duì)象是一定可見。然而,其能確定對(duì)象完全被圖塊中的其他對(duì)象所隱藏。如果被隱藏,該對(duì)象能被揀出并不在該圖塊的顯示列表中被指示。例如,如申請(qǐng)人的GB專利No.2,378,108所述,在使用“部分渲染”的系統(tǒng)中,圖塊的“z緩存”中的可見圖元的深度范圍(最小和/或最大深度)可從隱藏面移除單元110反饋至拼貼單元40。如本領(lǐng)域的技術(shù)人員可理解的,在“部分渲染”系統(tǒng)中,位于圖塊中的一些對(duì)象在該圖塊的顯示列表中被指示,然后使用如上所述的“z緩存”技術(shù)來渲染那些對(duì)象。隨后,位于該圖塊中的更遠(yuǎn)的對(duì)象在該圖塊的顯示列表中被指示,然后被渲染。在后來的那些對(duì)象在圖塊的顯示列表中被指示前,可反饋“z緩存”中的深度范圍,由此該深度可用作在深度測(cè)試中的深度閾值??商鎿Q地,拼貼單元40可確定最小和或最大深度閾值。很明顯拼貼單元40重復(fù)一次在隱藏面移除期間執(zhí)行的全部深度工作是不期望的。然而,舉例來說,拼貼單元40可確定被添加至圖塊的顯示列表的對(duì)象的保守的最小和或最大深度閾值,以用在粗略的深度測(cè)試中。例如,在“小于”深度比較模式中,如果該對(duì)象具有比當(dāng)前所存儲(chǔ)的圖塊中的可見圖元的最大深度閾值更接近視點(diǎn)的最大深度,每次對(duì)象覆蓋了整個(gè)圖塊時(shí),可更新圖塊的最大深度閾值。在這種情況下,圖塊的最大深度閾值將更新為該對(duì)象的最大深度值。這是因?yàn)?,由于?duì)象覆蓋了整個(gè)圖塊,可知圖塊中的可見圖元的最大深度閾值必然至多為該對(duì)象的最大深度值。因此,如果該對(duì)象的最大深度值比當(dāng)前所存儲(chǔ)的圖塊的最大深度閾值更接近視點(diǎn),則該圖塊的最大深度值能被更新。也可根據(jù)位于圖塊中的對(duì)象來確定圖塊的最小深度閾值。圖2示出了包括多個(gè)圖塊205和面數(shù)據(jù)的細(xì)分的面片210的示例屏幕端口圖像200。圖2a和2b是示出在圖塊的一個(gè)示例圖塊中的可見對(duì)象的最小和最大深度值的圖。指定距離視點(diǎn)最遠(yuǎn)的點(diǎn)的深度值是1.0和距離最近的點(diǎn)的深度值是0.0。實(shí)線用于指示可用作深度測(cè)試的閾值的可見對(duì)象的深度值范圍。虛線用于指示兩個(gè)細(xì)分的示例面片220和230的最小和最大深度值。在這些示例中,能看出面片的深度值略微保守,可能是因?yàn)榈玫竭@些值的某些方法的原因。在該示例中,如果確定對(duì)象被隱藏在圖像中的其他對(duì)象下,則該對(duì)象被揀出。因此關(guān)鍵深度是對(duì)象的最小深度值。如圖2a中的示例,如果對(duì)象的最小深度值(距離視點(diǎn)最近的深度)比圖塊的最大深度閾值(即,距離視點(diǎn)最遠(yuǎn)的深度)更接近視點(diǎn),則對(duì)象中的至少一些可在該圖塊中可見。因此不從該圖塊中揀出該對(duì)象。然而,在圖2b的示例中,可看出對(duì)象的最小深度值(距離視點(diǎn)最近的深度)距離視點(diǎn)比圖塊的最大深度閾值還遠(yuǎn)。因此可知該面數(shù)據(jù)的細(xì)分的面片必然隱藏在圖塊中。因此可從該圖塊中揀出該對(duì)象。在一個(gè)實(shí)施方式中,使用為面數(shù)據(jù)的面片確定的最小或最大深度值來執(zhí)行深度測(cè)試。深度測(cè)試確定整個(gè)面片是否隱藏在圖塊中。在另一實(shí)施方式中,使用為面數(shù)據(jù)的細(xì)分的面片的圖元確定的最小或最大深度值來執(zhí)行深度測(cè)試。在這種情況下,深度測(cè)試確定圖元是否隱藏在圖塊中??瑟?dú)立地測(cè)試面數(shù)據(jù)的同一細(xì)分的面片中的其他圖元以確定其是否隱藏在圖塊中。本領(lǐng)域的技術(shù)人員可想到其他使用面數(shù)據(jù)的細(xì)分的面片的最小和或最大深度來確定面數(shù)據(jù)的細(xì)分的面片是否隱藏在圖塊中的方法。如果確定對(duì)象不能從圖塊中揀出,或者如果在這一階段未執(zhí)行深度測(cè)試,則在該圖塊的顯示列表中指示該對(duì)象。這可包括存儲(chǔ)針對(duì)圖塊的顯示列表中的每一個(gè)細(xì)分的圖元的一個(gè)或多個(gè)索引,索引提供了指向存儲(chǔ)在參數(shù)存儲(chǔ)器80中的與細(xì)分的圖元相關(guān)聯(lián)的幾何數(shù)據(jù)的指針。在該示例中,如在GB專利申請(qǐng)公開No.2480012中公開的系統(tǒng)中所描述的,不是在參數(shù)存儲(chǔ)器80中存儲(chǔ)細(xì)分的圖元中的每一個(gè)的幾何數(shù)據(jù),而是存儲(chǔ)面數(shù)據(jù)的面片的數(shù)據(jù),隨后在渲染期間能根據(jù)這些數(shù)據(jù)重新得到細(xì)分的圖元。舉例來說,如果面片是貝塞爾面片,數(shù)據(jù)可包括面片的控制點(diǎn)和在其中應(yīng)用的細(xì)分因子。如果確定面數(shù)據(jù)的整個(gè)細(xì)分的面片能從圖塊中揀出,則在圖塊的顯示列表中不指示細(xì)分的圖元。然而,應(yīng)該注意的是,如果面數(shù)據(jù)的該細(xì)分的面片在其他圖塊中可能是可見的,則面數(shù)據(jù)的面片的幾何數(shù)據(jù)可仍存儲(chǔ)在參數(shù)存儲(chǔ)器80中。在已得到每一個(gè)圖塊的顯示列表后,顯示列表被存儲(chǔ)在存儲(chǔ)器60中。優(yōu)選地,即使已經(jīng)進(jìn)行了深度測(cè)試,面數(shù)據(jù)的細(xì)分的面片的最小和或最大深度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器70中。為對(duì)每個(gè)圖塊進(jìn)行渲染,圖塊的顯示列表被讀取。對(duì)于其顯示列表參考面數(shù)據(jù)的面片的圖塊,在進(jìn)行任何進(jìn)一步處理前,深度測(cè)試處理器90從存儲(chǔ)器70中讀取面數(shù)據(jù)的面片的最小和或最大深度數(shù)據(jù)。然后,舉例來說,深度測(cè)試處理器90可使用上述方法來執(zhí)行第一或進(jìn)一步深度測(cè)試。其他方法是可能的并且是本領(lǐng)域的技術(shù)人員能想到的。可以理解的是,在這一階段執(zhí)行深度測(cè)試比在拼貼前執(zhí)行深度測(cè)試更準(zhǔn)確,并且因此更可能導(dǎo)致面數(shù)據(jù)的面片從圖塊中被揀出。這是因?yàn)榧?xì)分的面片的最小和或最大深度值可與之比較的圖塊的最小和或最大深度閾值可根據(jù)隱藏面移除單元110的z緩存來直接確定。以該方式確定的最小和或最大深度閾值比在拼貼單元40中得到的更準(zhǔn)確,因?yàn)槠錄]有受到例如保守的包圍體的因素的影響,也比僅根據(jù)覆蓋整個(gè)圖塊的對(duì)象得到閾值數(shù)據(jù)更準(zhǔn)確。因此,即使在拼貼前執(zhí)行深度測(cè)試,如果沒從所有圖塊中揀出面片,則存儲(chǔ)面片的最小/最大深度值并且在拼貼后和對(duì)每個(gè)圖塊進(jìn)行渲染前執(zhí)行附加的深度測(cè)試也是有好處的,即使該處理有需要額外的存儲(chǔ)空間來存儲(chǔ)面片的最小/最大數(shù)據(jù)的缺陷。如果確定面數(shù)據(jù)的面片能從圖塊中被揀出,對(duì)于該圖塊,有利的是不需處理與面數(shù)據(jù)的該面片相關(guān)聯(lián)的任何細(xì)分的圖元。因此,不需重新細(xì)分面數(shù)據(jù)的該面片以重新得到在該圖塊的顯示列表中指示的那些細(xì)分的圖元。如果確定面數(shù)據(jù)的面片在該圖塊中可見,則細(xì)分處理器100讀取與面數(shù)據(jù)的該面片相關(guān)聯(lián)的幾何數(shù)據(jù)并且對(duì)面數(shù)據(jù)的該面片重新細(xì)分以重新得到該圖塊的顯示列表中所標(biāo)識(shí)的細(xì)分的圖元中的每一個(gè)。如上所述,然后可使用公知技術(shù)處理這些細(xì)分的圖元中的每一個(gè)以對(duì)該圖像進(jìn)行渲染。細(xì)分的圖元中的每一個(gè)可被傳到隱藏面移除單元110,隱藏面移除單元110移除任意在該圖塊中不可見的面,并且所產(chǎn)生的像素?cái)?shù)據(jù)可被傳到紋理和著色單元120,其在用于顯示的最終像素值被寫到存儲(chǔ)器前施加像素或紋理著色。圖3是示出本發(fā)明的一個(gè)實(shí)施方式的流程圖。在步驟300,細(xì)分面數(shù)據(jù)的面片以得到多個(gè)細(xì)分的圖元,這些圖元可從面數(shù)據(jù)的面片的面上被置換。在步驟310,根據(jù)細(xì)分的圖元確定面數(shù)據(jù)的細(xì)分的面片的最小和或最大深度數(shù)據(jù)。在步驟320,對(duì)于面數(shù)據(jù)的細(xì)分的面片位于的每一個(gè)圖塊,面數(shù)據(jù)的細(xì)分的面片的最小和或最大深度數(shù)據(jù)可用于確定面數(shù)據(jù)的細(xì)分的面片是否隱藏在該圖塊中。如果確定面數(shù)據(jù)的細(xì)分的面片隱藏在該圖塊中,在步驟340,面數(shù)據(jù)的細(xì)分的面片從該圖塊中被揀出。如果確定面數(shù)據(jù)的細(xì)分的面片未隱藏在該圖塊中,則在步驟330得到該圖塊的顯示列表,顯示列表用于指示位于該圖塊中的那些細(xì)分的圖元。此外,可為面數(shù)據(jù)的細(xì)分的面片存儲(chǔ)最小和或最大深度數(shù)據(jù)。顯示列表和最小和或最大深度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器350中。為渲染每一個(gè)圖塊,在步驟360,對(duì)于面數(shù)據(jù)的細(xì)分的面片所位于的每個(gè)圖塊,面數(shù)據(jù)的面片的最小和或最大深度數(shù)據(jù)被讀取并被用于確定面數(shù)據(jù)的細(xì)分的面片是否隱藏在該圖塊中。如果確定面數(shù)據(jù)的細(xì)分的面片隱藏在該圖塊中,則在步驟380,面數(shù)據(jù)的該細(xì)分的面片從圖塊中被揀出并且不再進(jìn)行進(jìn)一步的處理。如果確定面數(shù)據(jù)的細(xì)分的面片未隱藏,則在步驟390,處理位于該圖塊中的細(xì)分的圖元中的每一個(gè)以對(duì)該圖塊進(jìn)行渲染。在上述的實(shí)施方式中這包括重新細(xì)分存儲(chǔ)器中存儲(chǔ)的面數(shù)據(jù)的面片以重新得到至少圖塊的顯示列表中指示的那些細(xì)分的圖元,并且隨后使用公知技術(shù)對(duì)那些細(xì)分的圖元中的每一個(gè)進(jìn)行處理。圖4是示出本發(fā)明的另一實(shí)施方式的流程圖。在步驟400,面數(shù)據(jù)的面片被細(xì)分以得到多個(gè)細(xì)分的圖元,圖元可從面數(shù)據(jù)的面片的面中被置換。在步驟410,對(duì)于細(xì)分的圖元位于的每一個(gè)圖塊,圖元的最小和或最大深度值可用于確定該圖元是否隱藏在該圖塊中。如果確定細(xì)分的圖元隱藏在該圖塊中,在步驟430,該細(xì)分的圖元從該圖塊中被揀出。如果確定該細(xì)分的圖元未隱藏在該圖塊中,則在步驟420,可確定面面片中未隱藏的圖元的最小和或最大深度數(shù)據(jù)。在步驟440,可得到圖塊的顯示列表,用于指示未隱藏的且位于該圖塊中的那些細(xì)分的圖元。此外,可存儲(chǔ)面數(shù)據(jù)的細(xì)分的面片的最小和最大深度數(shù)據(jù)。顯示列表和最小和或最大深度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器450中。在步驟460,為渲染每個(gè)圖塊,對(duì)于面數(shù)據(jù)的細(xì)分的面片位于的每個(gè)圖塊,面數(shù)據(jù)的面片的最小和或最大深度數(shù)據(jù)被讀取并用于確定面數(shù)據(jù)的該細(xì)分的面片是否隱藏在該圖塊中。如果確定面數(shù)據(jù)的該細(xì)分的面片隱藏在該圖塊中,則在步驟480,面數(shù)據(jù)的該細(xì)分的面片從該圖塊中被揀出并不再進(jìn)行進(jìn)一步的處理。如果確定面數(shù)據(jù)的該細(xì)分的面片未隱藏,則在步驟490,位于該圖塊中的細(xì)分的圖元中的每一個(gè)被處理以對(duì)該圖塊進(jìn)行渲染。在上述的實(shí)施方式中這包括對(duì)存儲(chǔ)器中存儲(chǔ)的面數(shù)據(jù)的面片重新細(xì)分以重新得到至少該圖塊的顯示列表中指示的那些細(xì)分的圖元,并且隨后使用公知技術(shù)處理那些細(xì)分的圖元中的每一個(gè)。圖5是示出最小和或最大深度計(jì)算器30可用來確定一個(gè)或多個(gè)圖元(例如可通過面數(shù)據(jù)的面片的細(xì)分所產(chǎn)生的那些圖元)的集合的極限深度值的一種方法的流程圖。該示例中示出了對(duì)最小深度值的確定。在500中讀取圖元,并且在510中從圖元讀取頂點(diǎn)(vertex)。通常頂點(diǎn)包括坐標(biāo)X、Y和Z,其中Z坐標(biāo)是深度值。在520中,如果該頂點(diǎn)是圖元集合中的第一圖元的第一頂點(diǎn),則在530中該頂點(diǎn)的Z坐標(biāo)被存儲(chǔ)。這為進(jìn)一步的比較提供了初始值。對(duì)于所有隨后的頂點(diǎn),在540中,頂點(diǎn)的Z坐標(biāo)與之前在530中存儲(chǔ)的Z值進(jìn)行比較以確定其是否更小。如果更小,則該頂點(diǎn)的Z坐標(biāo)被存儲(chǔ)在530中,替代任意之前存儲(chǔ)的值。在550中,進(jìn)行測(cè)試以確定該頂點(diǎn)是否是該圖元中的最后一個(gè)頂點(diǎn)。如果不是則流程返回510,且以相似方式對(duì)該圖元的下一個(gè)頂點(diǎn)進(jìn)行處理。在對(duì)圖元中的最后一個(gè)頂點(diǎn)進(jìn)行處理后,在560中,進(jìn)行測(cè)試以確定該圖元是否是集合中的最后一個(gè)圖元。如果不是則流程返回500,并且下一個(gè)圖元被讀取和處理。在對(duì)集合中的最后一個(gè)圖元進(jìn)行處理后,在530中存儲(chǔ)的Z值是檢測(cè)的所有頂點(diǎn)中最小的Z值。技術(shù)人員可理解可修改圖5中的方法來確定圖元集合的最大極限深度值,或者僅一次通過圖元數(shù)據(jù)而產(chǎn)生圖元集合的最小和最大極限深度值。圖6是示出可被最小和或最大深度計(jì)算器30用來確定面數(shù)據(jù)的面片的極限深度值的方法的流程圖。在該示例中根據(jù)是面面片的控制點(diǎn)的頂點(diǎn)確定最小深度值。面面片的控制點(diǎn)形成已知用于界定該面片的凸包。在600,讀取對(duì)象,并且在610從對(duì)象中讀取頂點(diǎn)。在620針對(duì)相關(guān)性可選地測(cè)試頂點(diǎn),因?yàn)楸娝苤獙?duì)于例如B-樣條的曲線,該曲線由多個(gè)相鄰控制點(diǎn)的凸包所界定,并且定義凸包的相鄰點(diǎn)的數(shù)量取決于曲度。當(dāng)確定用于位于特定圖塊中的面面片的部分的包圍體時(shí),相關(guān)性測(cè)試特別有用,因?yàn)閮H在該圖塊中和周圍的控制點(diǎn)定義了用于該圖塊內(nèi)的面面片的凸包。根據(jù)更少的數(shù)量的控制點(diǎn)所確定的包圍體可以更小,并且因此與使用面面片的所有控制點(diǎn)計(jì)算的包圍體相比提供了更有效的揀出。如果確定頂點(diǎn)不相關(guān)則流程繼續(xù)至660。在630,如果頂點(diǎn)是面面片的第一相關(guān)頂點(diǎn),則在640頂點(diǎn)的Z坐標(biāo)被存儲(chǔ)。這為進(jìn)一步的比較提供了初始值。對(duì)于所有隨后的頂點(diǎn),在650,頂點(diǎn)的Z坐標(biāo)與之前在640所存儲(chǔ)的Z值相比以確定其是否更小。如果更小,則在640該頂點(diǎn)的Z坐標(biāo)被存儲(chǔ),取代任意之前所存儲(chǔ)的值。在660中,進(jìn)行測(cè)試以確定頂點(diǎn)是否是面面片的最后一個(gè)頂點(diǎn),如果不是,流程返回610。在對(duì)面面片中的最后一個(gè)頂點(diǎn)進(jìn)行處理后,在640存儲(chǔ)的Z值是被檢測(cè)的所有相關(guān)頂點(diǎn)中的最小Z值。本領(lǐng)域技術(shù)人員可理解可根據(jù)需要修改圖6的方法以確定最大極限深度值或最小和最大極限深度值。本領(lǐng)域的技術(shù)人員將理解功能、技術(shù)或方法的全部或部分可通過專用電路、專用應(yīng)用集成電路、可編程邏輯陣列、現(xiàn)場(chǎng)可編輯門陣列等執(zhí)行。例如,其可以包括電子電路形式的硬件。該電路可包括晶體管和/或制造工藝可實(shí)現(xiàn)的其他硬件元件。該晶體管和/或其他硬件元件可用于形成實(shí)施和/或包含例如寄存器的存儲(chǔ)器、觸發(fā)器或鎖存器、例如布爾運(yùn)算的邏輯運(yùn)算器、例如加法器、乘法器或移位器的數(shù)學(xué)運(yùn)算器和連接線等的結(jié)構(gòu)或電路。這些元件可以作為定制電路或標(biāo)準(zhǔn)單元庫(kù)、宏、或以其他抽象級(jí)被提供。這些元件可以以特定的排列互相連接。這可包括固定功能的電路和/或能被編程的以執(zhí)行一個(gè)或多個(gè)功能的電路;該程序設(shè)計(jì)可根據(jù)固件或軟件的升級(jí)或控制機(jī)制來提供。在一個(gè)示例中,硬件邏輯具有實(shí)現(xiàn)固定功能操作、狀態(tài)機(jī)或處理的電路。本發(fā)明也包括用于“描述”或定義硬件配置的軟件,硬件用于實(shí)現(xiàn)上述模塊、功能、部件或邏輯,例如HDL(硬件描述語(yǔ)言)軟件的軟件用于設(shè)計(jì)集成電路或配置可編程芯片以執(zhí)行所需功能。換言之,可提供在其上編碼計(jì)算機(jī)可讀程序碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該程序碼用于生成被配置為執(zhí)行本文所述的方法中的任意一者的處理單元,或用于生成包括本文所述的任意裝置的處理單元。