專利名稱:用于在3d圖形子系統(tǒng)中可編程過濾紋理映射數(shù)據(jù)的方法和機制的制作方法
技術領域:
本發(fā)明實施例涉及計算機圖形學。更具體地說,本發(fā)明實施例涉及處理紋理映射(texture map)數(shù)據(jù)。
背景技術:
圖形應用并且特別是三維(3D)圖形應用長久以來是由個人計算機所執(zhí)行的處理最集中的活動之一。為了改進圖形處理能力,圖形協(xié)處理器迅速增長并且可廣泛用于最新型的個人計算機上。圖形協(xié)處理器是被設計成用于迅速執(zhí)行由圖形應用所要求的集中處理任務的專用集成電路。
把場景信息(源數(shù)據(jù))變換為3D圖像(顯示輸出)要求多個操作。這些操作總體被稱作3D圖形渲染流水線。由流水線所執(zhí)行的操作可以被分組為某種基本功能。這些功能之一是紋理映射。紋理映射是在最后渲染中把用于表示物體表面屬性(諸如外觀、反射率或其它這種屬性)的一、二或三維圖像應用于用于表示所述物體的三維網(wǎng)格的過程。雖然一般通常使用二維圖像,然而其它維數(shù)也是可以的。
經(jīng)常是在最后渲染中把紋理圖像應用于物體的情況,在采樣紋理元素(紋元texel)和源紋理圖像的數(shù)目以及圖元(像素)的數(shù)目之間存在不一致性,其中把所述圖像映射到所述圖元。當在給定范圍內(nèi)紋元的數(shù)目小于像素的數(shù)目時,那么要求上采樣紋理。當上采樣紋理時必須使用某種方案來填入中間值。這里此方案可以被稱作“紋理過濾”并且主要由固定功能狀態(tài)機來執(zhí)行。
當前大部分圖形協(xié)處理器支持四種類型的紋理過濾;點采樣、雙線性過濾、三線性過濾和各向異性過濾。隨著過濾方法變得越來越復雜,用于執(zhí)行所述方法所要求的狀態(tài)機變得越來越復雜并且在圖形協(xié)處理器內(nèi)要求更多資源。這與對紋理數(shù)據(jù)的使用繼續(xù)擴展的事實聯(lián)系在一起,例如紋理數(shù)據(jù)正在被用于燈光(lighting)以及除顏色之外的其它表面屬性,致使通常使用的線性內(nèi)插是低效的或甚至是不夠的。
以舉例形式而不是以限制的形式依照附圖舉例說明了本發(fā)明的實施例,其中同樣的附圖標記表明同樣的元件。應當注意,在此公開內(nèi)容中對“一”或“一個”實施例的不同參考不必指的是相同的實施例,并且這種參考意思是指至少一個。
圖1A是本發(fā)明一個實施例的系統(tǒng)的框圖。
圖1B是依照本發(fā)明一個實施例的紋理采樣的圖。
圖2是依照本發(fā)明一個實施例的設置紋理過濾模塊的流程圖。
圖3是依照本發(fā)明一個實施例的紋理過濾的流程圖。
具體實施例方式
圖1A是本發(fā)明一個實施例的系統(tǒng)的框圖。主機處理器100由總線102耦合到存儲器104。圖形協(xié)處理器106也耦合到總線102。另外,圖形協(xié)處理器106可以借助加速圖形端口(accelerated graphicsport AGP)112耦合到存儲器104。AGP可以遵循在2002年9月公布的加速圖形端口AGP V3.0接口說明Rev.1.0(以下稱為AGP說明)。AGP112能夠快速訪問在存儲器104中所駐留的圖形數(shù)據(jù)。幀緩沖器108和顯示器110也耦合到總線。在某些實施例中,可以把幀緩沖器108包含在存儲器104內(nèi)。圖形協(xié)處理器106包括像素處理流水線120。在像素處理流水線120內(nèi)是頂點處理模塊122、圖元裝配(primitiveassembly)模塊124、片段處理模塊126和幀緩沖器處理模塊128。在操作中,頂點處理模塊122接收頂點數(shù)據(jù),所述頂點數(shù)據(jù)例如可以包括與在圖形圖像中的頂點有關的3D位置信息、色彩信息及其它類似信息。在一個實施例中,頂點數(shù)據(jù)形式為V=X,Y,Z,Tu,Tv,RGB。在此表達式中,X,Y,Z是頂點的三維笛卡兒坐標,Tu和Tv是在紋理映射中相應紋元的二維坐標,而RGB是頂點的紅色、綠色和藍色值。也可以考慮頂點數(shù)據(jù)的其它形式和內(nèi)容。
頂點處理模塊對所傳達的3D位置數(shù)據(jù)進行三維變換,并且例如可以應用燈光。所處理的頂點被傳遞到圖元裝配模塊,所述圖元裝配模塊接收連接性數(shù)據(jù)。所述連接性數(shù)據(jù)可以包括用于允許根據(jù)所接收的頂點和下標(index)來裝配圖元(典型情況下為三角形)的下標。
圖元被傳遞到片段處理模塊126,所述片段處理模塊126處理所述圖元以便識別片段并且應用紋理數(shù)據(jù)以便構(gòu)建輸出。如這里所用,“片段”指的是一個像素或被持續(xù)處理以便產(chǎn)生輸出的連續(xù)像素的組。片段處理與紋理過濾模塊130交換與用于映射片斷的紋理有關的數(shù)據(jù)。
紋理過濾模塊130與片段處理模塊126通信以便提供用于應用到像素的紋元。在一個實施例中,紋理過濾模塊130是可編程的。在這里,可編程被認為意指能夠執(zhí)行由來自所定義指令集的一個或多個指令所組成的軟件程序。下面在表1中闡明了指令集的一個例子。
表1
在本發(fā)明的各個實施例中可以使用更短或更長的候選指令集。
在一個實施例中,紋理過濾模塊130包括多個紋理處理核心(texture processing cores TPC)132(在圖1A中示出了16個TPC)。其它實施例可以具有更多或更少的TPC。在一個實施例中,存在單個TPC。在一個實施例中,每個TPC 132能夠與其它TPC 132中的每個并行處理像素。每個核心132可以具有寄存器組134,所述寄存器組134可以包括各種類型的寄存器,諸如控制寄存器、源寄存器、臨時寄存器和輸出寄存器。
在一個實施例中,控制寄存器包括采樣寄存器、狀態(tài)寄存器、地址寄存器、偏移寄存器和多個小數(shù)寄存器。在一個實施例中,采樣寄存器具有對應于每個源寄存器的一個位,用于表明是否應當采樣所述源寄存器。例如,如果存在十六個源寄存器,那么采樣寄存器可以是十六位寄存器,其中一個位對應于一個十六個源寄存器。在一個實施例中,狀態(tài)寄存器用來表明在諸如上溢、除以零等某種條件之后TPC的狀態(tài)。在一個實施例中,地址寄存器可以是包含紋理映射數(shù)據(jù)的地址的32位寄存器。在一個實施例中,此寄存器可以僅僅由應用編程接口(API)訪問,而并不向程序員提供直接訪問。偏移寄存器可以用來對應于最近的紋元坐標來向紋理數(shù)據(jù)中提供偏移。小數(shù)寄存器可以用來保存在每個維數(shù)中紋元采樣之間的小數(shù)坐標。在一個實施例中,這些往往由片段處理模塊126提供。在上面一個實施例中,其中V=X,Y,Z,Tu,Tv,RGB;Tu和Tv對應于要被紋理映射以便提供到紋理過濾模塊的像素。作為一個例子,八像素一維紋理坐標0.175可能會落在第二(0.125)和第三(0.25)紋元之間。它可能會等同于小數(shù).2。在此實施例中的小數(shù)被建立為(.175-.125)/.125或更一般地說,坐標越小,越接近由增量值所除的較小增量。
圖1B是在本發(fā)明的一個實施例中紋理采樣的圖。在一個實施例中,提供了十六個源寄存器。在一個實施例中,每個寄存器對應于在紋理采樣點的TuTv采樣位置周圍的4×4柵格中的一個紋元,并且可能對應于依照這種方式尋址的像素。雖然TuTv可以映射到在紋元5和6以及紋元9和10之間的位置,然而把在片中的十六個紋元貢獻給被分配給TuTv的紋理值可以由紋理過濾程序來定義。在某些實施例中,只有紋元5、6、9和10作出了貢獻。在其它實施例中,所有十六個紋元都可以作出貢獻。在其它實施例中,在組中的所有對角線像素可以作出貢獻。如所圖示,紋理過濾模塊的可編程性質(zhì)允許耐用且靈活的紋理過濾選項。
可以提供臨時寄存器以供程序員在對采樣數(shù)據(jù)執(zhí)行中間計算時候選使用。提供輸出寄存器以便一旦完成過濾操作,那么就存儲輸出。在一個實施例中,提供32位寄存器來接收最終結(jié)果??梢允褂酶蠹拇嫫鳎欢谀承嵤├?,32位ARGB(α紅綠藍)值被認為是足夠的。
實際過濾可以通過由紋理過濾模塊130把所想要的過濾程序加載到紋理處理核心中來執(zhí)行。過濾程序?qū)谒幚淼钠?。在圖像的區(qū)域內(nèi),可能希望據(jù)此向紋理數(shù)據(jù)應用各種效果。因而,對于特定的圖形圖像,可能使用許多過濾程序。
例如,被施加到圖像上皮夾克的發(fā)光部分的過濾程序往往可能不同于被施加到皮夾克的磨損部分的過濾程序。通過在e紋理過濾模塊中使用不同的程序,可以適應不同的效果。在渲染給定場景圖像的過程中使用幾個過濾程序類似于在當前固定功能方案下,渲染給定場景怎樣可以包括對于場景的不同部分在不同的固定功能過濾狀態(tài)之間切換。
所使用的程序例如會影響實際上采樣16個紋元中的哪些來執(zhí)行紋理過濾。在一個實施例中,紋理數(shù)據(jù)可以被布置在存儲器中以便優(yōu)化對可能要采樣的紋元的訪問。例如,如果采樣寄存器表明每四個紋元值是活動的,可以存儲紋理數(shù)據(jù)以便點1、5、9和13在存儲器中是鄰接的,點2、6、10等是鄰接的。作為另一例子,其中每兩個紋元是活動的,1、3、5、7等是鄰接的,而2、4、8等是鄰接的。存儲器中的此布置可以由主機處理器100或圖形協(xié)處理器106來執(zhí)行。
布置存儲器要求特定量的處理器資源,在一個實施例中,確定了何時可能的紋理數(shù)據(jù)使用超過重新布置所述紋理數(shù)據(jù)所要求的閾值代價。因而,在紋理數(shù)據(jù)的使用證明重新布置它的代價是正確的情況下,在一個實施例中,在存儲器中重新布置所述紋理數(shù)據(jù)以便便于訪問??梢愿鶕?jù)目標方針來選擇閾值,諸如要利用給定程序所處理的紋元數(shù)目。
一旦紋理過濾完成并且產(chǎn)生輸出,那么輸出值可以被傳回到片段處理模塊126以便允許建立輸出片段。由片段處理模塊126所建立的輸出被傳遞到幀緩沖器處理模塊128。幀緩沖器處理模塊128把所接收的像素與現(xiàn)有的幀緩沖器組合以便輸出到顯示器110。
圖2是在本發(fā)明的一個實施例中設置紋理過濾模塊的流程圖。在功能塊202,紋理過濾程序被加載到紋理過濾模塊的紋理處理核心中。在功能塊204,采樣寄存器被初始化以便表明在采樣點周圍的紋元,所述采樣點被作為過濾過程的一部分采樣。在判定塊206,確定了結(jié)合所要求采樣數(shù)目所采樣的紋元是否證明紋理數(shù)據(jù)在存儲器中的重構(gòu)是合理的。如果是的話,那么重新排序紋理數(shù)據(jù)以便在功能塊208能高效訪問。在重新排序之后或者不要求重新排序,在功能塊210初始化地址寄存器。
圖3是依照本發(fā)明一個實施例的紋理過濾的流程圖。在功能塊302,紋理過濾從頂點流水線取出所要渲染的像素的坐標數(shù)據(jù)。在一個實施例中,這些數(shù)據(jù)會從片段處理模塊中取出。在功能塊304,從存儲器中取出從采樣寄存器所識別的紋元值。在功能塊306,向小數(shù)寄存器加載坐標數(shù)據(jù)。紋理處理核心用來在功能塊308執(zhí)行過濾程序。在判定塊310,確定了執(zhí)行過濾程序是否需要設置狀態(tài)標志。如果執(zhí)行要求狀態(tài)標志,諸如除以零或上溢,那么在功能塊312將適當值加載到狀態(tài)寄存器。如果不要求狀態(tài)標志或者在已經(jīng)加載狀態(tài)寄存器之后,那么在功能塊314,輸出值被加載到輸出寄存器中并且發(fā)新哈通知輸出可用。在判定塊316,確定了是否存在要使用現(xiàn)有的過濾程序渲染的更多像素。如果是的話,流程繼續(xù)進行。如果不是的話,流程結(jié)束。
盡管上述流程圖依照特定次序來布置,然而應當理解的是,可以依照并行或與描述不同的次序來執(zhí)行某些操作。據(jù)此,這種并行化或重新布置在本發(fā)明實施例的范圍和考慮之內(nèi)。還應當注意,雖然只在一個實施例中,單個紋理處理核心可以存在于紋理過濾模塊中,然而對于具有多個紋理處理核心的實施例,可以與在圖3中所描述的流程之后的每個核心并行處理像素。
在上述說明中,已經(jīng)參考具體實施例描述了本發(fā)明。然而,在不脫離由所附權(quán)利要求闡述的本發(fā)明實施例的寬闊精神和范圍的情況下,對其的各種修改和變化將是顯而易見的。因此,說明書和附圖將只是說明性而并非限制性意義。
權(quán)利要求
1.一種方法包括取出所要渲染的像素的坐標數(shù)據(jù);取出對應于所述像素的紋元值;通過可編程濾波器來過濾所述紋元值;并且輸出所述像素的所過濾的紋理值。
2.如權(quán)利要求1所述的方法,其中過濾紋元值包括讀取控制寄存器;并且使用在所述控制寄存器中所指定的至少一個位置作為源位置。
3.如權(quán)利要求1所述的方法,其中取出坐標數(shù)據(jù)包括從頂點流水線中取回X,Y,Z坐標數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,還包括把坐標小數(shù)數(shù)據(jù)寫入多個寄存器。
5.如權(quán)利要求1所述的方法,其中輸出包括把所過濾的紋理值寫入寄存器;并且向處理器發(fā)新哈通知所過濾的紋理值可用。
6.一種設備包括片段處理模塊;可編程的紋理過濾模塊,與所述片段處理模塊通信以便可編程地過濾對應于至少一個像素的紋理數(shù)據(jù);和幀緩沖器處理模塊,用于把所過濾的紋理數(shù)據(jù)與現(xiàn)有的幀緩沖器組合。
7.如權(quán)利要求6所述的設備,其中可編程的紋理過濾模塊包括多個控制寄存器;多個源寄存器;多個臨時寄存器;和至少一個輸出寄存器。
8.如權(quán)利要求7所述的設備,其中所述源寄存器是只讀的。
9.如權(quán)利要求7所述的設備,其中所述多個控制寄存器包括狀態(tài)寄存器;地址寄存器;偏移寄存器;和多個小數(shù)寄存器。
10.如權(quán)利要求7所述的設備,其中多個控制寄存器包括至少一個采樣寄存器具有對應于每個源寄存器的位,用于表明是否要求采樣相應的源寄存器。
11.如權(quán)利要求6所述的設備,其中可編程的紋理過濾模塊包括多個處理核心,用于執(zhí)行指令集。
12.如權(quán)利要求6所述的設備,其中多個核心的子集將對至少一個像素并行執(zhí)行過濾程序。
13.一種系統(tǒng),包括存儲器;耦合到所述存儲器的多個紋理處理核心(TPC),用于可編程地過濾紋理數(shù)據(jù);片段處理模塊,用于向至少一個片段應用所過濾的紋理數(shù)據(jù);和顯示器,用于顯示使用所述至少一個片段所創(chuàng)建的圖像。
14.如權(quán)利要求13所述的系統(tǒng),其中多個TPC和片段處理模塊與主機處理器集成。
15.如權(quán)利要求13所述的系統(tǒng),其中多個TPC和片段處理模塊駐留在圖形協(xié)處理器中。
16.如權(quán)利要求13所述的系統(tǒng),包括寄存器組,與多個TPC中的每個TPC相關聯(lián)。
17.如權(quán)利要求15所述的系統(tǒng),還包括加速圖形端口,用于把所述圖形協(xié)處理器耦合到所述存儲器。
18.一種包含可執(zhí)行計算機程序指令的計算機可讀存儲介質(zhì),當所述可執(zhí)行計算機程序指令執(zhí)行時使數(shù)字處理系統(tǒng)執(zhí)行如下方法,所述方法包括取出所要渲染的像素的坐標數(shù)據(jù);取出對應于所述像素的紋元值;通過可編程濾波器來過濾所述紋元值;并且輸出所述像素的所過濾的紋理值。
19.如權(quán)利要求18所述的計算機可讀存儲介質(zhì),當其執(zhí)行時使數(shù)字處理系統(tǒng)所執(zhí)行的方法還包括讀取控制寄存器;并且使用在所述控制寄存器中所指定的至少一個位置作為源位置。
20.如權(quán)利要求18所述的計算機可讀存儲介質(zhì),當其執(zhí)行時使數(shù)字處理系統(tǒng)所執(zhí)行的方法還包括從頂點流水線中取回X,Y,Z坐標數(shù)據(jù)。
21.如權(quán)利要求18所述的計算機可讀存儲介質(zhì),當其執(zhí)行時使數(shù)字處理系統(tǒng)所執(zhí)行的方法還包括把坐標小數(shù)數(shù)據(jù)寫入多個寄存器。
22.如權(quán)利要求18所述的計算機可讀存儲介質(zhì),當其執(zhí)行時使數(shù)字處理系統(tǒng)所執(zhí)行的方法還包括把所過濾的紋理值寫入寄存器;并且向處理器發(fā)新哈通知所過濾的紋理值可用。
全文摘要
一種用于提供靈活紋理過濾的系統(tǒng)、方法和設備??删幊痰募y理過濾模塊被引入與主機集成的圖形處理器和圖形協(xié)處理器的圖形處理流水線。然后可以把來自所定義的指令集的程序加載到紋理處理核心中以便按照所述程序來處理紋理數(shù)據(jù)。
文檔編號G06T15/00GK1910621SQ200480039384
公開日2007年2月7日 申請日期2004年12月23日 優(yōu)先權(quán)日2003年12月29日
發(fā)明者K·帕利斯特 申請人:英特爾公司