本申請(qǐng)是申請(qǐng)日為2013年9月12日,申請(qǐng)?zhí)枮?01310415416.5,名稱為“基于圖塊的計(jì)算機(jī)圖形”的中國(guó)發(fā)明專利申請(qǐng)的分案申請(qǐng)。
本發(fā)明涉及用于在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的方法和系統(tǒng)。
背景技術(shù):
基于圖塊的渲染是用于渲染2d或3d計(jì)算機(jī)圖形圖像的眾所周知的技術(shù)。圖像被再分成多個(gè)通常為矩形的塊或圖塊,并且每個(gè)塊或圖塊包括多個(gè)圖像像素。
從存儲(chǔ)器中讀取表示幾何對(duì)象的圖元數(shù)據(jù)并將其傳輸至屏幕空間。圖元通常為多邊形的,但也可能是線或點(diǎn)。之后為每個(gè)圖塊創(chuàng)建用于指示圖元的對(duì)象列表,并且如果存在圖元的話,這些圖元部分或全部地位于該圖塊內(nèi)。
每個(gè)圖塊獨(dú)立地被渲染。對(duì)于每個(gè)圖塊,在各個(gè)對(duì)象列表中標(biāo)識(shí)的圖元被處理并且隱藏面消除可以被執(zhí)行??梢妼?duì)象的合成像素?cái)?shù)據(jù)接著被傳遞至陰影化單元,該陰影化單元將紋理和陰影應(yīng)用至可見對(duì)象內(nèi)的每個(gè)像素。在已經(jīng)為圖塊中的每個(gè)像素確定了最終像素值之后,圖塊的像素?cái)?shù)據(jù)被寫入存儲(chǔ)器中以用于在輸出設(shè)備上顯示。
對(duì)于三角圖元,圖元數(shù)據(jù)將通常包括定義了頂點(diǎn)的數(shù)據(jù)和這些圖元數(shù)據(jù)所定義的表面,其中用標(biāo)記來指示待應(yīng)用的相關(guān)陰影和紋理數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明的第一方面,提供了一種用于在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的方法,該方法包括以下步驟:提供幾何數(shù)據(jù);從所述幾何數(shù)據(jù)獲得多個(gè)圖元;從所述多個(gè)圖元中的至少一者獲得一個(gè)或多個(gè)修改后圖元;對(duì)于多個(gè)圖像圖塊中的每個(gè)圖像圖塊,獲得包括標(biāo)識(shí)了從中獲得至少部分位于圖塊內(nèi)的每個(gè)修改后圖元的圖元的數(shù)據(jù)的對(duì)象列表;以及使用各自的對(duì)象列表來陰影化每個(gè)圖塊以用于顯示。
根據(jù)本發(fā)明的第二方面,提供了一種用于在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的方法,該方法包括以下步驟:提供幾何數(shù)據(jù);從所述幾何數(shù)據(jù)獲得多個(gè)圖元;從所述多個(gè)圖元中的至少一者獲得一個(gè)或多個(gè)修改后圖元;對(duì)于多個(gè)圖塊中的每個(gè)圖塊,獲得包括標(biāo)識(shí)了至少部分位于圖塊內(nèi)的每個(gè)修改后圖元的數(shù)據(jù)的對(duì)象列表;以及使用各自的對(duì)象列表來陰影化每個(gè)圖塊以用于顯示。
本發(fā)明的實(shí)施方式具有以下優(yōu)勢(shì):(全部或部分地)位于特定圖塊內(nèi)的所有修改后圖元能夠從該圖塊的對(duì)象列表來確定。
申請(qǐng)人已經(jīng)意識(shí)到,在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中,對(duì)于每個(gè)圖塊而言,如果修改后圖元僅在該圖塊的對(duì)象列表已經(jīng)產(chǎn)生之后被從一個(gè)或多個(gè)在該對(duì)象列表中標(biāo)識(shí)的圖元中獲得,那么并非事實(shí)上所有位于該圖塊中的修改后圖元都將被創(chuàng)建。正如申請(qǐng)人已經(jīng)意識(shí)到的,這是因?yàn)楦鶕?jù)從中獲得修改后圖元的圖元,這些修改后圖元可以位于一個(gè)或多個(gè)不同的圖塊中。
以示出為目的,圖5是顯示了劃分為四個(gè)矩形圖塊t1至t4的圖像170的圖示。在該圖示中,一個(gè)圖元180完全位于圖塊3(t3)中。從圖元180獲得的兩個(gè)修改后圖元以在圖元中被陰影化的方式示出。這些修改后圖元中的一者(由參考數(shù)字190所指示)也位于圖塊3中。但是,另一個(gè)修改后圖元200在鄰近的圖塊中,即圖塊4(t4)中。
因而,在該示例中,如果修改后圖元僅在每個(gè)圖塊的對(duì)象列表已經(jīng)被獲得之后才被獲得,那么在各個(gè)圖塊的渲染期間,圖塊4的圖像將是不準(zhǔn)確的。圖塊3的對(duì)象列表將包括用于標(biāo)識(shí)圖元180的數(shù)據(jù)。因而,在使用其對(duì)象列表來渲染圖塊3的情況下,修改后圖元190能夠針對(duì)該圖塊被獲得并被處理。但是,圖塊4的對(duì)象列表將不包括用于標(biāo)識(shí)圖元180的數(shù)據(jù),因?yàn)閳D元180不位于圖塊4內(nèi)。因此,在使用其對(duì)象列表渲染圖塊4的情況下,圖元200不能針對(duì)圖塊4被獲得并被處理。
因而,本發(fā)明使得更加準(zhǔn)確、更好質(zhì)量的圖像能夠在基于圖塊的計(jì)算機(jī)圖形渲染系統(tǒng)中被產(chǎn)生。
在實(shí)施方式中,一個(gè)或多個(gè)修改后圖元中的至少一者為所述多個(gè)圖元中的其中一個(gè)圖元的轉(zhuǎn)化、縮放和/或旋轉(zhuǎn)后的實(shí)例。
幾何數(shù)據(jù)可以定義用于用基于圖塊的計(jì)算機(jī)圖形系統(tǒng)進(jìn)行顯示的對(duì)象。所述對(duì)象可以為表面數(shù)據(jù)的補(bǔ)丁(patch),以及獲得所述多個(gè)圖元的步驟可以包括鑲嵌表面數(shù)據(jù)的補(bǔ)丁以獲得多個(gè)鑲嵌后的圖元。
在本發(fā)明的第二方面的實(shí)施方式中,一個(gè)或多個(gè)修改后圖元中的每一者可以被分配唯一標(biāo)識(shí)符;并且,對(duì)于每個(gè)對(duì)象列表,用于標(biāo)識(shí)每個(gè)至少部分位于該圖塊內(nèi)的修改后圖元的數(shù)據(jù)可以包括那個(gè)修改后圖元的各自的唯一標(biāo)識(shí)符。
但是,申請(qǐng)人已經(jīng)意識(shí)到,本發(fā)明的第一方面中定義的可替換的解決方案為可以存儲(chǔ)標(biāo)識(shí)了從中獲得至少部分位于圖塊內(nèi)的每個(gè)修改后圖元的圖元的數(shù)據(jù),而不是存儲(chǔ)標(biāo)識(shí)了至少部分位于特定圖塊內(nèi)的每個(gè)修改后圖元的數(shù)據(jù)。也就是,一個(gè)或多個(gè)修改后圖元可以被分配與從中獲得這些修改后圖元的圖元相同的標(biāo)識(shí)符。
從中獲得至少部分位于圖塊內(nèi)的每個(gè)修改后圖元的圖元可以位于不同的圖塊中。
本發(fā)明的該方面具有以下缺點(diǎn):修改后圖元可能需要在陰影化每個(gè)圖塊的情況下被重新獲得以用于顯示。但是,申請(qǐng)人已經(jīng)意識(shí)到,本發(fā)明的該方面具有以下顯著的優(yōu)勢(shì):可以減少需要被存儲(chǔ)在對(duì)象列表中的數(shù)據(jù)量,并且更充分地壓縮存儲(chǔ)在對(duì)象列表中的數(shù)據(jù)是可能的。因而,需要存儲(chǔ)對(duì)象列表的存儲(chǔ)器和需要寫入對(duì)象列表至存儲(chǔ)器或從存儲(chǔ)器讀取對(duì)象列表的存儲(chǔ)器帶寬可以被有益地減少。
通過示例的方式,鄰近的圖元或空間上的本地圖元(例如根據(jù)鑲嵌表面數(shù)據(jù)的補(bǔ)丁而獲得的鑲嵌后圖元)通常被分配連續(xù)的整數(shù)以作為標(biāo)識(shí)符。連續(xù)整數(shù)的行程(run)可以使用簡(jiǎn)單的方法(諸如行程長(zhǎng)度編碼(runlengthencoding))而簡(jiǎn)單地被壓縮。但是,如果整數(shù)因?yàn)橄嚓P(guān)聯(lián)的圖元不位于圖塊內(nèi)而沒有位于對(duì)象列表中,那么這些壓縮技術(shù)的有效性是有限的。向的圖元分配與從中獲得修改后的圖元的圖元相同的標(biāo)識(shí)符(整數(shù))增加了存在于特定對(duì)象列表內(nèi)的圖元整數(shù)的更長(zhǎng)行程的機(jī)會(huì)。這是特定的實(shí)例,因?yàn)樵谠S多應(yīng)用中,至少一個(gè)修改后的圖元將位于從中獲得該修改后的圖元的圖元的附近。因此,如果圖元?jiǎng)偤梦挥趫D塊之外,那么該圖元的修改后圖元中的一者可以位于該圖塊內(nèi)是可能的。
在本發(fā)明的該方面中,陰影化步驟可以包括從從中獲得修改后的圖元的圖元中重新獲得至少部分位于所述圖塊中的每個(gè)修改后的圖元。
在實(shí)施方式中,獲得一個(gè)或多個(gè)修改后的圖元的步驟可以包括應(yīng)用遞增地獲得修改后的圖元的序列的修改函數(shù)。
如果所述序列中多個(gè)修改后的圖元至少部分地位于一個(gè)圖塊中,則該方法還可以包括存儲(chǔ)用于指示所述多個(gè)修改后的圖元的序列中的第一和/或最后位置的數(shù)據(jù)。
在該實(shí)施方式中,所述陰影化步驟可以包括重新獲得所述修改后的圖元的序列并將至少一些所述修改后的圖元存儲(chǔ)在高速緩存中。這意味著不需要多于一次地獲得這些修改后的圖元及可以針對(duì)不同圖塊來恢復(fù)所述序列。
陰影化步驟可以包括重新獲得修改后的圖元的序列的一部分并存儲(chǔ)修改函數(shù)的狀態(tài)和最后重新獲得的修改后的圖元,藉此修改函數(shù)能夠開始從所述最后重新獲得的圖元中重新獲得所述修改后的圖元的序列。
根據(jù)本發(fā)明的第一方面,還提供了一種用于在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的系統(tǒng),該系統(tǒng)包括:至存儲(chǔ)器設(shè)備的接口;以及處理器,該處理器被配置成:經(jīng)由所述接口從所述存儲(chǔ)器設(shè)備讀取幾何數(shù)據(jù);從所述幾何數(shù)據(jù)獲得多個(gè)圖元;從所述多個(gè)圖元中的至少一者獲得一個(gè)或多個(gè)修改后的圖元;對(duì)于多個(gè)圖塊中的每個(gè)圖塊,獲得包括標(biāo)識(shí)了從中獲得至少部分位于圖塊內(nèi)的每個(gè)修改后的圖元的圖元的數(shù)據(jù)的對(duì)象列表;以及使用各自的對(duì)象列表來陰影化每個(gè)圖塊以用于顯示。
根據(jù)本發(fā)明的第二方面,還提供了一種用于在基于圖塊的計(jì)算機(jī)圖形系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的系統(tǒng),該系統(tǒng)包括:至存儲(chǔ)器設(shè)備的接口;以及處理器,該處理器被配置成:經(jīng)由所述接口從所述存儲(chǔ)器設(shè)備讀取幾何數(shù)據(jù);從所述幾何數(shù)據(jù)獲得多個(gè)圖元;從所述多個(gè)圖元中的至少一者獲得一個(gè)或多個(gè)修改后的圖元;對(duì)于多個(gè)圖塊中的每個(gè)圖塊,獲得包括標(biāo)識(shí)了至少部分位于圖塊內(nèi)的每個(gè)修改后的圖元的數(shù)據(jù)的對(duì)象列表;以及使用各自的對(duì)象列表來陰影化每個(gè)圖塊以用于顯示。
附圖說明
本發(fā)明的實(shí)施方式將參照附圖僅以示例的方式進(jìn)行描述,其中:
圖1是根據(jù)本發(fā)明優(yōu)選實(shí)施方式的顯示了用于在基于圖塊的渲染系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的設(shè)備的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施方式的顯示由圖塊化單元(tilingunit)執(zhí)行的步驟的流程圖;
圖3是根據(jù)本發(fā)明實(shí)施方式的顯示由圖塊化單元執(zhí)行的步驟的又一流程圖;
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施方式的顯示由圖塊化單元執(zhí)行的步驟的流程圖;
圖5是示出了被劃分成多個(gè)圖塊的圖像的圖示;
圖6a和6b是根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)在圖5所示的圖塊的對(duì)象列表中的信息的示意圖。
具體實(shí)施方式
在以下本發(fā)明的優(yōu)選實(shí)施方式中,多個(gè)圖元為通過鑲嵌表面數(shù)據(jù)的補(bǔ)丁產(chǎn)生的鑲嵌圖元。但是,應(yīng)當(dāng)理解的是本發(fā)明并不限于該實(shí)施方式且可以同樣與由其他方式產(chǎn)生的鑲嵌圖元一起使用或與非鑲嵌圖元一起使用。
圖1顯示了根據(jù)本發(fā)明優(yōu)選實(shí)施方式的示意圖,該示意圖示出了用于在基于圖塊的渲染系統(tǒng)中產(chǎn)生和陰影化計(jì)算機(jī)圖形圖像的圖形流水線。
定義了用于顯示的對(duì)象的幾何數(shù)據(jù)10被提供給幾何處理單元20,該幾何處理單元20從對(duì)象數(shù)據(jù)中獲得多個(gè)圖元。在該實(shí)施方式中,該幾何處理單元20包括鑲嵌單元,該鑲嵌單元從表面數(shù)據(jù)的補(bǔ)丁中獲得多個(gè)鑲嵌圖元。
鑲嵌是已知的技術(shù),該技術(shù)將低細(xì)節(jié)的模型分解為多個(gè)鑲嵌圖元,所述低細(xì)節(jié)的模型例如是更高階的表面,其一般在計(jì)算機(jī)圖形工業(yè)中被稱為“補(bǔ)丁”。“補(bǔ)丁”通常為定義了一組控制點(diǎn)的多項(xiàng)式方程的函數(shù),這些控制點(diǎn)描述了關(guān)于變量“t”(用于二維曲線)或域坐標(biāo)“u、v”(用于三維曲線)的曲線形狀。在計(jì)算機(jī)圖形中使用的補(bǔ)丁的一個(gè)示例是bezier(貝塞爾)補(bǔ)丁,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解也存在其他補(bǔ)丁。目前,通常使用平面補(bǔ)丁(flatpatch),例如三角補(bǔ)丁,這些平面補(bǔ)丁被分成之后由函數(shù)進(jìn)行位移和/或依賴位移高度圖的多個(gè)圖元來創(chuàng)建多個(gè)鑲嵌圖元。
正如本領(lǐng)域技術(shù)人員已知的,圖形流水線中表面數(shù)據(jù)的補(bǔ)丁的鑲嵌能夠由多個(gè)應(yīng)用編程接口(api)(例如,
在鑲嵌圖元已經(jīng)獲得之后,待修改的鑲嵌圖元被傳遞至修改單元30,該修改單元30可以包括編程元件。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,哪些圖元將被修改由圖形流水線確定。
對(duì)于待修改的鑲嵌圖元中的每個(gè)鑲嵌圖元,修改單元30或者對(duì)圖元進(jìn)行剔除,或者將修改函數(shù)應(yīng)用至與該圖元相關(guān)聯(lián)的幾何數(shù)據(jù)以產(chǎn)生該圖元的一個(gè)或多個(gè)被幾何修改后的實(shí)例(修改后的圖元)。
修改單元30可以應(yīng)用任何幾何變換,包括轉(zhuǎn)化、旋轉(zhuǎn)或縮放變換,或這些變換的任意組合。關(guān)于應(yīng)用什么樣的幾何變換,修改單元30可以是可編程的。每個(gè)修改后的圖元可以根據(jù)從中獲得該修改后的圖元的圖元(輸入圖元)而覆蓋圖像的整個(gè)不同區(qū)域,或者每個(gè)修改后的圖元所覆蓋的區(qū)域可以與由輸入圖元所覆蓋的圖像區(qū)域相重疊。
在該示例中,所述函數(shù)產(chǎn)生多個(gè)修改后的圖元。多個(gè)修改后的圖元中的每個(gè)修改后圖元處于距離從中獲得這些修改后的圖元的圖元位置位移后的位置處。這些圖元可以被遞增地產(chǎn)生。例如,第一個(gè)產(chǎn)生的圖元可能最接近輸入圖元的位置,隨后產(chǎn)生的每個(gè)實(shí)例漸漸遠(yuǎn)離輸入圖元的位置。但是,這僅僅是一個(gè)示例,并且這些修改后的圖元可以以任何次序或順序(包括任意的次序)產(chǎn)生。進(jìn)一步地,應(yīng)當(dāng)理解的是,例如在散焦模糊應(yīng)用中,多個(gè)修改后的圖元可以以與輸入圖元有小的偏移的方式被產(chǎn)生,而沒有必要以增加與輸入圖元的距離的方式被產(chǎn)生。
修改單元可以將可編程函數(shù)應(yīng)用于輸入圖元的頂點(diǎn),或者將可編程函數(shù)應(yīng)用于表面數(shù)據(jù)的補(bǔ)丁(輸入圖元從該表面數(shù)據(jù)的補(bǔ)丁中獲得)并接著對(duì)表面數(shù)據(jù)的修改后補(bǔ)丁進(jìn)行鑲嵌以獲得輸入圖元的修改后實(shí)例。
所產(chǎn)生的圖元被傳遞至圖塊化單元40,所述所產(chǎn)生的圖元包括未修改的和修改后的圖元。
可選地,圖元可以首先被傳遞至修剪和剔除單元(未示出),該修剪和剔除單元移除了例如任意背向圖元(back-facingprimitive)、屏幕外圖元或不可見圖元,并且剩余的圖元然后可以被傳遞至投影單元(也未示出),該投影單元將圖元轉(zhuǎn)換到屏幕空間中。
圖2是示出了由圖塊化單元40執(zhí)行的步驟的流程圖。
首先,在步驟90,圖塊化單元40將屏幕空間視區(qū)圖像劃分成多個(gè)圖塊,每個(gè)圖塊包括多個(gè)圖像像素。圖塊通常為矩形,但也可以為其他形狀。
在步驟100,對(duì)于每個(gè)圖塊,圖塊化單元40接著確定是否每個(gè)圖元都至少部分位于該圖塊中。也就是,是否圖元的至少一部分位于圖塊的可視區(qū)域中。這可以使用多個(gè)已知技術(shù)來進(jìn)行。
在步驟110,圖塊化單元40獲得對(duì)象列表,對(duì)于每個(gè)圖塊,該對(duì)象列表指示至少部分位于該圖塊中的圖元。即使沒有位于圖塊中的圖元并因而該圖塊的對(duì)象列表是空的,也會(huì)為那個(gè)圖塊創(chuàng)建對(duì)象列表。本領(lǐng)域技術(shù)人員還應(yīng)當(dāng)理解,有可能不是每個(gè)被確定為位于圖塊中的圖元實(shí)際上都在該圖塊的對(duì)象列表中被指示。例如,在圖塊化階段,可以確定圖元被圖塊中的其他圖元模糊化了,并因而該圖元在圖塊中是不可見的。該圖元可能因而不能在該圖塊的對(duì)象列表中被指示出,以節(jié)省以后不必要的處理該圖元的步驟。
未修改的圖元可以以多種方式被指示出。優(yōu)選地,標(biāo)識(shí)每個(gè)圖元的標(biāo)識(shí)符被存儲(chǔ)在各自的對(duì)象列表中。每個(gè)圖元例如可以被分配索引,或者每個(gè)圖元頂點(diǎn)可以被分配索引。
這些標(biāo)識(shí)符可以為各個(gè)圖元或圖元頂點(diǎn)引入或提供至幾何數(shù)據(jù)的指針。但是,在該實(shí)施方式中,對(duì)于每個(gè)鑲嵌圖元而言,正如在申請(qǐng)人已公開的英國(guó)專利公開號(hào)no.2480012中所描述的那樣,不是存儲(chǔ)用于圖元的完整幾何數(shù)據(jù),而是存儲(chǔ)例如針對(duì)補(bǔ)丁的一組控制點(diǎn)和鑲嵌參數(shù)之類的數(shù)據(jù),根據(jù)該數(shù)據(jù)能夠隨后獲得那個(gè)圖元的幾何數(shù)據(jù)。
圖3是示出根據(jù)本發(fā)明實(shí)施方式的用于指示修改后的圖元的方法的流程圖。
在步驟120,每個(gè)修改后的圖元被分配了唯一標(biāo)識(shí)符。例如,每個(gè)修改后的圖元可以被分配連續(xù)的整數(shù)。如果輸入圖元被分配了整數(shù)0,那么多個(gè)新的圖元實(shí)例可以分別被分配整數(shù)1,2,3,4……n。在步驟130,如果確定了其中一個(gè)或多個(gè)修改后的圖元至少部分位于圖塊內(nèi),那么,在步驟140,每個(gè)修改后圖元的唯一標(biāo)識(shí)符被存儲(chǔ)在那個(gè)圖塊的對(duì)象列表中。
僅以示出為目的,圖6a顯示了可以被存儲(chǔ)在圖5所示的圖塊3和4的對(duì)象列表中的信息。在該示例中,考慮圖元180(輸入圖元)被分配了標(biāo)識(shí)符0。修改后的圖元190被分配了標(biāo)識(shí)符1以及修改后的圖元200被分配了標(biāo)識(shí)符2。在圖塊3的對(duì)象列表中,存儲(chǔ)了圖元180的標(biāo)識(shí)符(0),還存儲(chǔ)了修改后的圖元200的標(biāo)識(shí)符(1)。在圖塊4的對(duì)象列表中,存儲(chǔ)了修改后的圖元200的標(biāo)識(shí)符(2)。
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施方式的顯示了用于指示修改后的圖元的可替換方法的流程圖。
在步驟150,如果確定了其中一個(gè)或多個(gè)修改后的圖元位于圖塊內(nèi),那么在步驟160,輸入圖元的標(biāo)識(shí)符(一個(gè)/多個(gè)索引)被存儲(chǔ)在那個(gè)圖塊的對(duì)象列表中,其中從輸入圖元中可以產(chǎn)生那些修改后的圖元。換句話說,每個(gè)修改后的圖元可以被分配與輸入圖元相同的標(biāo)識(shí)符(一個(gè)/多個(gè)索引)。例如,如果輸入圖元被分配了整數(shù)0,那么那個(gè)圖元的每個(gè)修改后的實(shí)例也可以被分配索引0。
輸入圖元的一個(gè)/多個(gè)索引可以被存儲(chǔ)一次,以用于那個(gè)圖元的位于圖塊內(nèi)的每個(gè)修改后實(shí)例,但是優(yōu)選地,每個(gè)列表僅存儲(chǔ)輸入圖元的一個(gè)/多個(gè)索引一次,而不管那個(gè)圖元的位于特定圖塊內(nèi)的實(shí)例的數(shù)量。
圖6b顯示了在該優(yōu)選實(shí)施方式中可以被存儲(chǔ)在圖5中的圖塊3和4的對(duì)象列表中的信息。在圖塊3的對(duì)象列表中,存儲(chǔ)了圖元180的標(biāo)識(shí)符(0)。應(yīng)當(dāng)注意的是,在該示例中,僅存儲(chǔ)圖元180的標(biāo)識(shí)符(0)一次,雖然圖元180和從圖元180獲得的修改后圖元190二者都位于圖塊3內(nèi)。在圖塊4的對(duì)象列表中,圖元180的標(biāo)識(shí)符(0)也被存儲(chǔ)。
在該實(shí)施方式中,不能從圖塊的對(duì)象列表中識(shí)別出在對(duì)象列表中被標(biāo)識(shí)出的哪個(gè)或者多少個(gè)圖元實(shí)例是位于該圖塊內(nèi)的。但是,盡管如此,該實(shí)施方式具有以下優(yōu)勢(shì):如果輸入圖元的實(shí)例中的至少一個(gè)實(shí)例位于圖塊內(nèi),則從中獲得修改后的實(shí)例的該輸入圖元在對(duì)象列表中被標(biāo)識(shí)出,而不管該輸入圖元自身是否位于該圖塊內(nèi)。因而,與以上實(shí)施方式類似,所有位于該圖塊內(nèi)的修改后圖元可以被處理以使用其對(duì)象列表精確地對(duì)圖塊進(jìn)行陰影化。此外,該優(yōu)選實(shí)施方式使得存儲(chǔ)在對(duì)象列表中的數(shù)據(jù)能夠以高度壓縮格式進(jìn)行存儲(chǔ)。
如以下更加詳細(xì)描述的那樣,為了對(duì)圖塊進(jìn)行陰影化,相同的修改函數(shù)被再次應(yīng)用至在對(duì)象列表中所標(biāo)識(shí)的每個(gè)圖元。接著,一旦修改后的圖元已經(jīng)被重新產(chǎn)生,那么哪些圖元位于圖塊內(nèi)(如果有的話)就可以使用以上描述的已知技術(shù)來確定。
然而,該實(shí)施方式是有缺點(diǎn)的,即不僅必須重新產(chǎn)生任何位于圖塊內(nèi)的修改后圖元,而且會(huì)不必要地計(jì)算實(shí)際上未位于圖塊內(nèi)的修改后圖元。假定每個(gè)圖元可以具有幾百或幾千個(gè)修改后實(shí)例,那么這會(huì)帶來巨大的計(jì)算資源浪費(fèi)。
優(yōu)選地,包括多個(gè)比特的標(biāo)記因而被存儲(chǔ)在圖塊的對(duì)象列表中或被存儲(chǔ)在存儲(chǔ)器的另一區(qū)域中,該標(biāo)記用于指示在對(duì)象列表中所標(biāo)識(shí)的哪些圖元在該圖塊內(nèi)具有修改后實(shí)例。這避免了必須將修改函數(shù)再次應(yīng)用至對(duì)象列表中所標(biāo)識(shí)的所有圖元,同時(shí)保留了能夠?qū)?duì)象列表中的數(shù)據(jù)以高度壓縮格式進(jìn)行存儲(chǔ)的優(yōu)勢(shì)。
如以上提到的,修改后的圖元經(jīng)常被遞增地產(chǎn)生,以使一個(gè)修改后的圖元根據(jù)輸入圖元?jiǎng)?chuàng)建,并且接著第二個(gè)修改后的圖元根據(jù)該修改后的圖元?jiǎng)?chuàng)建,等等,直至修改后的圖元的序列已經(jīng)被獲得。
在該實(shí)施方式中,更優(yōu)選地,除了存儲(chǔ)標(biāo)識(shí)了圖元(從該圖元中獲得修改后的圖元的序列)的標(biāo)識(shí)符之外,還存儲(chǔ)了指示位于圖塊內(nèi)的這些修改后的圖元的序列中的第一個(gè)和/或最后一個(gè)位置的數(shù)據(jù)。該數(shù)據(jù)可以被存儲(chǔ)在該圖塊的對(duì)象列表中或存儲(chǔ)在存儲(chǔ)器的另一區(qū)域中。
該實(shí)施方式具有以下優(yōu)勢(shì):在修改后的圖元的序列的子集位于特定圖塊內(nèi)的情況下,不是所有的修改后圖元的序列都需要相對(duì)于那個(gè)圖塊被重新獲得,如以下更具體解釋的那樣。
但是,存在著這樣的折衷:需要為在對(duì)象列表中被標(biāo)識(shí)的每個(gè)圖元存儲(chǔ)用于指示第一個(gè)和/或最后一個(gè)序列位置的數(shù)據(jù)。在該描述的實(shí)施方式中,在圖元為鑲嵌圖元的情況下,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以具有由每個(gè)補(bǔ)丁所產(chǎn)生的幾千個(gè)圖元。為每個(gè)圖元存儲(chǔ)該位置數(shù)據(jù)將需要大量的存儲(chǔ)器。
申請(qǐng)人因此已經(jīng)意識(shí)到,在該實(shí)施方式中,一個(gè)很好的折衷辦法是確定位于圖塊內(nèi)的任何修改后圖元的最高和/或最低序列位置,這些修改后圖元從鑲嵌圖元中獲得,這些鑲嵌圖元從表面數(shù)據(jù)的補(bǔ)丁中獲得。這意味著對(duì)于整個(gè)補(bǔ)丁而言,需要每個(gè)圖塊存儲(chǔ)僅兩個(gè)整數(shù)。該技術(shù)可能導(dǎo)致產(chǎn)生更多不需要的修改后圖元,但需要較少存儲(chǔ)器,同時(shí)避免了重新獲得一些不需要的修改后圖元。
在一些實(shí)施方式中,可能存在著不止一種類型的修改單元30,該修改單元30將不同的修改函數(shù)應(yīng)用至輸入圖元。在這些實(shí)施方式中,優(yōu)選地,每個(gè)修改函數(shù)被分配了標(biāo)識(shí)符,并且標(biāo)識(shí)了修改函數(shù)的標(biāo)識(shí)符被存儲(chǔ)起來,其中,該修改函數(shù)產(chǎn)生位于特定圖塊內(nèi)的修改后的圖元。該標(biāo)識(shí)符可以被存儲(chǔ)在該圖塊的對(duì)象列表中或被存儲(chǔ)在其他位置。
在這些實(shí)施方式中,指示修改后的圖元的序列中的第一和/或最后位置的數(shù)據(jù)可以關(guān)于每個(gè)修改單元而被存儲(chǔ)。
可以例如以本領(lǐng)域技術(shù)人員公知的方式通過使用索引/頂點(diǎn)緩沖器來壓縮索引的列表。
申請(qǐng)人的未公開英國(guó)專利申請(qǐng)no.1104066.4描述了多種用于壓縮由表面數(shù)據(jù)補(bǔ)丁的鑲嵌而獲得的鑲嵌圖元的索引列表的技術(shù),這些技術(shù)利用了表面數(shù)據(jù)的鑲嵌補(bǔ)丁的內(nèi)部結(jié)構(gòu)知識(shí)。
應(yīng)當(dāng)理解的是,為修改后的圖元分配與輸入圖元相同的一個(gè)/多個(gè)索引的重大意義在于可以使用相同的壓縮技術(shù)來壓縮所述一個(gè)/多個(gè)索引。
對(duì)象列表50可以被存儲(chǔ)在存儲(chǔ)器中,例如緩沖器中。
返回參照?qǐng)D1,在本發(fā)明的優(yōu)選實(shí)施方式中,為了對(duì)每個(gè)圖塊進(jìn)行陰影化以用于顯示,圖塊的對(duì)象列表被讀取,并且在必要時(shí),存儲(chǔ)在對(duì)象列表中的索引列表被解壓縮。
在該實(shí)施方式中,鑲嵌圖元的索引和相關(guān)聯(lián)的補(bǔ)丁數(shù)據(jù)和鑲嵌因子被傳遞至鑲嵌單元(未示出)。鑲嵌單元對(duì)表面數(shù)據(jù)的補(bǔ)丁進(jìn)行再次鑲嵌以獲得在對(duì)象列表中被標(biāo)識(shí)的鑲嵌圖元的幾何數(shù)據(jù)。
修改函數(shù)接著可以被修改單元60再次應(yīng)用于與其中一個(gè)或多個(gè)圖元相關(guān)聯(lián)的幾何數(shù)據(jù)以重新獲得一個(gè)或多個(gè)修改后的圖元,例如,在讀取了用于指示該圖元的修改后實(shí)例位于圖塊內(nèi)的數(shù)據(jù)的情況下。修改單元60可以是與修改單元30相同的單元或可以是單獨(dú)的單元,該單獨(dú)的單元與修改單元30應(yīng)用相同的修改函數(shù)。在在圖塊化之前使用應(yīng)用不同修改函數(shù)的多個(gè)修改單元產(chǎn)生修改后圖元的情況下,應(yīng)當(dāng)理解的是,在圖塊化之前,修改單元60必須應(yīng)用與被應(yīng)用至輸入圖元的函數(shù)相同的修改函數(shù)??梢酝ㄟ^例如讀取該圖元的修改函數(shù)標(biāo)識(shí)符來確定哪個(gè)修改函數(shù)應(yīng)該被應(yīng)用。
如以上所提到的,一些修改單元可以遞增地進(jìn)行操作,并且即使已知圖元的哪些實(shí)例位于特定圖塊內(nèi),也不可能僅產(chǎn)生這些實(shí)例。
在這種情況下,由修改單元60產(chǎn)生的所有修改后實(shí)例可以被存儲(chǔ)在本地存儲(chǔ)器中,例如高速緩存中。這具有以下優(yōu)勢(shì):在這些實(shí)例遍布一個(gè)以上的圖塊的情況下,關(guān)于另一圖塊,修改單元可以不需要針對(duì)相同的圖元被應(yīng)用第二次。在修改單元60被應(yīng)用于在對(duì)象列表中所標(biāo)識(shí)的圖元之前,可以確定修改后的圖元實(shí)例是否已經(jīng)被存儲(chǔ)在高速緩存中。如果是的話,對(duì)于那個(gè)圖元而言,就不需要再次重新應(yīng)用修改單元60。
在可替換的實(shí)施方式中,修改單元60可以在位于特定圖塊內(nèi)的最后一個(gè)圖元已經(jīng)被產(chǎn)生之后被停止。這例如可以通過讀取指示出序列中位于該圖塊內(nèi)的最后一個(gè)圖元的數(shù)據(jù)來確定。在該實(shí)施方式中,修改單元60的狀態(tài)以及最后產(chǎn)生的修改后圖元可以被存儲(chǔ)起來,以使修改單元能夠從已經(jīng)針對(duì)另一圖塊而停止的地方繼續(xù)執(zhí)行。因而,例如在前100個(gè)修改后圖元已經(jīng)被產(chǎn)生且接著隨后的圖塊需要第101個(gè)修改后圖元的情況下,修改單元并不需要從起始處開始重新獲得修改后圖元的序列。位于特定圖塊內(nèi)的第一個(gè)修改后圖元可以通過讀取指示出序列中位于圖塊內(nèi)的第一個(gè)修改后圖元的位置的數(shù)據(jù)來確定。
在該可替換的實(shí)施方式中,在修改單元60被應(yīng)用于在對(duì)象列表中標(biāo)識(shí)的圖元之前,可以確定是否具有相同標(biāo)識(shí)符的任意修改后圖元都被存儲(chǔ)在高速緩存中。如果是的話,可以提取序列中與所需要的修改后圖元最接近的修改后圖元,并且,在修改單元的狀態(tài)已經(jīng)被存儲(chǔ)的情況下,修改單元可以從該修改后圖元繼續(xù)執(zhí)行直至產(chǎn)生所需要的修改后圖元。在修改后圖元必須被遞增地產(chǎn)生的應(yīng)用中,序列中較早的最接近的修改后圖元可以不必是最接近的修改后圖元。
一旦修改后的實(shí)例已經(jīng)被重新產(chǎn)生,則如果必要的話,哪些實(shí)例位于特定圖塊中可以使用以上描述的已知技術(shù)來確定。
對(duì)于每個(gè)圖塊,在針對(duì)位于該圖塊中的每個(gè)修改后圖元和未修改后圖元的數(shù)據(jù)已經(jīng)被獲得之后,圖元可以被處理以使用已知技術(shù)來渲染圖像。
例如,圖元可以被傳遞至隱藏面消除單元70,該隱藏面消除單元70消除了圖塊中不可見的任何表面,并且所得到的像素?cái)?shù)據(jù)可以被傳遞至紋理和陰影化單元80,在用于顯示的最終像素值被寫入存儲(chǔ)器之前,該紋理和陰影化單元80應(yīng)用像素或紋理陰影化。