用于改善msaa渲染效率的技術(shù)的制作方法
【專利說明】用于改善MSAA渲染效率的技術(shù)
[0001] 背景
[0002] 為在渲染三維(3D)對象的二維(2D)圖像時降低鋸齒效應(yīng)(aliasingeffect) (例如,沿著像素之間的邊界的鋸齒形線),發(fā)明了各種超采樣抗鋸齒(SSAA)技術(shù),其中,首 先在采樣數(shù)據(jù)內(nèi)以比稍后從該采樣數(shù)據(jù)創(chuàng)建的最終2D圖像更細(xì)的分辨率創(chuàng)建2D圖像。通 常,在SSAA中,對于最終2D圖像的每個像素,選擇所選數(shù)量的樣本(常常是2,4,8或16), 從最終2D圖像的圖像平面內(nèi)的那些像素中的每一個的角度,對于每一個像素取出3D對象 的該數(shù)量的樣本。每一個樣本都指定與該樣本所屬的像素相關(guān)聯(lián)的顏色,使用每一個像素 的樣本的各種顏色來導(dǎo)出被給予最終2D圖像中的每一個像素的顏色。
[0003] 令人遺憾的是,SSAA要求存儲器和處理器帶寬,因為始終為每一個樣本存儲完全 分離的顏色數(shù)據(jù)值,不管是否存在其中所有樣本都是相同顏色的一個或多個像素的區(qū)域。 事實上,至少就顏色數(shù)據(jù)值的存儲而言,超采樣中的樣本基本上被視為好像每一個都是微 型像素。在必須以足以支持運動視頻(例如,視頻游戲中的風(fēng)景和人物的圖像)的高速率 實時執(zhí)行2D圖像的渲染的應(yīng)用中,這樣對待樣本需要過于昂貴的處理器和存儲器帶寬量。
[0004] 為了獲得以較細(xì)的分辨率采樣的優(yōu)點而沒有這樣的高帶寬要求,構(gòu)想了各種多采 樣抗鋸齒(MSAA)技術(shù),其中,可以為一個像素內(nèi)的每一個樣本存儲分離的顏色數(shù)據(jù)值,但 是,在多于一個樣本具有相同顏色的情況下,也可以為多個樣本只存儲一種顏色數(shù)據(jù)值。事 實上,這是顏色數(shù)據(jù)的壓縮的一種形式,它利用這樣的情況:像素落在最終2D圖像的區(qū)域 內(nèi),在該區(qū)域中,在該像素內(nèi)沒有顏色轉(zhuǎn)變(例如,沒有邊緣)以致于所有其樣本都是相同 顏色。在這樣的情況下,為該像素的所有樣本,只存儲一次單一顏色值。只有在像素落在其 中在該像素內(nèi)有一個或多個顏色的轉(zhuǎn)變(例如,跨邊緣)的區(qū)域內(nèi)以致于在其樣本之間至 少有兩個不同的顏色的情況下,才存儲該像素的樣本所需的多于一個的顏色數(shù)據(jù)值。
[0005] 令人遺憾的是,不管在MSAA中這些存儲的效率,但是,每當(dāng)為像素的一個或多個 樣本存儲顏色值時都始終為透明顏色存儲顏色數(shù)據(jù)值的常見的做法限制了帶寬要求可以 被降低的程度。正是針對這些和其它考慮才需要此處所描述的實施例。
[0006] 附圖簡述
[0007] 圖1示出了導(dǎo)出差異圖的計算設(shè)備的實施例。
[0008] 圖2示出了圖1的實施例的部分,描繪了數(shù)據(jù)結(jié)構(gòu)和圖像之間的關(guān)系。
[0009] 圖3示出了圖1的實施例的部分。
[0010] 圖4示出了處于未著色狀態(tài)的圖1的實施例的部分。
[0011] 圖5a和5b示出了處于未著色狀態(tài)以及處于完全著色狀態(tài)的圖1的實施例的部 分。
[0012] 圖6a,6b和6c示出了處于未著色狀態(tài)、處于部分著色狀態(tài)、以及處于完全著色狀 態(tài)的圖1的實施例的部分。
[0013] 圖7a,7b,7c以及7d示出了處于未著色狀態(tài)、處于各種部分著色狀態(tài)以及處于各 種完全著色狀態(tài)的圖1的實施例的部分。
[0014] 圖8a以及8b示出了第一邏輯流程的實施例。
[0015] 圖9示出了處理架構(gòu)的實施例。
【具體實施方式】
[0016] 各實施例一般涉及用于當(dāng)為樣本存儲基元(例如,線、多邊形等等)的顏色數(shù)據(jù)值 時導(dǎo)致透明顏色(Clearcolor)的顏色數(shù)據(jù)值的存儲被推遲或完全地避免的技術(shù)。更具體 而言,以附加地指出那些樣本的顏色數(shù)據(jù)值的存儲的當(dāng)前狀態(tài)的方式,標(biāo)識其中存儲了像 素樣本的顏色數(shù)據(jù)值的顏色存儲位置的索引值被編碼并解釋??梢员恢赋龅臓顟B(tài)包括初 始化的未著色狀態(tài),其中,還沒有為特定像素的任何樣本存儲顏色數(shù)據(jù)值;部分著色狀態(tài), 其中,存儲了少于像素的全部樣本的顏色數(shù)據(jù)值,但是沒有顏色數(shù)據(jù)值包括透明顏色的顏 色數(shù)據(jù)值;以及,其中存儲了所有樣本的顏色數(shù)據(jù)值的狀態(tài),可能包括透明顏色的顏色數(shù)據(jù) 值。
[0017] 這些索引值的這樣的使用依賴于組織像素的樣本的顏色數(shù)據(jù)值的存儲的MSAA實 現(xiàn)的常見做法,以便被分配用于該像素的顏色存儲位置始終按特定順序用顏色數(shù)據(jù)值填 充。換句話說,存在其中始終存儲特定像素的任何樣本的第一顏色數(shù)據(jù)值的顏色存儲位置, 存在其中存儲下一顏色數(shù)據(jù)值的顏色存儲位置,依次類推。這會導(dǎo)致特定的遞增順序以及 使用每一個索引值的方式,以便索引值的某些組合通常是未定義的。除標(biāo)識顏色存儲位置 之外,這些以別的方式未定義的索引值用于使這些索引值能指出上述狀態(tài)中的一個。
[0018] 每當(dāng)將為特定像素的樣本中的一個或多個存儲顏色數(shù)據(jù)值時,訪問包括該像素的 全部樣本的索引值的索引存儲位置,以確定什么顏色存儲位置已經(jīng)用于存儲顏色數(shù)據(jù)值, 以及該像素的樣本的顏色數(shù)據(jù)值的存儲的當(dāng)前狀態(tài)。此信息用于確定什么顏色存儲位置是 其中要存儲現(xiàn)在要被存儲的顏色數(shù)據(jù)值的下一可用的顏色存儲位置,以及現(xiàn)在是否應(yīng)該存 儲像素的透明顏色的顏色數(shù)據(jù)值。此信息還用于確定索引值的編碼現(xiàn)在是否應(yīng)該被更改為 指出其中存儲了該像素的所有樣本的顏色數(shù)據(jù)值(可能包括透明顏色的顏色數(shù)據(jù)值)的完 全著色狀態(tài)的編碼。
[0019] 在一個實施例中,例如,設(shè)備包括處理器電路和存儲器、存儲器可通信地耦合到處 理器電路以存儲指令,在由處理器電路執(zhí)行時,指令導(dǎo)致處理器電路:渲染來自從對象的三 維模型取出的多個樣本的像素,像素對應(yīng)于像素樣本數(shù)據(jù),像素樣本數(shù)據(jù)包括多個顏色存 儲位置,每一顏色存儲位置都通過數(shù)字標(biāo)識符來標(biāo)識,像素樣本數(shù)據(jù)還包括多個樣本顏色 索引,每一樣本顏色索引都對應(yīng)于多個樣本中的指向多個顏色存儲位置中的至少一個顏色 存儲位置的樣本;以及,以被選擇將全部樣本顏色索引之中的二進制索引值的可能組合的 子集定義為無效組合的順序,分配多個顏色存儲位置中的顏色存儲位置。描述并要求保護 其他實施例。
[0020] 一般參考此處所使用的符號和命名法,可以以按照在計算機或計算機網(wǎng)絡(luò)上執(zhí)行 的程序過程來呈現(xiàn)隨后的詳細(xì)描述的各部分。這些過程描述和表示法被所屬領(lǐng)域的技術(shù) 人員用于最有效地將他們的工作實質(zhì)傳遞給本領(lǐng)域技術(shù)人員。過程,這里一般是指導(dǎo)致所 希望的結(jié)果的自相一致的操作序列。這些操作是那些需要對物理量進行物理操縱的那些操 作。盡管不是必要的,但通常這些量采用能夠被存儲、傳輸、組合、比較以及以其它方式操縱 的電和/或磁或光信號的形式。已經(jīng)證明有時,主要是由于通用的原因,將這些信號稱為 位、值、元素、符號、字符、項、數(shù)字等等比較方便。然而,值得注意的是,所有那些和/或類似 的項將與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),而且僅僅是應(yīng)用于這些量的方便的標(biāo)記。
[0021] 進一步地,這些操縱常常以諸如添加或比較(通常與由人類操作員執(zhí)行的智力操 作相關(guān)聯(lián))之類的術(shù)語來引用。然而,在大多數(shù)情況下,在構(gòu)成一個或多個實施例的一部分 的此處所描述的操作中的任何一種操作中,這樣的人類操作員的能力不是必須的,或不是 需要的。相反,這些操作是機器操作。對于執(zhí)行各實施例的操作的有用的機器包括通過根據(jù) 此處的原理編寫的存儲在存儲器內(nèi)的計算機程序有選擇地激活或配置的通用數(shù)字計算機, 和/或包括專門地為所需的用途構(gòu)建的設(shè)備。各實施例還涉及用于執(zhí)行這些操作的設(shè)備或 系統(tǒng)。這些設(shè)備可以為所需的用途專門地構(gòu)建或可以包括通用計算機。根據(jù)給定的描述, 會呈現(xiàn)這些機器中的各種機器的所需結(jié)構(gòu)。
[0022] 現(xiàn)在將參考附圖,全部附圖中相似的參考編號用于表示類似的元件。在下面的描 述中,為了進行說明,闡述了很多具體細(xì)節(jié)以便提供對本公開的全面理解。然而,顯而易見, 可以在沒有這些具體細(xì)節(jié)的情況下實施各新穎實施方式。在其他情況下,以框圖形式示出 了各個公知的結(jié)構(gòu)和設(shè)備以便于描述本公開。本公開將涵蓋落入權(quán)利要求的范圍內(nèi)的所有 修改、等效方案和替換方案。
[0023] 圖1示出了計算設(shè)備1000的框圖,計算設(shè)備1000可以耦合到另一計算設(shè)備300, 以給其他計算設(shè)備300提供由計算設(shè)備1000渲染的圖像的圖像數(shù)據(jù)。這些計算設(shè)備1000 和300中的每一個都可以是各種類型的計算設(shè)備中的任何一種,包括,但不僅限于,臺式計 算機系統(tǒng)、數(shù)據(jù)輸入終端、膝上型計算機、上網(wǎng)本計算機、超極本計算機、平板電腦、手持式 個人數(shù)據(jù)助理、智能電話、數(shù)碼相機、安裝在衣服中的穿戴計算設(shè)備、集成到交通工具(例 如,汽車、自行車、輪椅等等)中的計算設(shè)備、服務(wù)器、服務(wù)器集群、服務(wù)器場等等。
[0024] 如所描繪的,這些計算設(shè)備1000和300通過網(wǎng)絡(luò)999交換用于傳輸所渲染圖像的 信號。然而,這些計算設(shè)備中的一個或兩個可以通過網(wǎng)絡(luò)999彼此和/或與其他計算設(shè)備 (未示出)交換與渲染的圖像完全不相關(guān)的其他數(shù)據(jù)。在各種實施例中,網(wǎng)絡(luò)可以是可能局 限于在單一建筑物或其他相對有限區(qū)域內(nèi)延伸的單一網(wǎng)絡(luò),可能延伸相當(dāng)長的距離的經(jīng)連 接網(wǎng)絡(luò)的組合,和/或可以包括因特網(wǎng)。如此,網(wǎng)絡(luò)999可以基于可以用來交換信號的各種 通信技術(shù)中的任何一種(或組合),包括,但不僅限于,使用電纜和/或光纜的有線技術(shù),以 及使用紅外線、射頻或其他形式的無線傳輸?shù)臒o線技術(shù)。
[0025] 在各實施例中,計算設(shè)備1000包括處理器電路150、存儲器160、控件120、顯示器 180、控制器200以及接口 190中的一個或多個。存儲器160存儲至少一個控制例程140以 及3D模型數(shù)據(jù)130和方向數(shù)據(jù)135中的一項或多項。控制器200包括處理器電路250、存 儲器260和顯示器接口 285中的一項或多項。存儲器260存儲至少一個控制例程240和3D 模型數(shù)據(jù)130的副本、方向數(shù)據(jù)135的副本、圖像樣本數(shù)據(jù)230和最終圖像數(shù)據(jù)275中的一 項或多項。
[0026] 在執(zhí)行控制例程140時,使處理器電路150維護和/或修改3D模型數(shù)據(jù)130。響 應(yīng)于可能通過控件120 (如果存在的話),響應(yīng)于它們的被操作,和/或可能通過網(wǎng)絡(luò)999, 從另一計算設(shè)備,接收到傳輸修改3D模型數(shù)據(jù)130的命令的信號,處理器電路150可能被 導(dǎo)致修改3D模型數(shù)據(jù)130。在某些實施例中,計算設(shè)備1000可以是視頻游戲系統(tǒng),其中, 3D模型數(shù)據(jù)130是視頻游戲中的風(fēng)景和/或人物的3D表示。在某些實施例中,計算設(shè)備 1000可以是醫(yī)學(xué)工作站,其中,3D模型數(shù)據(jù)130是人體的組織、結(jié)構(gòu)和/或器官的3D表示。 在這樣的實施例中,計算設(shè)備的操作員可以操作控件120以操縱由3D模型數(shù)據(jù)130所表示 的對象。
[0027] 不管用于維護和/或修改3D模型數(shù)據(jù)130的目的,處理器電路150進一步被控制 例程140導(dǎo)致將3D模型數(shù)據(jù)130的副本傳輸?shù)娇刂破?00,并用信號通知控制器200渲染 3D模型數(shù)據(jù)130表示為圖像270的任何對象的2D圖像。處理器電路140也可以被導(dǎo)致將 方向數(shù)據(jù)135傳輸?shù)娇刂破?00,方向數(shù)據(jù)135包括位置的指示,以及圖像270的圖像平面 相對于由3D模型數(shù)據(jù)130表示的任何對象的朝向,如此,指定將使那些對象在圖像270中 可查看的視角。
[0028] 在執(zhí)行控制例程240時,使處理器電路250從在方向數(shù)據(jù)135中指出的視角渲染 由3D模型數(shù)據(jù)130所表示的對象的圖像270。這樣做時,使處理器電路250將在3D模型 數(shù)據(jù)130中形成那些對象的基元(例如,線、三角形、多邊形等等)柵格化為圖像樣本數(shù)據(jù) 230。圖像樣本數(shù)據(jù)230包括從在方向數(shù)據(jù)135中指出的圖像平面視角可查看的那些對象的 基元的子集的2D圖像,方向數(shù)據(jù)135由從該視角從那些基元取出的那些基元的樣本構(gòu)成。 圖像樣本數(shù)據(jù)230是隨后可以作為圖像270顯示在顯示器180上的最終圖像數(shù)據(jù)275的前 身。然而,創(chuàng)建圖像樣本數(shù)據(jù)230執(zhí)行的采樣比由最終圖像數(shù)據(jù)275所定義的圖像270的 分辨率更高。
[0029] 對基元執(zhí)行此采樣以創(chuàng)建圖像樣本數(shù)據(jù)230,以減輕圖像270中的鋸齒的發(fā)生,并 使用由處理器電路250執(zhí)行的多采樣抗鋸齒。如此,圖像樣本數(shù)據(jù)230包括樣本數(shù)據(jù),其中 樣本按最終將在最終圖像數(shù)據(jù)275中被渲染以定義圖像270的像素分組,可能具有每像素 的所選的樣本比率。為了將指出樣本的顏色的顏色數(shù)據(jù)值存儲在存儲器260的存儲器組件 中的效率起見,只要可能,就利用單個顏色數(shù)據(jù)值指定每一個像素中的多個樣本的顏色。
[0030] 圖2描繪了圖像270的樣本和像素之間的此關(guān)系的一個可能的示例。具體而言,描 繪了圖像270的單個像素271 (不按比例),在像素271內(nèi)描繪了四個樣本272a-d的位置。 應(yīng)該指出的是,每個像素使用較少的或較多數(shù)量的樣本的其他實施例也是可以的。還應(yīng)注 意,盡管是在基本上與像素271的區(qū)域的矩形形狀對齊的矩形布局中描繪四個樣本272a-d 的,但是,其他實施例也是可以的,其中,樣本272a-d可以被隨機定位在像素271的矩形區(qū) 域內(nèi),在相對于像素211的矩形形狀旋轉(zhuǎn)的矩形布局內(nèi),或在精通采樣的技術(shù)人員所熟知 的各種其他布局中的任何一個布局內(nèi)。
[0031] 也如圖2中所描繪的,對應(yīng)于圖像270的一個所描繪的像素271是圖像樣本數(shù)據(jù) 230內(nèi)的像素樣本數(shù)據(jù)231和最終圖像數(shù)據(jù)275內(nèi)的像素顏色數(shù)據(jù)276。需要明確的是,圖 像樣本數(shù)據(jù)230內(nèi)的像素樣本數(shù)據(jù)231的實例,以及最終圖像數(shù)據(jù)275內(nèi)的像素顏色數(shù)據(jù) 276的實例,與圖像270內(nèi)的像素271的實例一樣多。圖2旨在描繪以下方式:單個像素271 與圖像樣本數(shù)據(jù)230以及最終圖像數(shù)據(jù)275內(nèi)的對應(yīng)于它的數(shù)據(jù)相關(guān)聯(lián)。
[0032] 如在圖2中進一步描繪的,像素樣本數(shù)據(jù)231包括四個樣本顏色索引232a-d。樣 本顏色索引232a-d分別對應(yīng)于樣本272a-d。像素樣本數(shù)據(jù)231還包括四個顏色存儲位置 236w-z。雖然四個顏色存儲位置(例如,顏色存儲位置236w,236x,236y和236z)的量對 應(yīng)于像素271的樣本272a-d的量,如將更詳細(xì)地說明的,在顏色存儲位置236w-z和樣本 272a-d的個體之間不一定有對應(yīng)關(guān)系。
[0033] 在某些實施例中,以定義存儲器260內(nèi)的存儲位置的不同區(qū)域或"塊"的方式,可 以在存儲器260包括的存儲器設(shè)備之中組織圖像樣本數(shù)據(jù)230,其中在只由樣本顏色索引 構(gòu)成的可以稱為存儲器"平面"的位置中,對應(yīng)于全部像素的全部樣本顏色索引與對應(yīng)于 全部那些像素的全部顏色存儲位置分開地存儲。進一步,也可以在存儲器260內(nèi)為所有像 素的顏色存儲位置236w、為所有像素的顏色存儲位置236x、為所有像素的顏色存儲位置 236y、以及為所有像素的顏色存儲位置236z定義單獨的存儲器板。然而,應(yīng)該指出的是,其 他實施例也是可以的,其中,定義存儲器260內(nèi)的存儲位置的較小塊的量,每一塊都對應(yīng)于 圖像270的一個像素,其中,每一個像素的全部樣本顏色索引以及顏色存儲位置分開地放 置。
[0034] 由于樣本272a_d是從由3D模型數(shù)據(jù)130所表示的從圖像270的像素271的視角 可查看的對象的基元取出的,因此,它們的顏色(在不久將更詳細(xì)地說明的過程中)存儲在 顏色存儲位置236W-Z中的一個或多個中。在圖像270的所有像素的采樣完成之后,對存儲 在顏色存儲位置236w-z內(nèi)的顏色執(zhí)行各種數(shù)學(xué)或其他函數(shù)中的任何一種(例如,平均、加 權(quán)平均、隨機選擇,等等),以導(dǎo)出被給予像素271的最終顏色,指定該最終顏色的單個顏色 數(shù)據(jù)值存儲在最終圖像數(shù)據(jù)275中的像素顏色數(shù)據(jù)276中。
[0035] 返回到圖1,在如此導(dǎo)出圖像270的所有像素的顏色的情況下,圖像270的渲染完 成。在某些實施例中,處理器電路250可以操作顯示接口 285,以導(dǎo)致圖像270在視覺上顯 示在顯示器180上。在其他實施例中,處理器電路250可以用信號通知處理器150,說明圖 像270的渲染完成,并可以向處理器電路150提供定義圖像270的最終圖像數(shù)據(jù)275,以允 許處理器電路本身在顯示器180上在視覺上呈現(xiàn)圖像270,和/或通過網(wǎng)絡(luò)999,將最終圖 像數(shù)據(jù)275傳輸?shù)狡渌嬎阍O(shè)備300,可能供顯示在其顯示器380上。
[0036] 應(yīng)該指出的是,雖然圖1描繪了包括分開地執(zhí)行它們的相應(yīng)的任務(wù)的兩個處理器 電路(例如,處理器電路150和250)的計算設(shè)備1000的實現(xiàn),但是,其中單一處理器電路 執(zhí)行所有這些上述的任務(wù)的計算設(shè)備1000的其他實施例也是可以的。然而,可以預(yù)想,控 制器200包括圖形系統(tǒng),其中,處理器電路250可以在某種程度上被專門化和/或優(yōu)化以執(zhí) 行與渲染、視頻解壓縮、圖像重新縮放等等相關(guān)的任務(wù),而處理器電路150充當(dāng)執(zhí)行由操作 系統(tǒng)、一個或多個設(shè)備驅(qū)動程序和/或一個或多個應(yīng)用程序的指令指示的預(yù)期的更廣泛各 種指令和任務(wù)的比較通用的處理電路。
[0037] 在各實施例中,處理器電路150和250中的每一個都可以包括各種市場 上可買到的處理器中的任一種,包括但不僅限于,AMD? Athlon?、Duron? 或Opteron?處理器;ARM?應(yīng)用程序、嵌入式和安全處理器;IBM?和/或 Motorola? DragonBall?或powerpc.?處理器;IBM和 / 或Sony?Cell處理器;或 Intel? Celeron?、C'〇re(2)Duo?、C'()re⑵QuEid?、Corei3?、C'(>r。i5?、Corei7?、 Atom?、Itanium