具有共享邊緣的模板然后覆蓋路徑渲染的制作方法
【專(zhuān)利摘要】本發(fā)明提供了具有共享邊緣的模板然后覆蓋路徑渲染。本發(fā)明的一個(gè)實(shí)施例包括用于光柵化包括在路徑之間共享的邊緣的圖元的技術(shù)。對(duì)于每個(gè)邊緣,光柵化器從多個(gè)樣本規(guī)則選擇并且應(yīng)用樣本規(guī)則。如果邊緣被共享,那么所選擇的樣本規(guī)則使與單個(gè)顏色樣本相關(guān)聯(lián)的每組覆蓋樣本被認(rèn)為完全在邊緣里面或完全在邊緣外面。因此,每像素覆蓋樣本的數(shù)目超過(guò)每像素顏色樣本的數(shù)目時(shí)所造成的混淆偽像可被減少。在現(xiàn)有技術(shù)中,減少這類(lèi)混淆偽像典型地涉及增加每像素顏色樣本的數(shù)目以等于每像素覆蓋樣本的數(shù)目。有利地,所公開(kāi)的技術(shù)使能使用減少顏色與覆蓋樣本的比率的算法進(jìn)行渲染,由此減小存儲(chǔ)器消耗和存儲(chǔ)器帶寬使用,而不造成與共享邊緣相關(guān)聯(lián)的混淆偽像。
【專(zhuān)利說(shuō)明】具有共享邊緣的模板然后覆蓋路徑渲染
[0001] 相關(guān)申請(qǐng)的奪叉引用
[0002] 本申請(qǐng)要求享有于2013年3月15日提交的、具有序列號(hào)61/799, 948的美國(guó)臨時(shí) 專(zhuān)利申請(qǐng)的優(yōu)先權(quán)。該相關(guān)申請(qǐng)的主題在此通過(guò)援引并入本文。
【技術(shù)領(lǐng)域】
[0003] 本發(fā)明的實(shí)施例總地涉及圖形處理,并且更具體地,涉及具有共享邊緣的模板然 jpSim(stencil-then-cover)
【背景技術(shù)】
[0004] 路徑渲染是與分辨率無(wú)關(guān)的2維渲染風(fēng)格,通常被稱(chēng)為"向量圖形",其是若干重 要渲染標(biāo)準(zhǔn)的基礎(chǔ)。那些標(biāo)準(zhǔn)包括 Postscript、Java2D、Apple' sQuartz2D、OpenVG、FOF、 TrueType 字體、OpenType 字體、PostScript 字體、HTML5Canvas、可縮放向量圖形(SVG)網(wǎng)絡(luò) 格式、Microsoft' s Silverlight 和 Adobe Flash 用于交互式網(wǎng)絡(luò)體驗(yàn)、Microsoft' s XML Specification(XPS)、0ffice 文件格式中的繪圖,包括 PowerPoint、Adobe Illustrator 插 圖以及更多。
[0005] 在路徑渲染中,軟件應(yīng)用典型地將場(chǎng)景指定為與分辨率無(wú)關(guān)的輪廓的序列,已知 為路徑,其可以涂有恒定的顏色、線(xiàn)性或徑向漸變或圖像。許多圖形處理單元(GPU)支持通 過(guò)已知為"模板然后覆蓋"的兩步渲染過(guò)程渲染這類(lèi)路徑。首先,在路徑模板步驟中,GPU生 成指示哪些樣本(即每個(gè)像素內(nèi)的位置)由路徑覆蓋的模板緩沖區(qū)。其次,在路徑覆蓋步驟 中,GPU生成用于路徑的覆蓋幾何體并且利用經(jīng)使能的模板測(cè)試為覆蓋幾何體著色。典型 地,GPU利用某種保守的邊界幾何體實(shí)現(xiàn)覆蓋幾何體,該保守的邊界幾何體諸如邊界框(即 兩個(gè)三角形)、凸包或類(lèi)似結(jié)構(gòu)。因?yàn)槟0鍦y(cè)試在路徑覆蓋步驟期間被使能,所以GPU丟棄 未由路徑所覆蓋的任何片段并且將殘存的片段作為經(jīng)處理的圖形數(shù)據(jù)寫(xiě)到顏色緩沖區(qū)。
[0006] 在模板然后覆蓋路徑渲染的一些方法中,GPU維護(hù)每像素 N個(gè)覆蓋樣本和每像素 Μ 個(gè)顏色樣本,其中Ν大于Μ。在操作中,GPU以每像素 Ν個(gè)覆蓋樣本確定路徑的覆蓋。之后, 在路徑覆蓋步驟期間,在GPU實(shí)施混合和顏色寫(xiě)操作之前,GPU將覆蓋樣本的數(shù)目減少到顏 色樣本的數(shù)目。顯而易見(jiàn)地,在該減少操作期間,GPU可以選擇與單個(gè)顏色樣本相關(guān)聯(lián)的一 組Ν/M個(gè)覆蓋樣本并且基于Ν/M個(gè)覆蓋樣本的被覆蓋的部分生成用于顏色樣本的不透明度 值。該渲染方法的一個(gè)限制是將多個(gè)覆蓋樣本的組減少到單個(gè)顏色樣本可能在于不同路徑 之間所共享的邊緣處引入混淆偽像(conflation artifact)。特別地,減少操作將覆蓋的布 爾概念和用于不透明度的分?jǐn)?shù)值混淆。
[0007] 例如,假定存在與每個(gè)顏色樣本相對(duì)應(yīng)的4個(gè)覆蓋樣本(N=4并且M=l),背景顏色 是藍(lán)色,并且GPU將配置為渲染陰陽(yáng)符號(hào)-首先陰部分。此外,假定符號(hào)的陰部分是黃色, 符號(hào)的陽(yáng)部分是綠色,并且陰和陽(yáng)部分將共享兩部分之間的邊界處的邊緣。最后假定與特 定顏色樣本相關(guān)聯(lián)的覆蓋樣本中的兩個(gè)由符號(hào)的陰部分覆蓋,并且與特定顏色樣本相關(guān)聯(lián) 的覆蓋樣本中的兩個(gè)由符號(hào)的陽(yáng)部分覆蓋。一旦渲染符號(hào)的陰部分,GPU就將指派中間藍(lán)色 調(diào)(blue-tinged)的顏色到特定顏色樣本-與符號(hào)的陰部分相關(guān)聯(lián)的黃色的50%和與背景 相關(guān)聯(lián)的藍(lán)色的50%的混合。隨后,一旦渲染符號(hào)的陽(yáng)部分,GPU就將指派不同的藍(lán)色調(diào)的 顏色到特定顏色樣本-與符號(hào)的陽(yáng)部分相關(guān)聯(lián)的綠色的50%和與中間藍(lán)色調(diào)的顏色的50% 的混合。這類(lèi)背景顏色滲色將降低所顯示的圖像的質(zhì)量。特別地,藍(lán)色背景顏色的分?jǐn)?shù)在 陰陽(yáng)符號(hào)的陰和陽(yáng)部分之間的邊界處將是可見(jiàn)的(就像陰陽(yáng)符號(hào)的陰和陽(yáng)部分之間存在間 隙)。
[0008] 在減少與不同路徑之間所共享的邊緣相關(guān)聯(lián)的混淆偽像的一個(gè)方法中,增加顏色 樣本的數(shù)目以匹配覆蓋樣本的數(shù)目。在這類(lèi)實(shí)現(xiàn)方案中,覆蓋被作為布爾值分開(kāi)地維護(hù)用 于每個(gè)顏色樣本并且不與不透明度值混淆。因此,渲染包括在不同路徑之間共享的邊緣的 場(chǎng)景不引入可歸因于這些共享邊緣的混淆偽像。然而,增加顏色樣本的數(shù)目增加由顏色緩 沖區(qū)所使用的存儲(chǔ)器消耗和存儲(chǔ)器帶寬這二者。因?yàn)镚TO的本地存儲(chǔ)器容量和相關(guān)聯(lián)的存 儲(chǔ)器帶寬二者都有限,所以存儲(chǔ)器消耗或存儲(chǔ)器帶寬使用的任何增加一般都是不理想的。
[0009] 因此,本領(lǐng)域需要渲染在不同路徑之間共享的邊緣的更有效方法。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的一個(gè)實(shí)施例闡述用于光柵化圖形圖元的方法。方法包括確定與圖形圖元 的第一邊緣相關(guān)聯(lián)的光柵化狀態(tài),基于光柵化狀態(tài)從多個(gè)樣本規(guī)則選擇第一樣本規(guī)則,基 于第一樣本規(guī)則確定第一覆蓋樣本是否被認(rèn)為在第一邊緣里面,;以及基于第一覆蓋樣本 是否被認(rèn)為在第一邊緣里面確定第一覆蓋樣本是否被認(rèn)為由圖形圖元覆蓋。
[0011] 所公開(kāi)的方法的一個(gè)優(yōu)勢(shì)是處理單元可以實(shí)施存儲(chǔ)器高效路徑渲染操作而不引 入可與在不同路徑之間共享的邊緣相關(guān)聯(lián)的混淆偽象。因?yàn)楣鈻呕鲉卧紤]與特定顏色 樣本相關(guān)聯(lián)的每組覆蓋樣本完全在每個(gè)共享邊緣的里面或完全在其外面,所以每像素覆蓋 樣本的數(shù)目可以超過(guò)顏色樣本的數(shù)目而不在所顯示的圖像中造成背景滲色。因此,處理單 元不引發(fā)與現(xiàn)有技術(shù)相關(guān)聯(lián)的增加的存儲(chǔ)器消耗和存儲(chǔ)器帶寬,在現(xiàn)有技術(shù)中顏色樣本的 數(shù)目被增加以匹配覆蓋樣本的數(shù)目。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0012] 因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)如上面所 簡(jiǎn)要概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附 圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)其范圍的限制,本發(fā)明可以具有其 他等效的實(shí)施例。
[0013] 圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
[0014] 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖1的并行處理子系統(tǒng)中的并行處理 單元的框圖;
[0015] 圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可以在圖2的并行處理單元內(nèi)實(shí)現(xiàn)的圖形處 理管線(xiàn)的示意圖;
[0016] 圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖2的并行處理單元可以配置為實(shí)現(xiàn) 其的路徑模板步驟和路徑覆蓋步驟的示意圖;
[0017] 圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖3的圖形處理管線(xiàn)可以配置為渲染 其的二角扇的不意圖;
[0018] 圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖3的光柵化器單元可以配置為實(shí)現(xiàn) 其的樣本組和樣本邊緣規(guī)則的示意圖;
[0019] 圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了索引緩沖區(qū)的示意圖;
[0020] 圖8A-8B闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于光柵化三角形的方法步驟的流 程圖;以及
[0021] 圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于渲染路徑的方法步驟的流程圖。
【具體實(shí)施方式】
[0022] 在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而, 本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí) 施。在其他實(shí)例中,未描述公知特征以避免對(duì)本發(fā)明造成混淆。
[0023] 系統(tǒng)概述
[0024] 圖1為示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。如 所示的,計(jì)算機(jī)系統(tǒng)1〇〇包括但不限于經(jīng)由存儲(chǔ)器橋105和通信路徑113耦連到并行處理 子系統(tǒng)112的中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104。存儲(chǔ)器橋105進(jìn)一步配置為經(jīng) 由通信路徑106耦連到I/O (輸入/輸出)橋107,并且I/O橋107轉(zhuǎn)而耦連到交換器116。
[0025] 在操作中,I/O橋107配置為從諸如鍵盤(pán)或鼠標(biāo)的輸入設(shè)備108接收用戶(hù)輸入信 息,并且經(jīng)由通信路徑106和存儲(chǔ)器橋105將輸入信息轉(zhuǎn)發(fā)到CPU102用于處理。交換器 116配置為提供I/O橋107和諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的計(jì)算機(jī)系統(tǒng) 100的其他部件之間的連接。
[0026] 還如所示的,I/O橋107耦連到系統(tǒng)盤(pán)114,該系統(tǒng)盤(pán)114可以配置為存儲(chǔ)內(nèi)容和 應(yīng)用和數(shù)據(jù)用于由CPU102和并行處理子系統(tǒng)112使用。作為一般問(wèn)題,系統(tǒng)盤(pán)114為應(yīng)用 和數(shù)據(jù)提供非易失性存儲(chǔ)并且可以包括固定的或可移動(dòng)的硬盤(pán)驅(qū)動(dòng)器、閃存設(shè)備和CD-ROM (光盤(pán)只讀存儲(chǔ)器)、DVD-R0M (數(shù)字多功能光盤(pán)-ROM)、藍(lán)光、HD-DVD (高清DVD)或其他磁性、 光學(xué)或固態(tài)存儲(chǔ)設(shè)備。最后,盡管未明確示出,但是其他部件,諸如通用串行總線(xiàn)或其他端 口連接、光盤(pán)驅(qū)動(dòng)器、數(shù)字多功能光盤(pán)驅(qū)動(dòng)器、膠片錄制設(shè)備及類(lèi)似部件,也可以連接到I/O 橋 107。
[0027] 在各種實(shí)施例中,存儲(chǔ)器橋105可以是北橋芯片,并且I/O橋107可以是南橋芯 片。另外,通信路徑106和113以及計(jì)算機(jī)系統(tǒng)100內(nèi)的其他通信路徑可以使用任何技術(shù) 適合的協(xié)議實(shí)現(xiàn),包括但不限于AGP (加速圖形端口)、超傳輸或者本領(lǐng)域已知的任何其他總 線(xiàn)或點(diǎn)到點(diǎn)通信協(xié)議。
[0028] 在一些實(shí)施例中,并行處理子系統(tǒng)112包括將像素傳遞到顯示設(shè)備110的圖形子 系統(tǒng),顯示設(shè)備110可以是任何常規(guī)的陰極射線(xiàn)管、液晶顯示器、發(fā)光二極管顯示器等等。 在這類(lèi)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如 視頻輸出電路。如以下在圖2中更詳細(xì)描述的,這類(lèi)電路可以跨包括在并行處理子系統(tǒng)112 內(nèi)的一個(gè)或多個(gè)并行處理單元(PPU)被合并。在其他實(shí)施例中,并行處理子系統(tǒng)112包含 經(jīng)優(yōu)化用于通用和/或計(jì)算處理的電路。此外,這類(lèi)電路可以跨包括在并行處理子系統(tǒng)112 內(nèi)的、配置為實(shí)施這類(lèi)通用和/或計(jì)算操作的一個(gè)或多個(gè)PPU被合并。在又一些實(shí)施例中, 包括在并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)可以配置為實(shí)施圖形處理、通用處理以及 計(jì)算處理操作。系統(tǒng)存儲(chǔ)器104包括配置為管理并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)PPU 的處理操作的至少一個(gè)設(shè)備驅(qū)動(dòng)程序103。系統(tǒng)存儲(chǔ)器104還包括在CPU102上執(zhí)行并且可 以發(fā)出控制PPU的操作的命令的軟件應(yīng)用125。
[0029] 在各種實(shí)施例中,并行處理子系統(tǒng)112可以與圖1的一個(gè)或多個(gè)其他元件集成以 形成單個(gè)系統(tǒng)。例如,并行處理子系統(tǒng)112可以與CPU102和單個(gè)芯片上的其他連接電路集 成以形成片上系統(tǒng)(SoC)。
[0030] 應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,?括橋的數(shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例 如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104可以直接連接到CPU102而不是通過(guò)存儲(chǔ)器橋105,并 且其他設(shè)備將經(jīng)由存儲(chǔ)器橋105和CPU102與系統(tǒng)存儲(chǔ)器104通信。在其他替代性拓?fù)渲校?并行處理子系統(tǒng)112可以連接到I/O橋107或直接連接到CPU102,而不是連接到存儲(chǔ)器橋 105。而在其他實(shí)施例中,I/O橋107和存儲(chǔ)器橋105可以被集成到單個(gè)芯片上而不是作為 一個(gè)或多個(gè)分立設(shè)備存在。最后,在某些實(shí)施例中,圖1所示的一個(gè)或多個(gè)部件可能不存 在。例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。例如,交換器116可以被去掉,網(wǎng) 絡(luò)適配器118和插卡120、121將直接連接到I/O橋107。
[0031] 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖1的并行處理子系統(tǒng)112中的并行 處理單元(PPU)202的框圖。如以上所指示的,盡管圖2描繪了一個(gè)PPU202,但是并行處理 子系統(tǒng)112可以包括任何數(shù)目的PPU202。如所示的,PPU202耦連到本地并行處理(PP)存 儲(chǔ)器204。PPU202和PP存儲(chǔ)器204可使用一個(gè)或多個(gè)集成電路設(shè)備來(lái)實(shí)現(xiàn),諸如可編程處 理器、專(zhuān)用集成電路(ASIC)或存儲(chǔ)器設(shè)備,或者以任何其他技術(shù)可行的方式來(lái)實(shí)現(xiàn)。
[0032] 在一些實(shí)施例中,PPU202包括圖形處理單元(GPU),該圖形處理單元可以配置為 實(shí)現(xiàn)圖形處理管線(xiàn)以實(shí)施與基于由CPU102和/或系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)生成 像素?cái)?shù)據(jù)相關(guān)的各種操作。當(dāng)處理圖形數(shù)據(jù)時(shí),PP存儲(chǔ)器204可以用作存儲(chǔ)一個(gè)或多個(gè)常 規(guī)幀緩沖區(qū)并且如果需要的話(huà)也存儲(chǔ)一個(gè)或多個(gè)其他渲染目標(biāo)的圖形存儲(chǔ)器。在其他方 面,PP存儲(chǔ)器204可以用來(lái)存儲(chǔ)并且更新像素?cái)?shù)據(jù)并且將最終的像素?cái)?shù)據(jù)或顯示幀傳遞到 顯示設(shè)備110用于顯示。在一些實(shí)施例中,PPU202還可以配置為用于通用處理和計(jì)算操作。
[0033] 在操作中,CPU102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操 作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實(shí)施例中,CPU102寫(xiě)入用于 PPU202的命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ) 器104、PP存儲(chǔ)器204、或CPU102和PPU202都可訪問(wèn)的其他存儲(chǔ)位置中。將指向數(shù)據(jù)結(jié)構(gòu) 的指針寫(xiě)到入棧緩沖區(qū)(pushbuffer)以發(fā)起對(duì)數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從入 棧緩沖區(qū)讀取命令流,然后相對(duì)于CPU102的操作異步地執(zhí)行命令。在生成多個(gè)入棧緩沖區(qū) 的實(shí)施例中,可以經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序?yàn)槊總€(gè)入棧緩沖區(qū)指定執(zhí)行優(yōu)先級(jí)以 控制對(duì)不同入棧緩沖區(qū)的調(diào)度。
[0034] 還如所示的,PPU202包括經(jīng)由通信路徑113和存儲(chǔ)器橋105與計(jì)算機(jī)系統(tǒng)100的 其余部分通信的I/o (輸入/輸出)單元205。I/O單元205生成用于在通信路徑113上傳 送的包(或其他信號(hào)),并且還從通信路徑113接收所有傳入的包(或其他信號(hào)),將傳入的包 引導(dǎo)到PPU202的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機(jī)接口 206,而將與 存儲(chǔ)器操作相關(guān)的命令(例如,對(duì)PP存儲(chǔ)器204的讀取或?qū)懭耄┮龑?dǎo)到交叉開(kāi)關(guān)單元210。 主機(jī)接口 206讀取每個(gè)入棧緩沖區(qū),并且將存儲(chǔ)在入棧緩沖區(qū)中的命令流傳送到前端212。
[0035] 如以上結(jié)合圖1所提及的,可以改變PPU202到計(jì)算機(jī)系統(tǒng)100的其余部分的連 接。在一些實(shí)施例中,包括至少一個(gè)PPU202的并行處理子系統(tǒng)112實(shí)現(xiàn)為可被插入計(jì)算機(jī) 系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)施例中,PPU202可以與諸如存儲(chǔ)器橋105或I/O橋 107的總線(xiàn)橋集成在單個(gè)芯片上。另外,在又一些實(shí)施例中,PPU202的一些或所有元件可以 與CPU102 -起包括在單個(gè)集成芯片或片上系統(tǒng)(SoC)中。
[0036] 在操作中,前端212將從主機(jī)接口 206所接收的處理任務(wù)傳送到任務(wù)/工作單元 207內(nèi)的工作分布單元(未示出)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ) 在存儲(chǔ)器中的處理任務(wù)的指針。指向TMD的指針包括在存儲(chǔ)為入棧緩沖區(qū)并由前端單元 212從主機(jī)接口 206接收的命令流中??梢跃幋a為T(mén)MD的處理任務(wù)包括與所要處理的數(shù)據(jù) 相關(guān)聯(lián)的索引,以及定義數(shù)據(jù)將被如何處理。例如,狀態(tài)參數(shù)和命令可以定義將要對(duì)數(shù)據(jù)執(zhí) 行的程序。任務(wù)/工作單元207從前端212接收任務(wù)并確保在每一個(gè)TMD所指定的處理任 務(wù)發(fā)起前,將GPC208配置為有效狀態(tài)。可以為每個(gè)TMD指定用來(lái)調(diào)度處理任務(wù)的執(zhí)行的優(yōu) 先級(jí)。還可從處理集群陣列230接收處理任務(wù)??蛇x地,TMD可包括控制將TMD添加到處 理任務(wù)列表(或指向處理任務(wù)的指針的列表)的頭部還是尾部的參數(shù),從而提供除執(zhí)行優(yōu)先 級(jí)以外的另一級(jí)別的控制。
[0037] PPU202有利地基于處理集群陣列230實(shí)現(xiàn)高度并行處理架構(gòu),該處理集群陣列 230包括C個(gè)通用處理集群(GPC)208的集,其中C > 1。每個(gè)GPC208能夠并發(fā)執(zhí)行大量的 (例如,幾百或幾千)線(xiàn)程,其中每個(gè)線(xiàn)程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配 不同的GPC208用于處理不同類(lèi)型的程序或用于實(shí)施不同類(lèi)型的計(jì)算。GPC208的分配可以 取決于因每種類(lèi)型的程序或計(jì)算所產(chǎn)生的工作量而變化。
[0038] 存儲(chǔ)器接口 214包括D個(gè)分區(qū)單元215的集,其中D彡1。每個(gè)分區(qū)單元215耦連 到駐留在PP存儲(chǔ)器204內(nèi)的一個(gè)或多個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)220。在一個(gè)實(shí)施例中, 分區(qū)單元215的數(shù)目等于DRAM220的數(shù)目,并且每個(gè)分區(qū)單元215耦連到不同的DRAM220。 在其他實(shí)施例中,分區(qū)單元215的數(shù)目可以與DRAM220的數(shù)目不同。本領(lǐng)域的普通技術(shù)人 員應(yīng)該理解DRAM220可以用其他技術(shù)合適的存儲(chǔ)設(shè)備來(lái)替代。在操作中,諸如紋理圖和幀 緩沖區(qū)的各種渲染目標(biāo)可以跨DRAM220加以存儲(chǔ),這允許分區(qū)單元215并行寫(xiě)入每個(gè)渲染 目標(biāo)的各部分以高效地使用PP存儲(chǔ)器204的可用帶寬。
[0039] 給定GPC208可以處理要被寫(xiě)到PP存儲(chǔ)器204內(nèi)的任何DRAM220的數(shù)據(jù)。交叉開(kāi)關(guān) 單元210配置為路由每個(gè)GPC208的輸出到任何分區(qū)單元215的輸入或到任何其他GPC208 用于進(jìn)一步處理。GPC208經(jīng)由交叉開(kāi)關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各DRAM220 進(jìn)行讀取或?qū)懭?。在一個(gè)實(shí)施例中,交叉開(kāi)關(guān)單元210除經(jīng)由存儲(chǔ)器接口 214到PP存儲(chǔ)器 204的連接以外,具有到I/O單元205的連接,從而使得在不同GPC208內(nèi)的處理核心能夠與 系統(tǒng)存儲(chǔ)器104或?qū)τ赑PU202而言非本地的其他存儲(chǔ)器通信。在圖2所示的實(shí)施例中,交 叉開(kāi)關(guān)單元210直接與I/O單元205連接。在各種實(shí)施例中,交叉開(kāi)關(guān)單元210可使用虛 擬信道來(lái)分開(kāi)GPC208與分區(qū)單元215之間的業(yè)務(wù)流。
[0040] 另外,GPC208可被編程以執(zhí)行與種類(lèi)繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限 于,線(xiàn)性和非線(xiàn)性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過(guò)濾、建模操作(例如,應(yīng)用物理定律以確 定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分(tessellation)著色器、 頂點(diǎn)著色器、幾何著色器、和/或像素/片段著色器程序)、通用計(jì)算操作等等。在操作中, PPU202配置為將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或PP存儲(chǔ)器204轉(zhuǎn)移到一個(gè)或多個(gè)片上存儲(chǔ) 器單元,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫(xiě)回到系統(tǒng)存儲(chǔ)器104和/或PP存儲(chǔ)器204。之后結(jié) 果數(shù)據(jù)可以由其他系統(tǒng)部件訪問(wèn),所述其他系統(tǒng)部件包括CPU102、并行處理子系統(tǒng)112內(nèi) 的另一個(gè)PPU202或計(jì)算機(jī)系統(tǒng)100內(nèi)的另一個(gè)并行處理子系統(tǒng)112。
[0041] 如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè) 插卡上提供多個(gè)PPU202、或可將多個(gè)插卡連接到通信路徑113、或可將一個(gè)或多個(gè)PPU202 集成到橋式芯片中。在多系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202 可能具有不同數(shù)目的處理核心和/或不同容量的PP存儲(chǔ)器204。在存在多個(gè)PPU202的實(shí)現(xiàn) 方案中,可并行操作那些PPU從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來(lái)處理數(shù)據(jù)。包 含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形式因素來(lái)實(shí)現(xiàn),包括但不限于臺(tái)式電腦、 筆記本電腦、手持式個(gè)人計(jì)算機(jī)或其他手持設(shè)備、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng) 等等。
[0042] 圖形管線(xiàn)架構(gòu)
[0043] 圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可以在圖2的PPU202內(nèi)實(shí)現(xiàn)的圖形處理管線(xiàn) 350的示意圖。如所示的,圖形處理單元350包括但不限于圖元分布器(PD) 355 ;頂點(diǎn)屬性 獲取單元(VAF) 360 ;頂點(diǎn)、曲面細(xì)分、幾何處理單元(VTG) 365 ;視窗(viewport)縮放、剔除 (cull)和裁剪(clip)單元(VPC) 370 ;分塊(tiling)單元375、設(shè)定單元(setup) 380、光柵 化器(raster)單元385、片段處理單元也標(biāo)識(shí)為像素著色單元(PS) 390以及光柵操作單元 (R0P)395。
[0044] PD355從前端212收集與高階表面、圖形圖元等相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)并且將頂點(diǎn)數(shù) 據(jù)傳送到VAF360。
[0045] VAF360從共享存儲(chǔ)器檢索與即將來(lái)臨的頂點(diǎn)中的每一個(gè)相關(guān)聯(lián)的頂點(diǎn)屬性,并且 將頂點(diǎn)數(shù)據(jù)與相關(guān)聯(lián)的頂點(diǎn)屬性一起存儲(chǔ)到共享存儲(chǔ)器中。
[0046] VTG365是配置為執(zhí)行頂點(diǎn)著色器程序、細(xì)分曲面程序和幾何程序的可編程執(zhí)行單 元。這些程序處理從VAF360所接收的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性并且產(chǎn)生圖形圖元用于在圖形 處理管線(xiàn)350內(nèi)進(jìn)一步處理。盡管未明確示出,但是在一些實(shí)施例中,VTG365可以包括頂 點(diǎn)處理單元、細(xì)分曲面初始化處理單元、任務(wù)生成單元、任務(wù)分布器、拓?fù)渖蓡卧?、?xì)分曲 面處理單元和幾何處理單元中的一個(gè)或多個(gè)。
[0047] 頂點(diǎn)處理單元是配置為執(zhí)行著色器程序的可編程執(zhí)行單元,照明和轉(zhuǎn)換如由頂點(diǎn) 著色器程序所指定的頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元可以經(jīng)編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象 的坐標(biāo)表示(對(duì)象空間)轉(zhuǎn)換為基于其他的坐標(biāo)系,諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC) 空間。頂點(diǎn)處理單元可以讀取由VAF存儲(chǔ)在共享存儲(chǔ)器中的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性并且可以 處理該頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性。
[0048] 細(xì)分曲面初始化處理單元是配置為執(zhí)行細(xì)分曲面初始化著色程序的可編程執(zhí)行 單元。細(xì)分曲面初始化處理單元處理由頂點(diǎn)處理單元所產(chǎn)生的頂點(diǎn)并且生成已知為補(bǔ)丁 (patch)的圖形圖元。細(xì)分曲面初始化處理單元還生成各種補(bǔ)丁屬性。之后細(xì)分曲面初始 化單元將補(bǔ)丁數(shù)據(jù)和補(bǔ)丁屬性存儲(chǔ)在共享存儲(chǔ)器中。在一些實(shí)施例中,細(xì)分曲面初始化著 色器程序可以被稱(chēng)為外殼(hull)著色器或細(xì)分曲面控制著色器。
[0049] 任務(wù)生成單元從共享存儲(chǔ)器索引用于頂點(diǎn)和補(bǔ)丁的數(shù)據(jù)和屬性。任務(wù)生成單元生 成用于處理頂點(diǎn)和補(bǔ)丁的任務(wù)用于由圖形處理單元管線(xiàn)350中的稍后級(jí)處理。
[0050] 任務(wù)分布器重新分布由任務(wù)生成單元所產(chǎn)生的任務(wù)。由頂點(diǎn)著色器程序和曲面細(xì) 分初始化程序的各實(shí)例所產(chǎn)生的任務(wù)可以在一個(gè)圖形處理管線(xiàn)350和另一個(gè)圖形處理管 線(xiàn)之間顯著地變化。任務(wù)分布器重新分布這些任務(wù),以使得每個(gè)圖形處理管線(xiàn)350在稍后 的管線(xiàn)級(jí)期間大約具有相同的工作量。
[0051] 拓?fù)渖蓡卧獧z索由任務(wù)分布器所分布的任務(wù)。拓?fù)渖蓡卧饕旤c(diǎn),包括與 補(bǔ)丁相關(guān)聯(lián)的頂點(diǎn),并且計(jì)算用于細(xì)分曲面頂點(diǎn)和連接經(jīng)細(xì)分的頂點(diǎn)以形成圖形圖元的索 引的(U,V)坐標(biāo)。拓?fù)渖蓡卧髮⒔?jīng)索引的頂點(diǎn)存儲(chǔ)在共享存儲(chǔ)器中。
[0052] 細(xì)分曲面處理單元是配置為執(zhí)行細(xì)分曲面著色器程序的可編程執(zhí)行單元。細(xì)分曲 面處理單元從共享存儲(chǔ)器讀取輸入數(shù)據(jù)并且將輸出數(shù)據(jù)寫(xiě)到共享存儲(chǔ)器。共享存儲(chǔ)器中的 該輸出數(shù)據(jù)作為輸入數(shù)據(jù)被傳遞到下一個(gè)著色器級(jí)、幾何處理單元。在一些實(shí)施例中,曲面 細(xì)分著色器程序可以被稱(chēng)為域著色器或曲面細(xì)分評(píng)估著色器。
[0053] 幾何處理單元是配置為執(zhí)行幾何著色器程序,由此轉(zhuǎn)換圖形圖元的可編程執(zhí)行單 元。對(duì)頂點(diǎn)進(jìn)行分組以構(gòu)建圖形圖元用于處理,其中圖形圖元包括三角形、線(xiàn)段、點(diǎn)等等。例 如,幾何處理單元可以經(jīng)編程以將圖形圖元再分為一個(gè)或多個(gè)新的圖形圖元并且計(jì)算用來(lái) 光柵化新的圖形圖元的參數(shù),諸如平面方程系數(shù)。
[0054] 幾何處理單元將指定新的圖形圖元的參數(shù)和頂點(diǎn)傳送到VPC370。幾何處理單元可 以讀取存儲(chǔ)在共享存儲(chǔ)器中的數(shù)據(jù)用于在處理幾何數(shù)據(jù)時(shí)使用。VPC370實(shí)施裁剪、剔除和 視窗轉(zhuǎn)換以確定哪些圖形圖元在最終的經(jīng)渲染圖像中是潛在地可見(jiàn)的以及哪些圖形圖元 不是潛在地可見(jiàn)的。VPC370之后將經(jīng)處理的圖形圖元傳送到分塊單元375。
[0055] 如本文所進(jìn)一步描述的,分塊單元375是駐留在世界空間管線(xiàn)352和屏幕空間管 線(xiàn)354之間的圖形管線(xiàn)分揀(sorting)引擎。在世界空間管線(xiàn)352中處理圖形圖元并且之 后將其傳送到分塊單元375。屏幕空間被分為高速緩存像素塊,其中每個(gè)高速緩存像素塊 與屏幕空間的一部分相關(guān)聯(lián)。對(duì)于每個(gè)圖形圖元,分塊單元375標(biāo)識(shí)與圖形圖元相交的高 速緩存像素塊集,即本文稱(chēng)為"分塊"的過(guò)程。在將一定數(shù)目的圖形圖元分塊之后,分塊單 元375在高速緩存像素塊的基礎(chǔ)上處理圖形圖元,其中與特定高速緩存像素塊相關(guān)聯(lián)的圖 形圖元被傳送到設(shè)定單元380。分塊單元375將圖形圖元一次一個(gè)高速緩存像素塊地傳送 到設(shè)定單元380。與多個(gè)高速緩存像素塊相交的圖形圖元典型地在世界空間管線(xiàn)352中被 處理一次,并且之后被多次地傳送到屏幕空間管線(xiàn)354。
[0056] 這類(lèi)技術(shù)改善在屏幕空間管線(xiàn)354中進(jìn)行處理期間的高速緩存存儲(chǔ)器本地性,其 中與第一高速緩存像素塊相關(guān)聯(lián)的多個(gè)存儲(chǔ)器操作訪問(wèn)可在第一高速緩存像素塊的屏幕 空間處理期間常駐的L2高速緩存的區(qū)域或任何其他技術(shù)可行的高速緩存存儲(chǔ)器。一旦由 屏幕空間管線(xiàn)354處理與第一高速緩存像素塊相關(guān)聯(lián)的圖形圖元,就可以刷新L2高速緩存 的與第一高速緩存像素塊相關(guān)聯(lián)的部分并且分塊單元可以傳送與第二高速緩存像素塊相 關(guān)聯(lián)的圖形圖元。之后與第二高速緩存相關(guān)聯(lián)的多個(gè)存儲(chǔ)器操作可以訪問(wèn)可在第二高速緩 存像素塊的屏幕空間處理期間常駐的L2高速緩存的區(qū)域。因此,到L2高速緩存和到渲染 目標(biāo)的整體存儲(chǔ)器流量可以被減少。在一些實(shí)施例中,針對(duì)給定圖形圖元實(shí)施一次世界空 間計(jì)算,而不考慮與圖形圖元相交的屏幕空間中的高速緩存像素塊的數(shù)目。
[0057] 設(shè)定單元380經(jīng)由分塊單元375接收來(lái)自VPC370的頂點(diǎn)數(shù)據(jù)并且計(jì)算與圖形圖 元相關(guān)聯(lián)的參數(shù),包括但不限于圖形圖元的每個(gè)頂點(diǎn)處的顏色值、表面法向量和透明度值。 之后設(shè)定單元380將經(jīng)處理的圖形圖元傳送到光柵化器單元385。
[0058] 光柵化器單元385掃描轉(zhuǎn)化新的圖形圖元并且將片段和覆蓋數(shù)據(jù)傳送到像素著 色單元390。此外,光柵化器單元385可以配置為實(shí)施z剔除和其他基于z的優(yōu)化。
[0059] 像素著色單元390是配置為執(zhí)行著色器程序的可編程執(zhí)行單元,轉(zhuǎn)換如由片段著 色器程序所指定的從光柵化器單元385所接收的片段。片段著色器程序可以以像素級(jí)別粒 度為片段著色,其中這類(lèi)著色器程序可以被稱(chēng)為像素著色器程序。可替代地,片段著色器程 序可以以樣本級(jí)別粒度為片段著色,其中每個(gè)像素包括多個(gè)樣本,并且每個(gè)樣本代表像素 的一部分。可替代地,片段著色器程序可以以任何技術(shù)可行的粒度為片段著色,這取決于經(jīng) 編程的米樣速率。
[0060] 在各種實(shí)施例中,片段處理單元460可以經(jīng)編程以實(shí)施諸如透視校正、紋理映射、 著色、混合等的操作以產(chǎn)生被傳送到R0P單元395的經(jīng)著色片段。像素著色單元390可以 讀取存儲(chǔ)在共享存儲(chǔ)器中的數(shù)據(jù)。
[0061] R0P單元395是實(shí)施諸如模板、Z測(cè)試、混合等的光柵操作并且經(jīng)由存儲(chǔ)器接口 214 作為經(jīng)處理的圖形數(shù)據(jù)傳送像素?cái)?shù)據(jù)用于存儲(chǔ)在圖形存儲(chǔ)器中的處理單元,其中圖形存儲(chǔ) 器典型地構(gòu)造為一個(gè)或多個(gè)渲染目標(biāo)。經(jīng)處理的圖形數(shù)據(jù)可以存儲(chǔ)在圖形存儲(chǔ)器、并行處 理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中用于顯示在顯示設(shè)備110上或用于由CPU102或并行處 理子系統(tǒng)112進(jìn)一步處理。在一些實(shí)施例中,R0P單元395配置為壓縮被寫(xiě)到存儲(chǔ)器的z或 顏色數(shù)據(jù)并且解壓縮從存儲(chǔ)器讀取的z或顏色數(shù)據(jù)。在各種實(shí)施例中,R0P單元395可以 位于存儲(chǔ)器接口 214中、GPC208中、GPC外部的處理集群陣列230中或PPU202內(nèi)的分開(kāi)的 單元(未示出)中。
[0062] 圖形處理管線(xiàn)350可以由PPU202內(nèi)的任何一個(gè)或多個(gè)處理元件實(shí)現(xiàn)。例如,圖2 的GPC208之一內(nèi)的流多處理器(未示出)可以配置為實(shí)施VTG365和像素著色單元390中 的一個(gè)或多個(gè)的功能。H)355、VAF360、VPC450、分塊單元375、設(shè)定單元380、光柵化器單元 385和R0P單元395的功能也可以由特定GPC208內(nèi)的處理元件結(jié)合對(duì)應(yīng)的分區(qū)單元215加 以實(shí)施。可替代地,圖形處理管線(xiàn)350可以使用用于以上所列出的功能中的一個(gè)或多個(gè)的 專(zhuān)用的固定功能處理元件實(shí)現(xiàn)。在各種實(shí)施例中,PTO202可以配置為實(shí)現(xiàn)一個(gè)或多個(gè)圖形 處理管線(xiàn)350。
[0063] 在一些實(shí)施例中,圖形處理管線(xiàn)350可以被分為世界空間管線(xiàn)352和屏幕空間管 線(xiàn)354。世界空間管線(xiàn)352處理3D空間中的圖形對(duì)象,其中每個(gè)圖形對(duì)象的位置是相對(duì)于 其他圖形對(duì)象以及相對(duì)于3D坐標(biāo)系而已知的。屏幕空間管線(xiàn)354處理已經(jīng)從3D坐標(biāo)系投 影到代表顯示設(shè)備110的表面的2D平面上的圖形對(duì)象。例如,世界空間管線(xiàn)352可以包括 從TO355到VPC370的圖形處理管線(xiàn)350中的管線(xiàn)級(jí)。屏幕空間管線(xiàn)354可包括從設(shè)定單 元380到R0P單元395的圖形處理管線(xiàn)350中的管線(xiàn)級(jí)。分塊單元375將跟隨在世界空間 管線(xiàn)352的最后級(jí)即VPC370之后。分塊單元375將位于屏幕空間管線(xiàn)354的第一級(jí)即設(shè) 定單元380之前。
[0064] 在一些實(shí)施例中,世界空間管線(xiàn)352可以進(jìn)一步分為阿爾法相位管線(xiàn)和貝塔相位 管線(xiàn)。例如,阿爾法相位管線(xiàn)可以包括從TO355到任務(wù)生成單元的圖形處理管線(xiàn)350中的 管線(xiàn)級(jí)。貝塔相位管線(xiàn)可以包括從拓?fù)渖蓡卧絍PC370的圖形處理管線(xiàn)350中的管線(xiàn) 級(jí)。圖形處理管線(xiàn)350在于阿爾法相位管線(xiàn)中進(jìn)行處理期間實(shí)施第一操作集并且在于貝塔 相位管線(xiàn)中進(jìn)行處理期間實(shí)施第二操作集。如本文所使用的,操作集被定義為由單個(gè)線(xiàn)程、 由線(xiàn)程組或由統(tǒng)一行動(dòng)的多個(gè)線(xiàn)程組所執(zhí)行的一個(gè)或多個(gè)指令。
[0065] 在具有多個(gè)圖形處理管線(xiàn)350的系統(tǒng)中,與圖形對(duì)象集相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)和頂點(diǎn) 屬性可以被劃分,以使得每個(gè)圖形處理管線(xiàn)350通過(guò)阿爾法相位大約具有相同量的工作 量。阿爾法相位處理可以顯著地?cái)U(kuò)展頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性的量,以使得由任務(wù)生成單元所 產(chǎn)生的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性的量顯著地大于由PD355和VAF360所處理的頂點(diǎn)數(shù)據(jù)和頂點(diǎn) 屬性的量。此外,甚至在兩個(gè)圖形處理管線(xiàn)350在阿爾法相位管線(xiàn)開(kāi)始時(shí)處理相同數(shù)量的 屬性的情況下,與一個(gè)圖形處理管線(xiàn)350相關(guān)聯(lián)的任務(wù)生成單元也可以產(chǎn)生比與另一個(gè)圖 形處理管線(xiàn)350相關(guān)聯(lián)的任務(wù)生成單元顯著更大數(shù)量的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性。在這類(lèi)情 況下,任務(wù)分布器重新分布由阿爾法相位管線(xiàn)所產(chǎn)生的屬性,以使得每個(gè)圖形處理管線(xiàn)350 在貝塔相位管線(xiàn)開(kāi)始處大約具有相同的工作量。
[0066] 請(qǐng)注意,如本文所使用的,對(duì)共享存儲(chǔ)器的引用可以包括任何一個(gè)或多個(gè)技術(shù)可 行的存儲(chǔ)器,包括但不限于由一個(gè)或多個(gè)流多處理器所共享的本地存儲(chǔ)器或可經(jīng)由存儲(chǔ)器 接口 214訪問(wèn)的存儲(chǔ)器,諸如高速緩存存儲(chǔ)器、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104。還 請(qǐng)注意,如本文所使用的,對(duì)高速緩存存儲(chǔ)器的引用可以包括但不限于任何一個(gè)或多個(gè)技 術(shù)可行的存儲(chǔ)器,包括但不限于L1高速緩存、L1. 5高速緩存和L2高速緩存。
[0067] 路徑渲染
[0068] 圖1的軟件應(yīng)用125可以配置圖形處理管線(xiàn)350以實(shí)施與基于由CPU102和/或 系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù)相關(guān)的各種操作。特別地,軟件應(yīng)用125 可以配置圖形處理管線(xiàn)350以實(shí)施與路徑渲染相關(guān)的操作。如本文之前所概述的,路徑渲 染是諸如HTML5Canvas和SVG的若干重要渲染標(biāo)準(zhǔn)的基礎(chǔ)。在操作中,PPU202利用每像素 N個(gè)覆蓋樣本和每像素 Μ個(gè)顏色樣本實(shí)現(xiàn)模板然后覆蓋路徑渲染。一般地,軟件應(yīng)用125定 義路徑并且配置PPU202以將模板然后覆蓋路徑渲染實(shí)施為兩個(gè)連續(xù)的渲染步驟-路徑模 板步驟和路徑覆蓋步驟。
[0069] 圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖2的PPU202可以配置為實(shí)現(xiàn)其的路 徑模板步驟485和路徑覆蓋步驟495。如本文之前所公開(kāi)的,PPU202配置為實(shí)施模板然后 覆蓋路徑渲染。首先,PPU202實(shí)施路徑模板步驟485,由此生成來(lái)自模板步驟的模板數(shù)據(jù) 445。隨后,PPU202發(fā)起路徑覆蓋步驟495,由此生成經(jīng)渲染的路徑455。
[0070] 在操作中,圖1的軟件應(yīng)用指定路徑并且發(fā)起路徑模板步驟485。一旦接收到路 徑規(guī)格,PPU202就生成代表路徑的路徑幾何體403。如所示的,VPC單元370、光柵化器單 元385、PS單元390和R0P單元395處理路徑幾何體403,將來(lái)自模板步驟的模板數(shù)據(jù)445 渲染到模板緩沖區(qū)。在替代實(shí)施例中,PPU可以以任何組合使用任何可用處理單元以任何 技術(shù)可行的方式處理路徑幾何體。模板緩沖區(qū)中的值指示哪些覆蓋樣本由路徑覆蓋。如本 文之前所公開(kāi)的,PPU202維護(hù)每像素 Ν個(gè)覆蓋樣本和每像素 Μ個(gè)顏色樣本,其中Ν大于Μ。 在路徑模板步驟485期間,更新覆蓋樣本,但是不更新顏色樣本。
[0071] 在生成來(lái)自模板步驟的模板數(shù)據(jù)445之后,PPU202生成保守地覆蓋路徑的覆蓋幾 何體405。如所示的,VPC單元370、光柵化器單元385、PS單元390和ROP單元395處理覆 蓋幾何體405、為所覆蓋的像素著色并且生成經(jīng)渲染的路徑455。在替代實(shí)施例中,PPU可 以以任何組合使用任何可用處理單元以任何技術(shù)可行的方式處理覆蓋幾何體。在該過(guò)程期 間,PPU202將覆蓋樣本的數(shù)目減少到顏色樣本的數(shù)目。在一些實(shí)現(xiàn)方案中,對(duì)于每個(gè)顏色樣 本,PPU202標(biāo)識(shí)與顏色樣本相關(guān)聯(lián)的一組N/M個(gè)覆蓋樣本并且基于N/M個(gè)覆蓋樣本的被覆 蓋的部分生成用于顏色樣本的不透明度值。例如,如果每像素覆蓋樣本的數(shù)目是16并且每 像素顏色樣本的數(shù)目是4,那么PPU202將4個(gè)覆蓋樣本的組與每個(gè)顏色樣本相關(guān)聯(lián),并且可 能的不透明度值是〇、〇. 25、0. 5、0. 7和1. 0。顯而易見(jiàn)地,PPU202使用包括在模板緩沖區(qū)中 的來(lái)自模板步驟的模板數(shù)據(jù)455來(lái)丟棄未由路徑覆蓋的任何片段和覆蓋數(shù)據(jù)。之后PPU202 將再分的片段作為經(jīng)渲染的路徑455寫(xiě)到顏色緩沖區(qū)。
[0072] 如本文之前所公開(kāi)的,典型的現(xiàn)有技術(shù)可以確定顏色樣本在共享邊緣處僅部 分地由圖形圖元覆蓋。因此,這類(lèi)PPU可在共享邊緣處引入混淆偽像。相比之下,PPU202確 定每個(gè)顏色樣本在每個(gè)共享邊緣處由圖形圖元完全覆蓋或不覆蓋。然而,PPU202可以確定 特定的顏色樣本在非共享邊緣處僅部分地由圖形圖元覆蓋。因此,本文所公開(kāi)的技術(shù)使得 PPU202能夠使用比顏色樣本多的覆蓋樣本有效地對(duì)路徑進(jìn)行渲染,同時(shí)確保經(jīng)渲染的路徑 不包括與共享邊緣相關(guān)聯(lián)的混淆偽像。
[0073] 圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖3的圖形處理管線(xiàn)350可以配置為 渲染其的三角扇500的示意圖。如本文之前所公開(kāi)的,PPU202配置為作為模板然后覆蓋路 徑渲染的一部分渲染路徑幾何體403和覆蓋幾何體405。三角扇500可以包括在路徑幾何 體403和覆蓋幾何體405二者或之一中。
[0074] 如所示的,三角扇500是共享單個(gè)頂點(diǎn)的經(jīng)連接三角形集。還如所示的,三角扇 500包括共享邊緣510、非共享邊緣520和內(nèi)部邊緣530。特別地,共享邊緣510中的每一個(gè) 還包括在另一路徑(未示出)中。例如,共享邊緣510中的每一個(gè)還可以包括在不同的圖形 圖元中。通過(guò)對(duì)比,非共享邊緣520和內(nèi)部邊緣530不包括在任何其他路徑中。可以以任 何技術(shù)可行的方式標(biāo)識(shí)共享邊緣510。例如,圖1的軟件應(yīng)用125可以將共享邊緣510明確 地標(biāo)識(shí)為路徑規(guī)格的一部分。另外,圖1的設(shè)備驅(qū)動(dòng)程序103可以將共享邊緣510指明為 對(duì)路徑規(guī)格進(jìn)行處理的一部分。
[0075] 如所示的,內(nèi)部邊緣530是在三角扇內(nèi)部的邊緣。內(nèi)部邊緣530中的每一個(gè)在包括 在三角扇500中的經(jīng)連接三角形之間共享??梢砸匀魏渭夹g(shù)可行的方式標(biāo)識(shí)內(nèi)部邊緣530。 例如,可以基于三角扇500的規(guī)格標(biāo)識(shí)內(nèi)部邊緣530。
[0076] 在一個(gè)實(shí)施例中,在路徑模板步驟485期間,PPU202與相對(duì)于非共享邊緣520和 內(nèi)部邊緣530的覆蓋不同地確定相對(duì)于共享邊緣510的覆蓋。隨后,在路徑覆蓋步驟495 期間,PPU202與相對(duì)于共享邊緣510和非共享邊緣520的覆蓋不同地確定相對(duì)于內(nèi)部邊緣 530的覆蓋。在替代實(shí)施例中,PPU可以配置為標(biāo)識(shí)任何數(shù)目的其他邊緣特征,并且隨后基 于這些邊緣特征修改渲染過(guò)程。例如,在一些替代實(shí)施例中,在路徑覆蓋步驟期間,PPU當(dāng) 確定覆蓋時(shí)不區(qū)分共享邊緣、非共享邊緣和內(nèi)部邊緣。
[0077] 如本領(lǐng)域技術(shù)人員將理解的,三角扇500是圖形處理管線(xiàn)350可以配置為渲染其 的特定圖形圖元的示例。諸如三角條的其他圖形圖元也可以包括共享邊緣510、非共享邊緣 520和內(nèi)部邊緣530。這類(lèi)圖形圖元由PPU202以類(lèi)似方式進(jìn)行處理。
[0078] 圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了圖3的光柵化器單元385可以配置為 實(shí)現(xiàn)其的樣本組610和樣本邊緣規(guī)則的示意圖。如本文之前所公開(kāi)的,PPU202支持每像素 N個(gè)覆蓋樣本和每像素 Μ個(gè)顏色樣本,其中N大于M。如所示的,對(duì)于每個(gè)顏色樣本,PPU202 標(biāo)識(shí)與顏色樣本相關(guān)聯(lián)的Ν/Μ個(gè)覆蓋樣本的樣本組610。此外,PPU202將包括在樣本組610 中的覆蓋樣本之一指明為主要樣本617,并且將包括在樣本組610中的剩余覆蓋樣本指明 為次要樣本615。
[0079] 如所示的,圖6將樣本組610示出為虛線(xiàn)正方形,將主要樣本617示出為重描畫(huà)的 點(diǎn),并且將次要樣本615示出為輕描畫(huà)的點(diǎn)。此外,圖6將經(jīng)覆蓋的樣本描繪為滿(mǎn)的并且將 未經(jīng)覆蓋的樣本描繪為未滿(mǎn)的。還如所示的,樣本組610中的每一個(gè)包括單個(gè)主要樣本617 和三個(gè)次要樣本615。計(jì)算機(jī)系統(tǒng)100可以確定覆蓋樣本的位置并且以任何技術(shù)可行的方 式指明主要覆蓋樣本617。例如,設(shè)備驅(qū)動(dòng)程序103可以確定覆蓋樣本的位置并且將包括在 每個(gè)樣本組610中的第一覆蓋樣本指明為主要覆蓋樣本617。然而,對(duì)于每個(gè)樣本組610, 計(jì)算機(jī)系統(tǒng)1〇〇跨路徑確定地并且一致地選擇對(duì)應(yīng)的主要樣本617。在替代實(shí)施例中,樣本 組可以包括任何數(shù)目的次要樣本,包括0個(gè)。
[0080] 有利地,在一個(gè)實(shí)施例中,光柵化器單元385配置為基于與每個(gè)邊緣相關(guān)聯(lián)的特 征在不同樣本邊緣規(guī)則之間進(jìn)行選擇。注意樣本邊緣規(guī)則,本文也稱(chēng)為"樣本規(guī)則",是可被 應(yīng)用到覆蓋樣本以確定覆蓋樣本是否被認(rèn)為在邊緣里面的光柵化規(guī)則。對(duì)于每個(gè)邊緣,光 柵化器單元385將所選擇的樣本邊緣規(guī)則應(yīng)用到邊緣以確定包括在樣本組610中的覆蓋樣 本的覆蓋。簡(jiǎn)單邊緣規(guī)則包括但不限于單獨(dú)樣本邊緣規(guī)則455、主要簡(jiǎn)單邊緣規(guī)則465和任 何樣本邊緣規(guī)則475。如在常規(guī)的光柵化操作中,光柵化器單元385通過(guò)確定與圖元的每個(gè) 邊緣相關(guān)的覆蓋結(jié)果的相交或聯(lián)合來(lái)確定樣本組610相對(duì)于特定圖元的覆蓋。
[0081] 在應(yīng)用單獨(dú)樣本邊緣規(guī)則455時(shí),光柵化器單元385獨(dú)立于包括在樣本組610中 的其他覆蓋樣本確定包括在樣本組610中的覆蓋樣本中的每一個(gè)的覆蓋。特別地,光柵化 器單元385基于主要樣本617相對(duì)于邊緣的位置確定主要樣本617的覆蓋。類(lèi)似地,對(duì)于 次要樣本615中的每一個(gè),光柵化器單兀385基于次要樣本615相對(duì)于邊緣的位置確定次 要樣本615的覆蓋。
[0082] 如所示的,光柵化器單元385將單獨(dú)樣本邊緣規(guī)則455應(yīng)用到位于三角形的一個(gè) 邊緣上的兩個(gè)樣本組610。對(duì)于左手樣本組610,光柵化器單兀385確定次要樣本615之一 的位置在三角形的邊緣里面并且因此被覆蓋。對(duì)于右手樣本組610,光柵化器單元385確定 主要樣本617和三個(gè)次要樣本中的兩個(gè)的位置位于三角形的邊緣里面并且因此被覆蓋。
[0083] 在應(yīng)用主要樣本邊緣規(guī)則465時(shí),光柵化器單元385基于次要樣本617相對(duì)于邊 緣的位置確定包括在樣本組610中的所有覆蓋樣本的覆蓋。因此,光柵化器單元385確定 包括在樣本組610中的所有樣本被覆蓋或者包括在樣本組610中的所有樣本未被覆蓋。有 利地,以該方式確定覆蓋確保對(duì)于與樣本組610相關(guān)聯(lián)的顏色樣本來(lái)說(shuō),在從(N/Μ)個(gè)覆蓋 樣本減少到單個(gè)顏色樣本期間,覆蓋不與不透明度混淆。
[0084] 如所示的,光柵化器單元385將主要樣本邊緣規(guī)則465應(yīng)用到位于三角形的邊緣 上的兩個(gè)樣本組610。對(duì)于左手樣本組610,光柵化器單兀385確定主要樣本617的位置在 三角形的邊緣外面,并且因此主要樣本617和所有次要樣本615未被覆蓋。對(duì)于右手樣本 組610,光柵化器單元385確定主要樣本617在三角形的邊緣里面,并且因此主要樣本617 和所有次要樣本615被覆蓋。
[0085] 在應(yīng)用任何樣本邊緣規(guī)則475時(shí),如果光柵化器單元385確定主要樣本617或次 要樣本615中的任何一個(gè)的位置相對(duì)于邊緣在圖元里面,那么光柵化器單元385確定所有 覆蓋樣本被覆蓋。以該方式確定覆蓋確保對(duì)于與樣本組610相關(guān)聯(lián)的顏色樣本來(lái)說(shuō),在從 (N/M)個(gè)覆蓋樣本減少到單個(gè)顏色樣本期間,覆蓋不與不透明度混淆。顯而易見(jiàn)地,任何樣 本邊緣規(guī)則475比單獨(dú)樣本邊緣規(guī)則455和主要樣本邊緣規(guī)則465更保守。
[0086] 如所示的,光柵化器單元385將任何樣本邊緣規(guī)則465應(yīng)用到位于三角形的一個(gè) 邊緣上的兩個(gè)樣本組610。對(duì)于左手樣本組610,光柵化器單兀385確定四個(gè)覆蓋樣本之一 的位置在三角形的邊緣里面,并且因此主要樣本617和所有次要樣本617被覆蓋。對(duì)于右 手樣本組610,光柵化器單元385確定四個(gè)覆蓋樣本中的三個(gè)的位置在三角形的邊緣里面, 并且因此主要樣本617和所有次要樣本615被覆蓋。
[0087] 另外,光柵化器單元385可以配置為基于邊緣的特征將不同樣本邊緣規(guī)則應(yīng)用到 圖元的邊緣。此外,光柵化器單元385可以配置為基于PPU202是否正在執(zhí)行路徑模板步驟 485或路徑覆蓋步驟495來(lái)選擇不同的邊緣規(guī)則。盡管結(jié)合圖6所描述的示例示出了相對(duì) 于單個(gè)邊緣的覆蓋,但是光柵化器385通過(guò)確定與圖元的每個(gè)邊緣有關(guān)的覆蓋結(jié)果的相交 來(lái)確定樣本組610相對(duì)于特定圖元的覆蓋。
[0088] 在一個(gè)實(shí)施例中,在路徑模板步驟485期間,光柵化器單元385將單獨(dú)樣本邊緣規(guī) 則應(yīng)用到非共享邊緣520和內(nèi)部邊緣530。通過(guò)對(duì)比,光柵化器單元385將主要樣本邊緣 規(guī)則465應(yīng)用到共享邊緣510。因?yàn)楣鈻呕鲉卧?85確定每個(gè)樣本組610相對(duì)于共享邊 緣510被完全覆蓋或完全不覆蓋,所以現(xiàn)有技術(shù)中的與共享邊緣相關(guān)聯(lián)的混淆偽像可以被 減少。
[0089] 在路徑覆蓋步驟495期間,光柵化器單元385將任何樣本邊緣規(guī)則475應(yīng)用到非 共享邊緣520和共享邊緣510,并且將主要樣本邊緣規(guī)則465應(yīng)用到內(nèi)部邊緣530。另外,因 為光柵化器單元385確定每個(gè)樣本組610相對(duì)于共享邊緣510被完全覆蓋或完全不覆蓋, 所以現(xiàn)有技術(shù)中的與共享邊緣相關(guān)聯(lián)的混淆偽像可以被減少。此外,通過(guò)將主要樣本邊緣 規(guī)則465應(yīng)用到內(nèi)部邊緣530,光柵化器單元385避免路徑覆蓋步驟495期間的雙倍光柵 化。
[0090] 在本發(fā)明的一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可以配置PPU202以有效地在每路徑基 礎(chǔ)上應(yīng)用主要樣本邊緣規(guī)則465。特別地,如果計(jì)算機(jī)系統(tǒng)100確定包括在路勁中的任何邊 緣是共享邊緣510,那么計(jì)算機(jī)系統(tǒng)100配置PPU202以基于主要樣本617的位置確定整個(gè) 樣本組610的覆蓋。
[0091] 在一個(gè)實(shí)施例中,如果圖1的設(shè)備驅(qū)動(dòng)程序103確定路徑包括共享邊緣510,那么 設(shè)備驅(qū)動(dòng)程序103當(dāng)光柵化路徑時(shí)共同定位包括在樣本組610中的每一個(gè)中的覆蓋樣本的 位置。更具體地,在光柵化器單元385光柵化與這類(lèi)路徑相關(guān)聯(lián)的圖元之前,設(shè)備驅(qū)動(dòng)程序 103重新編程所有次要樣本615的位置以匹配相關(guān)聯(lián)的主要樣本617的位置。因此,對(duì)于每 個(gè)樣本組610,光柵化器單元385將單個(gè)位置與所有覆蓋樣本相關(guān)聯(lián)。在光柵化器單元385 光柵化圖元之后,設(shè)備驅(qū)動(dòng)程序103將次要樣本615的位置恢復(fù)到原始指派的位置。本領(lǐng) 域技術(shù)人員應(yīng)該理解,當(dāng)PPU202處理全部包括共享邊緣510的圖元序列時(shí),涉及共同定位 和恢復(fù)次要樣本615的位置的操作可以被減少。
[0092] 在另一個(gè)實(shí)施例中,如果計(jì)算機(jī)系統(tǒng)100確定路徑包括共享邊緣510,則計(jì)算機(jī)系 統(tǒng)100配置PS單元390以經(jīng)由樣本掩碼將單個(gè)輸出覆蓋指派到包括在樣本組510中的所 有樣本。在操作中,PS單元390選擇主要樣本617的輸出覆蓋、將所選擇的覆蓋指派到相 關(guān)聯(lián)的次要樣本615中的每一個(gè)并且寫(xiě)入對(duì)應(yīng)的樣本掩碼。
[0093] 圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了索引緩沖區(qū)760的示意圖。如本領(lǐng)域 所公知的,索引緩沖區(qū)760可以用來(lái)減少用于作為經(jīng)索引的幾何渲染的一部分存儲(chǔ)圖形圖 元的存儲(chǔ)器。
[0094] 在操作中,圖形圖元可以由包括在索引緩沖區(qū)760中的索引緩沖區(qū)條目序列750 代表。如所示的,每個(gè)索引緩沖區(qū)條目750包括邊緣標(biāo)志752和頂點(diǎn)索引754。一般地,每 個(gè)索引緩沖區(qū)條目750包括N個(gè)總位數(shù),其中最高的Μ位存儲(chǔ)邊緣標(biāo)志752并且剩余(N-M) 位存儲(chǔ)頂點(diǎn)緩沖區(qū)索引754。如在常規(guī)的經(jīng)索引的幾何渲染中,頂點(diǎn)索引754是到包括每頂 點(diǎn)數(shù)據(jù)的頂點(diǎn)緩沖區(qū)(未示出)中的索引。然而,在現(xiàn)有的方法中,典型地包括在每個(gè)索引緩 沖區(qū)條目中的所有Ν位被分配用于頂點(diǎn)索引的存儲(chǔ)。有利地,通過(guò)再利用每個(gè)索引緩沖區(qū) 條目750的最高位來(lái)代表邊緣標(biāo)志752,每個(gè)索引緩沖區(qū)條目750可以除經(jīng)由頂點(diǎn)索引754 所訪問(wèn)的每頂點(diǎn)數(shù)據(jù)以外存儲(chǔ)每邊緣數(shù)據(jù)。通過(guò)對(duì)比,常規(guī)技術(shù)典型地復(fù)制用于每個(gè)邊緣 的頂點(diǎn)數(shù)據(jù)。
[0095] 例如,如所示的,三角形705-0可以由三個(gè)頂點(diǎn)715-0、715-1和715-2按順時(shí)針順 序720定義。還如所示的,三角形705-1可以由三個(gè)頂點(diǎn)715-3、715-0和715-2按順時(shí)針 順序720定義。此外,連接頂點(diǎn)715-0和頂點(diǎn)715-2的邊緣在多個(gè)路徑之間共享。如所示 的,頂點(diǎn)緩沖區(qū)760使用8位索引緩沖區(qū)條目750代表兩個(gè)三角形705-0和705-1,其中最 高位存儲(chǔ)邊緣標(biāo)志752并且剩余7位存儲(chǔ)頂點(diǎn)索引754。特別地,具有"1"的邊緣標(biāo)志752 值指示源自對(duì)應(yīng)的頂點(diǎn)索引754的圖形圖元邊緣是共享邊緣510之一。
[0096] 為了進(jìn)一步優(yōu)化存儲(chǔ)器使用,邊緣標(biāo)志752的語(yǔ)義可以取決于渲染步驟而變化。 在示范性索引緩沖區(qū)760中,PPU202配置為實(shí)現(xiàn)路徑模板步驟485,并且經(jīng)激活邊緣標(biāo)志 752指示特定共享邊緣510的起源頂點(diǎn)715。通過(guò)對(duì)比,如果PPU202配置為實(shí)現(xiàn)路徑覆蓋 步驟495,之后經(jīng)激活邊緣標(biāo)志752指示特定內(nèi)部邊緣530的起源頂點(diǎn)715。
[0097] 在替代實(shí)施例中,可以為邊緣標(biāo)志保留任何數(shù)目的位,并且邊緣標(biāo)志可以代表與 邊緣相關(guān)聯(lián)的任何數(shù)據(jù)。在一些實(shí)施例中,光柵化器單元可以配置為基于邊緣標(biāo)志在兩個(gè) 樣本邊緣規(guī)則之間進(jìn)行選擇。在其他實(shí)施例中,邊緣標(biāo)志可以代表邊緣的數(shù)個(gè)不同特征,諸 如共享對(duì)非共享以及內(nèi)部對(duì)外部。如本領(lǐng)域技術(shù)人員將理解的,本發(fā)明的實(shí)施例包括在光 柵化操作期間再利用包括在索引緩沖區(qū)中的位來(lái)指導(dǎo)樣本邊緣規(guī)則的選擇的任何技術(shù)。
[0098] 圖8Α-8Β闡述根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于光柵化三角形的方法步驟的流程 圖。盡管參考圖1-7的系統(tǒng)描述了該方法步驟,但是本領(lǐng)域技術(shù)人員將理解配置為以任何 順序?qū)嵤┰摲椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0099] 如所示的,方法800始于步驟802,其中光柵化器單元385作為路徑模板步驟485 的一部分接收輸入三角形。在步驟804,光柵化器單元385選擇覆蓋樣本的特定樣本組610, 并且將相關(guān)聯(lián)的主要覆蓋值和相關(guān)聯(lián)的次要覆蓋值初始化為'1'。主要覆蓋值和次要覆蓋 值的每一個(gè)代表相關(guān)聯(lián)的覆蓋樣本是否被認(rèn)為由輸入三角形覆蓋。如本文之前所描述的, PPU202維護(hù)每像素 Ν個(gè)覆蓋樣本和每像素 Μ個(gè)顏色樣本,其中Ν大于Μ。每個(gè)樣本組610 與特定顏色樣本相關(guān)聯(lián)。此外,樣本組610中的(N/M)個(gè)覆蓋樣本之一是主要樣本617并 且剩余覆蓋樣本是次要樣本615。計(jì)算機(jī)系統(tǒng)100可以以任何技術(shù)可行的方式選擇主要樣 本617。然而,對(duì)于每個(gè)顏色樣本,計(jì)算機(jī)系統(tǒng)跨路徑確定地和一致地選擇對(duì)應(yīng)的主要樣本 617。顯而易見(jiàn)地,次要顏色值的數(shù)目等于次要樣本615的數(shù)目。
[0100] 在步驟806,光柵化器單元385選擇包括在輸入三角形中的第一邊緣。在步驟808, 光柵化器單元385相對(duì)所選擇的邊緣評(píng)估主要樣本617。如果光柵化器單元385確定主要 樣本617的位置關(guān)于所選擇的邊緣在輸入三角形的里面,之后光柵化器單元385將主要邊 緣覆蓋值設(shè)置為' Γ。反之,如果光柵化器單元385確定主要樣本617關(guān)于所選擇的邊緣在 輸入三角形的外面,之后光柵化器單元385將主要邊緣覆蓋值設(shè)置為'0'。一般地,主要邊 緣覆蓋值代表主要樣本617是否被認(rèn)為在輸入三角形的所選擇的邊緣里面。在步驟810,如 果光柵化器385確定所選擇的邊緣不是共享邊緣510之一,之后方法800前進(jìn)至步驟812。 光柵化器單元385可以以任何技術(shù)可行的方式確定所選擇的邊緣是共享邊緣510之一。例 如,在一些實(shí)施例中,光柵化器單元385可以對(duì)邊緣標(biāo)志752實(shí)施讀操作以確定邊緣標(biāo)志 752是否被激活。在步驟812,光柵化器單元385將單獨(dú)樣本邊緣規(guī)則455應(yīng)用到所選擇的 邊緣。在操作中,對(duì)于次要樣本615中的每一個(gè),光柵化器單兀385基于次要樣本615是否 關(guān)于所選擇的邊緣在輸入三角形的里面設(shè)置對(duì)應(yīng)的次要邊緣覆蓋值。一般地,次要邊緣覆 蓋值代表次要樣本615是否被認(rèn)為在輸入三角形的所選擇的邊緣里面。之后方法800前進(jìn) 至步驟816。
[0101] 如果在步驟810,光柵化器單元385確定所選擇的邊緣不是共享邊緣510之一,之 后方法800前進(jìn)至步驟814。在步驟814,光柵化器單元385將主要樣本邊緣規(guī)則465應(yīng)用 到所選擇的邊緣。在操作中,對(duì)于次要樣本615中的每一個(gè),光柵化器單元385設(shè)置對(duì)應(yīng)的 次要邊緣覆蓋值以匹配主要邊緣覆蓋值。有利地,通過(guò)確定樣本組610由輸入三角形完全 覆蓋或完全不覆蓋,光柵化器單元385實(shí)現(xiàn)覆蓋的布爾概念用于與共享邊緣510相關(guān)聯(lián)的 顏色樣本。
[0102] 在步驟816,光柵化器單元385在主要邊緣覆蓋值和主要覆蓋值之間實(shí)施邏輯與 (AND)操作。以此方式,光柵化單元385合成所選擇的邊緣的覆蓋和任何先前的每邊緣覆蓋 值。在步驟818,對(duì)于每個(gè)次要邊緣覆蓋值,光柵化器單元385在次要邊緣覆蓋值和次要覆 蓋值之間實(shí)施邏輯與操作。在步驟820,如果光柵化器單元385確定所選擇的邊緣不是包括 在輸入三角形中的第三邊緣,之后光柵化器單元385前進(jìn)至步驟822。
[0103] 在步驟822,光柵化單元285選擇包括在輸入三角形中的下一個(gè)邊緣,并且方法 800返回到步驟808。光柵化器單元385從步驟808到822循環(huán),選擇邊緣規(guī)則并且將其應(yīng) 用到每個(gè)邊緣直到光柵化器單元385已經(jīng)處理包括在輸入三角形中的所有三個(gè)邊緣為止。 在替代實(shí)施例中,輸入三角形可以由任何輸入圖元所替代,并且光柵化器單元385從步驟 808到822循環(huán)直到光柵化器385已經(jīng)處理包括在輸入圖元中的所有邊緣。在步驟820,如 果所選擇的邊緣是包括在輸入三角形中的第三邊緣,那么主要覆蓋值和次要覆蓋值代表由 輸入三角形對(duì)樣本組610的覆蓋。在替代實(shí)施例中,光柵化器單元385可以并行處理多個(gè) 樣本組或邊緣。在一些替代實(shí)施例中,光柵化器單元385可以基于任何技術(shù)可行的標(biāo)準(zhǔn)選 擇任何光柵化規(guī)則,諸如包括在索引緩沖區(qū)條目750中的其他標(biāo)志。
[0104] 圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于渲染路徑的方法步驟的流程圖。盡管參 考圖1-7的系統(tǒng)描述了該方法步驟,但是本領(lǐng)域技術(shù)人員將理解配置為以任何順序?qū)嵤┰?方法步驟的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0105] 如所示的,方法900始于步驟902,其中軟件應(yīng)用125指定路徑。作為定義路徑的 一部分,軟件應(yīng)用125指明任何共享邊緣510。在步驟904,設(shè)備驅(qū)動(dòng)程序103確定路徑包 括任何共享邊緣510。設(shè)備驅(qū)動(dòng)程序103可以以任何技術(shù)可行的方式標(biāo)識(shí)包括在路徑中的 共享邊緣510。例如,設(shè)備驅(qū)動(dòng)程序103可以基于由軟件應(yīng)用125所發(fā)出的明確命令標(biāo)識(shí)一 些共享邊緣510,并且在生成路徑幾何體的同時(shí)標(biāo)識(shí)其他共享邊緣510。
[0106] 在步驟906,如果設(shè)備驅(qū)動(dòng)程序103確定路徑包括一個(gè)或多個(gè)共享邊緣510,之后 方法900前進(jìn)至步驟908。在步驟908,對(duì)于每個(gè)顏色樣本,設(shè)備驅(qū)動(dòng)程序103共同定位包括 在相關(guān)聯(lián)的樣本組610中的覆蓋樣本。更具體地,對(duì)于每個(gè)樣本組610,設(shè)備驅(qū)動(dòng)程序103 設(shè)置所有次要樣本615的位置以匹配主要樣本617的位置。在替代實(shí)施例中,設(shè)備驅(qū)動(dòng)程 序可以以任何技術(shù)可行的方式重新編程覆蓋樣本的位置。在步驟910,光柵化器單元385處 理路徑。有利地,因?yàn)槊總€(gè)樣本組610與單個(gè)位置相關(guān)聯(lián),光柵化器單元285確定每個(gè)顏色 樣本由每個(gè)圖形圖元完全覆蓋或完全不覆蓋。在步驟912,設(shè)備驅(qū)動(dòng)程序103恢復(fù)包括在 每個(gè)樣本組610中的次要樣本615的位置,并且方法900前進(jìn)至步驟916。在步驟916, PS 單元390和R0P單元395完成渲染步驟,并且方法900終止。在替代實(shí)施例中,PS單元390 和R0P單元395在設(shè)備驅(qū)動(dòng)程序103實(shí)施步驟912,恢復(fù)次要樣本615的位置之前實(shí)施步驟 916,完成渲染步驟。
[0107] 如果在步驟906,設(shè)備驅(qū)動(dòng)程序103確定路徑不包括一個(gè)或多個(gè)共享邊緣510,之 后方法900前進(jìn)至步驟914。在步驟914,光柵化器單元385處理路徑。特別地,光柵化器 單元385在處理路徑的同時(shí)維護(hù)每像素 N個(gè)明確定位的覆蓋樣本和每像素 N個(gè)顏色樣本。 之后方法900前進(jìn)至步驟916。在步驟916, PS單元390和R0P單元395完成渲染步驟,并 且方法900終止。
[0108] 總之,在一個(gè)實(shí)例中,光柵化器單元基于與路徑相關(guān)聯(lián)的特征將不同的邊緣規(guī)則 應(yīng)用到圖元的邊緣。特別地,在路徑模板步驟中,光柵化器單元基于邊緣是否在不同的路徑 之間共享選擇哪個(gè)邊緣規(guī)則應(yīng)用到每個(gè)邊緣。如果邊緣在不同的路徑之間共享,那么光柵 化器單元將主要樣本邊緣規(guī)則應(yīng)用到邊緣。在將主要樣本邊緣規(guī)則應(yīng)用到邊緣時(shí),光柵化 器單元基于單個(gè)覆蓋樣本的位置-主要樣本確定與單個(gè)顏色樣本相關(guān)聯(lián)的一組覆蓋樣本 全體在邊緣里面還是外面。通過(guò)對(duì)比,如果邊緣不被共享,那么光柵化器單元將獨(dú)立樣本邊 緣規(guī)則應(yīng)用到邊緣。在將獨(dú)立樣本邊緣規(guī)則應(yīng)用到邊緣時(shí),光柵化器單元基于覆蓋樣本的 位置確定每個(gè)覆蓋樣本在邊緣里面還是外面。隨后,對(duì)于每個(gè)覆蓋樣本,如果光柵化器單元 確定覆蓋樣本在與圖元相關(guān)聯(lián)的,每個(gè)邊緣里面,之后光柵化器單元確定覆蓋樣本由圖元 覆蓋。
[0109] 類(lèi)似地,在路徑覆蓋步驟中,光柵化器單元基于邊緣是否在圖元內(nèi)部選擇哪個(gè)邊 緣規(guī)則應(yīng)用到圖元的每個(gè)邊緣。如果邊緣在圖元內(nèi)部,之后光柵化器單元將主要樣本邊緣 規(guī)則應(yīng)用到邊緣。通過(guò)對(duì)比,如果邊緣不在圖元內(nèi)部,那么光柵化器單元將任何樣本邊緣規(guī) 則應(yīng)用到邊緣。在將任何樣本邊緣規(guī)則應(yīng)用到邊緣時(shí),如果光柵化器單元確定與顏色樣本 相關(guān)聯(lián)的任何覆蓋樣本的位置在邊緣里面,之后光柵化器單元確定與顏色樣本相關(guān)聯(lián)的所 有覆蓋樣本在邊緣里面。另外,對(duì)于每個(gè)覆蓋樣本,如果光柵化器單元確定覆蓋樣本在于特 定圖元相關(guān)聯(lián)的所有邊緣里面,之后光柵化器單元確定覆蓋樣本由圖元覆蓋。
[0110] 在一些實(shí)例中,當(dāng)渲染經(jīng)索引的幾何體時(shí),設(shè)備驅(qū)動(dòng)程序再利用包括在索引緩沖 區(qū)條目中的最高位來(lái)存儲(chǔ)邊緣標(biāo)志。一般地,包括在索引緩沖區(qū)中的一系列順序索引緩沖 區(qū)條目定義圖元。例如,一系列三個(gè)順序的索引緩沖區(qū)條目定義三角形圖元。設(shè)備驅(qū)動(dòng)程 序指明N位索引緩沖區(qū)條目的Μ位存儲(chǔ)邊緣標(biāo)志,并且指明索引緩沖區(qū)條目的(N-M)位存 儲(chǔ)頂點(diǎn)索引。如眾所周知的,頂點(diǎn)索引是到包含頂點(diǎn)數(shù)據(jù)的頂點(diǎn)緩沖區(qū)中的索引。在路徑 渲染中,邊緣標(biāo)志的語(yǔ)義取決于渲染步驟而變化。在路徑模板步驟過(guò)程期間,特定索引緩沖 區(qū)條目中的經(jīng)激活的最高位指示源自在兩個(gè)或更多個(gè)路徑之間共享的相關(guān)聯(lián)的頂點(diǎn)索引 的圖元邊緣。在路徑覆蓋步驟期間,特定索引緩沖區(qū)條目中的經(jīng)激活的最高位指示源自圖 元內(nèi)部的相關(guān)聯(lián)的頂點(diǎn)索引的圖元邊緣。
[0111] 在第三實(shí)例中,設(shè)備驅(qū)動(dòng)程序可以基于與路徑相關(guān)聯(lián)的特征重新編程次要覆蓋樣 本的位置。設(shè)備驅(qū)動(dòng)程序在光柵化器單元作為路徑模板或路徑覆蓋步驟的一部分處理路徑 之前實(shí)施任何這類(lèi)重新編程。特別地,在光柵化特定路徑之前,如果設(shè)備驅(qū)動(dòng)程序確定特定 路徑包括在多個(gè)路徑之間共享的一個(gè)或多個(gè)邊緣,之后設(shè)備驅(qū)動(dòng)程序共同定位與每個(gè)顏色 樣本相關(guān)聯(lián)的覆蓋樣本位置。在操作中,對(duì)于每個(gè)覆蓋樣本組,設(shè)備驅(qū)動(dòng)程序重新編程次要 樣本位置中的每一個(gè)以匹配主要樣本位置。在光柵化器單元實(shí)施與路徑模板或路徑覆蓋步 驟相關(guān)聯(lián)的操作之后,設(shè)備驅(qū)動(dòng)程序?qū)⒋我獦颖净謴?fù)到原始位置。
[0112] 以上方法的一個(gè)優(yōu)勢(shì)是與在不同路徑之間共享的邊緣相關(guān)聯(lián)的混淆偽像被減少。 特別地,對(duì)于每個(gè)共享邊緣,光柵化器單元設(shè)置與特定顏色樣本相關(guān)聯(lián)的每組覆蓋樣本以 由每個(gè)圖元完全覆蓋或完全不覆蓋。因此,包括共享邊緣的光柵化器圖元當(dāng)使用比每像素 顏色樣本多的每像素覆蓋樣本進(jìn)行渲染時(shí)不產(chǎn)生造成背景滲色的部分覆蓋。此外,使用比 顏色樣本多的覆蓋樣本進(jìn)行渲染與現(xiàn)有技術(shù)相比減少存儲(chǔ)器消耗和存儲(chǔ)器帶寬使用,在現(xiàn) 有技術(shù)中顏色樣本的數(shù)目被增加以匹配覆蓋樣本的數(shù)目。在以上方法的一個(gè)方面,存儲(chǔ)器 消耗通過(guò)再利用包括在索引緩沖區(qū)中的位來(lái)存儲(chǔ)邊緣標(biāo)志被進(jìn)一步優(yōu)化。因此,所公開(kāi)的 方法使能存儲(chǔ)器高效路徑渲染操作而沒(méi)有典型地與現(xiàn)有技術(shù)相關(guān)聯(lián)的共享邊緣混淆偽像。
[0113] 本發(fā)明的一個(gè)實(shí)施例可被實(shí)施為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品 的程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計(jì)算機(jī)可讀 存儲(chǔ)介質(zhì)上。示例性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于:(i)不可寫(xiě)的存儲(chǔ)介質(zhì)(例如,計(jì) 算機(jī)內(nèi)的只讀存儲(chǔ)器設(shè)備,諸如可由CD-ROM驅(qū)動(dòng)器讀取的光盤(pán)只讀存儲(chǔ)器(CD-ROM)盤(pán)、閃 存、只讀存儲(chǔ)器(ROM)芯片或任何類(lèi)型的固態(tài)非易失性半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)永久性 信息;和(ii)可寫(xiě)的存儲(chǔ)介質(zhì)(例如,磁盤(pán)驅(qū)動(dòng)器或硬盤(pán)驅(qū)動(dòng)器內(nèi)的軟盤(pán)或者任何類(lèi)型的 固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)可更改的信息。
[0114] 以上已參照特定實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解 的是,可對(duì)此做出各種修改和變化而不脫離如隨附權(quán)利要求書(shū)中所闡釋的本發(fā)明的較寬精 神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。
[0115] 因此,本發(fā)明的實(shí)施例的范圍由隨后的權(quán)利要求闡述。
【權(quán)利要求】
1. 一種用于光柵化圖形圖元的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括: 確定與圖形圖元的第一邊緣相關(guān)聯(lián)的光柵化狀態(tài); 基于所述光柵化狀態(tài)從多個(gè)樣本規(guī)則選擇第一樣本規(guī)則; 基于所述第一樣本規(guī)則確定第一覆蓋樣本是否被認(rèn)為在所述第一邊緣里面;以及 基于所述第一覆蓋樣本是否被認(rèn)為在所述第一邊緣里面,確定所述第一覆蓋樣本是否 被認(rèn)為由所述圖形圖元覆蓋。
2. 如權(quán)利要求1所述的方法,其中所述圖形圖元包括路徑,并且所述光柵化狀態(tài)指示 所述第一邊緣是所述路徑的共享邊緣。
3. 如權(quán)利要求1所述的方法,其中所述圖形圖元包括路徑,并且所述光柵化狀態(tài)指示 所述第一邊緣是所述路徑的非共享邊緣。
4. 如權(quán)利要求1所述的方法,其中所述圖形圖元包括路徑,并且所述光柵化狀態(tài)指示 所述第一邊緣是所述路徑的外部邊緣。
5. 如權(quán)利要求1所述的方法,其中確定所述第一覆蓋樣本是否被認(rèn)為在所述第一邊 緣里面包括:計(jì)算所述第一覆蓋樣本相對(duì)于所述第一邊緣的位置是否駐留在所述圖形圖元 內(nèi)。
6. 如權(quán)利要求1所述的方法,其中所述圖形圖元包括三角形。
7. 如權(quán)利要求6所述的方法,其中確定所述第一覆蓋樣本是否被認(rèn)為由所述圖形圖元 覆蓋包括:確定所述第一覆蓋樣本是否被認(rèn)為在所述圖形圖元的所有三個(gè)邊緣里面,所述 所有三個(gè)邊緣包括所述第一邊緣、第二邊緣和第三邊緣。
8. 如權(quán)利要求1所述的方法,進(jìn)一步包括:基于所述第一覆蓋樣本是否被認(rèn)為由所述 圖形圖元覆蓋,合成用于第一顏色樣本的顏色值。
9. 一種配置為光柵化圖形圖元的計(jì)算設(shè)備,所述計(jì)算設(shè)備包括: 存儲(chǔ)器; 處理單元,其耦連到所述存儲(chǔ)器并且配置為實(shí)現(xiàn)圖形處理管線(xiàn)的至少一部分,其中所 述圖形處理管線(xiàn)的所述至少一部分配置為: 確定與圖形圖元的第一邊緣相關(guān)聯(lián)的光柵化狀態(tài); 基于所述光柵化狀態(tài)從多個(gè)樣本規(guī)則選擇第一樣本規(guī)則; 基于所述第一樣本規(guī)則確定第一覆蓋樣本是否被認(rèn)為在所述第一邊緣里面;以及 基于所述第一覆蓋樣本是否被認(rèn)為在所述第一邊緣里面,確定所述第一覆蓋樣本是否 被認(rèn)為由所述圖形圖元覆蓋。
10. -種配置為實(shí)現(xiàn)包括光柵化器的圖形處理管線(xiàn)的至少一部分的處理單元,其中所 述圖形處理管線(xiàn)的所述至少一部分配置為實(shí)施以下步驟: 解析與所述圖元的第一頂點(diǎn)相關(guān)聯(lián)的第一索引; 標(biāo)識(shí)包括在所述第一索引中的第一邊緣標(biāo)志和包括在所述第一索引中的第一頂點(diǎn)索 引; 基于所述第一頂點(diǎn)索引訪問(wèn)頂點(diǎn)緩沖區(qū)以讀取與所述第一頂點(diǎn)相關(guān)聯(lián)的數(shù)據(jù); 基于所述第一邊緣標(biāo)志和與所述第一頂點(diǎn)相關(guān)聯(lián)的所述數(shù)據(jù),光柵化所述圖元的第一 邊緣,其中所述第一邊緣源自所述第一頂點(diǎn)。
【文檔編號(hào)】G06T1/00GK104050619SQ201310741730
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2013年12月27日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】馬克·J·基爾加德, 杰弗里·A·博爾茲 申請(qǐng)人:輝達(dá)公司