用于可變分辨率渲染的一致性頂點(diǎn)捕捉的制作方法
【專(zhuān)利摘要】本公開(kāi)提供用于可變分辨率渲染的一致性頂點(diǎn)捕捉。提供用于調(diào)整頂點(diǎn)位置的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。接收一個(gè)或多個(gè)視口維度并基于一個(gè)或多個(gè)視口維度確定捕捉間距。根據(jù)捕捉間距將頂點(diǎn)位置調(diào)整到網(wǎng)格。頂點(diǎn)調(diào)整的精度可隨著視口的至少一個(gè)維度的減少而增加。頂點(diǎn)調(diào)整的精度可隨著視口的至少一個(gè)維度的增加而減少。
【專(zhuān)利說(shuō)明】用于可變分辨率渲染的一致性頂點(diǎn)捕捉
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及三維(3D)圖形處理,并且,更具體地,涉及將頂點(diǎn)捕捉(snap)到坐標(biāo)。
【背景技術(shù)】
[0002]圖形處理管線將典型地與三維對(duì)象相關(guān)聯(lián)的輸入圖形數(shù)據(jù)轉(zhuǎn)換成與二維表面相關(guān)聯(lián)的像素?cái)?shù)據(jù)。在常規(guī)實(shí)現(xiàn)方案中,圖形處理管線的世界空間部分負(fù)責(zé)在當(dāng)數(shù)據(jù)轉(zhuǎn)換成像素?cái)?shù)據(jù)之前處理輸入圖形數(shù)據(jù),其通常包括三角形和相關(guān)頂點(diǎn)的合集。圖形處理管線的屏幕空間部分負(fù)責(zé)處理被轉(zhuǎn)換的像素?cái)?shù)據(jù)并生成用于顯示的最終像素值。
[0003]圖形處理管線中的級(jí)(stage)中的一個(gè)是光柵化級(jí),其典型地涉及將由管線的世界空間部分所處理的圖形數(shù)據(jù)轉(zhuǎn)換成屏幕空間中的像素?cái)?shù)據(jù)。光柵化可涉及生成描述在管線的世界空間部分中處理的三角形邊的邊等式、確定那些三角形的覆蓋信息、以及計(jì)算由三角形所覆蓋的像素和片段(fragment)的屬性值。光柵化中所涉及的計(jì)算一般是采用固定分?jǐn)?shù)像素(fract1nal-pixel)精度所正常地實(shí)施的定點(diǎn)(fixed point)計(jì)算。因此,可認(rèn)為定點(diǎn)光柵化計(jì)算的結(jié)果被“捕捉”到網(wǎng)格,其中網(wǎng)格框與分?jǐn)?shù)像素大小的框相對(duì)應(yīng)。
[0004]在許多實(shí)現(xiàn)方案中,圖形處理管線可以以不同分辨率將相同三維對(duì)象光柵化。例如,可首先以低分辨率將三角形光柵化以做出關(guān)于三角形的某些確定,諸如表面的什么通用部分被三角形所覆蓋。隨后可以以較高分辨率將三角形光柵化以生成用于顯示的圖像數(shù)據(jù)。然而,與以較高分辨率所進(jìn)行的光柵化相比較,以較低分辨率所進(jìn)行的光柵化一般提供“捕捉”到較粗略網(wǎng)格的結(jié)果。因此,較低分辨率的光柵化可產(chǎn)生未正確地與較高分辨率的光柵化的覆蓋結(jié)果對(duì)齊的覆蓋結(jié)果。例如,如果基于低分辨率光柵化的結(jié)果將幀緩沖區(qū)存儲(chǔ)器分配用于稀疏渲染,那么由于較低分辨率光柵化的結(jié)果被捕捉到較粗略網(wǎng)格的事實(shí),存儲(chǔ)器可能是過(guò)度分配或分配不足的。更具體地,可能針對(duì)分配對(duì)其是不必要的塊分配存儲(chǔ)器,或可能沒(méi)有針對(duì)分配對(duì)其是必要的塊分配存儲(chǔ)器。
[0005]因此,存在對(duì)于解決以不同分辨率將圖形數(shù)據(jù)光柵化中的問(wèn)題和/或與現(xiàn)有技術(shù)相關(guān)聯(lián)的其他問(wèn)題的需求。
【發(fā)明內(nèi)容】
[0006]提供用于調(diào)整頂點(diǎn)位置的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。接收一個(gè)或多個(gè)視口(viewport)維度并基于一個(gè)或多個(gè)視口維度確定捕捉間距。根據(jù)捕捉間距將頂點(diǎn)位置調(diào)整至Ij網(wǎng)格。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0007]圖1A和IB示出將基元頂點(diǎn)位置捕捉到網(wǎng)格的現(xiàn)有技術(shù);
[0008]圖2示出根據(jù)一個(gè)實(shí)施例的、用于基于捕捉間距調(diào)整頂點(diǎn)位置的方法的流程圖;
[0009]圖3A和3B示出根據(jù)一個(gè)實(shí)施例的、基于依賴分辨率的捕捉間距所調(diào)整的基元頂點(diǎn)位置;
[0010]圖4A示出根據(jù)一個(gè)實(shí)施例的圖形處理管線;
[0011]圖4B示出根據(jù)一個(gè)實(shí)施例的、用于基于捕捉間距調(diào)整頂點(diǎn)位置的方法的另一流程圖;
[0012]圖5示出根據(jù)一個(gè)實(shí)施例的并行處理單元(PI3U);
[0013]圖6示出根據(jù)一個(gè)實(shí)施例的、圖5的流多處理器;以及
[0014]圖7示出在其中可實(shí)現(xiàn)各先前實(shí)施例的各架構(gòu)和/或功能性的示例性系統(tǒng)。
【具體實(shí)施方式】
[0015]常規(guī)地,通過(guò)以兩個(gè)不同分辨率針對(duì)對(duì)象應(yīng)用視口變換、計(jì)算用于兩個(gè)不同分辨率的相應(yīng)的邊等式、以及以兩個(gè)不同分辨率將對(duì)象光柵化來(lái)以兩個(gè)不同分辨率將對(duì)象光柵化。第一視口變換以第一分辨率產(chǎn)生用于對(duì)象的頂點(diǎn)的二維屏幕空間坐標(biāo),第二視口變換以第二分辨率產(chǎn)生用于對(duì)象的頂點(diǎn)的二維屏幕空間坐標(biāo)。
[0016]然而,常規(guī)方法的一個(gè)缺點(diǎn)是,以不同分辨率應(yīng)用視口變換致使對(duì)象的頂點(diǎn)的坐標(biāo)被“捕捉”到不同網(wǎng)格,因?yàn)閷?duì)于不同分辨率,固定分?jǐn)?shù)像素大小是不同的。對(duì)不同分辨率的該“捕捉”意味著,與針對(duì)對(duì)象以第二分辨率對(duì)頂點(diǎn)進(jìn)行重新定位相比較,針對(duì)相同對(duì)象以第一分辨率頂點(diǎn)被不同地重新定位,致使對(duì)象的形狀隨分辨率的改變而改變。
[0017]由于分?jǐn)?shù)像素捕捉的量與像素大小相關(guān),所以捕捉的投影到高分辨率顯示表面的頂點(diǎn)要小于(與表面大小相關(guān))投影到低分辨率顯示表面的頂點(diǎn)。例如,當(dāng)頂點(diǎn)被捕捉到寬度或高度是1/16的像素以及10x10像素的顯示表面,頂點(diǎn)被捕捉到總顯示表面寬度和/或高度的(1/16)/(10)=1/160 (即網(wǎng)格間距在總顯示表面的每個(gè)維度上實(shí)際是1/160)。另一方面,對(duì)于80x80像素的較高分辨率顯示表面,當(dāng)頂點(diǎn)被捕捉到1/16的像素時(shí),頂點(diǎn)被捕捉到總顯示表面寬度和/或高度的(1/16) / (80) =1/1280 (即網(wǎng)格間距實(shí)際是總顯示表面維度的 1/640)
[0018]圖1A示出將基元頂點(diǎn)位置捕捉到網(wǎng)格100的現(xiàn)有技術(shù)。包括三個(gè)頂點(diǎn)的基元105被捕捉到與2x2像素顯示表面相對(duì)應(yīng)的網(wǎng)格100。網(wǎng)格100中的每個(gè)單元格與1/4個(gè)像素相對(duì)應(yīng)并且大小是1/2個(gè)像素的平方。基元105的三個(gè)頂點(diǎn)以像素的1/2被捕捉到網(wǎng)格單元格以產(chǎn)生被捕捉的基元110。基元的形狀由于捕捉的結(jié)果而改變。
[0019]圖1B示出將基元頂點(diǎn)位置捕捉到網(wǎng)格120的現(xiàn)有技術(shù)?;?05被捕捉到與較高分辨率4x4像素顯示表面相對(duì)應(yīng)的網(wǎng)格120。網(wǎng)格120中的每個(gè)單元格與1/4個(gè)像素相對(duì)應(yīng)并且大小是1/2像素的平方?;?05的三個(gè)頂點(diǎn)以相同的1/2像素精度被捕捉以產(chǎn)生被捕捉的基元115?;男螤钣捎诓蹲降慕Y(jié)果而改變,并且被捕捉的基元110的形狀與被捕捉的基元115相比不同,使得基元105的表示的形狀隨著顯示表面分辨率的改變而改變。
[0020]對(duì)于不同顯示表面分辨率相同基元的表示的形狀中的該不一致性,使得產(chǎn)生的較低分辨率的光柵化結(jié)果與較高分辨率的光柵化結(jié)果相比在坐標(biāo)位置方面不一致。因此,如果要基于低分辨率捕捉的基元110的光柵化結(jié)果、針對(duì)高分辨率捕捉的基元115的光柵化分配幀緩沖區(qū)存儲(chǔ)器,那么可能不正確地分配幀緩沖區(qū)存儲(chǔ)器,因?yàn)榈头直媛什蹲降幕?10的光柵化結(jié)果不是必定與高分辨率捕捉的基元115的光柵化結(jié)果對(duì)齊的。
[0021]針對(duì)一些類(lèi)型的算法,期望的是在不同分辨率級(jí)別具有一致的光柵化結(jié)果。當(dāng)光柵化用于合并(binning)或分配(針對(duì)屏幕的哪些部分包含幾何體做出確定)時(shí)尤其如此。例如,用于場(chǎng)景的基元可被渲染到低分辨率表面,其中每個(gè)像素表示用于較高分辨率圖像的像素組。保守的光柵化語(yǔ)義要求“如果像素的任何部分(邊界)與基元相交,那么像素被覆蓋?!痹诠鈻呕陂g,如果由保守的粗略像素所表示的任何精細(xì)像素被基元所覆蓋,那么該粗略像素應(yīng)總是指示為被覆蓋。因?yàn)閷?duì)于不同的顯示表面分辨率,常規(guī)頂點(diǎn)捕捉使用相同捕捉精度,所以常規(guī)頂點(diǎn)捕捉不是必定遵循保守的光柵化語(yǔ)義的。
[0022]圖2示出根據(jù)一個(gè)實(shí)施例的、用于調(diào)整頂點(diǎn)位置的方法200的流程圖。在步驟205,接收視口維度。視口維度可以與顯示表面的像素維度相對(duì)應(yīng)。在一個(gè)實(shí)施例中,像素維度與配置為對(duì)顯示表面進(jìn)行顯示的顯示屏的分辨率相對(duì)應(yīng)。在步驟210,基于視口維度確定捕捉間距。在步驟215,調(diào)整頂點(diǎn)位置以對(duì)齊到與捕捉間距相對(duì)應(yīng)的網(wǎng)格。在一個(gè)實(shí)施例中,捕捉精度基于視口維度而變化以維持對(duì)于不同視口分辨率的一致性。
[0023]現(xiàn)在將關(guān)于各種可選架構(gòu)和特征闡述更示例性的信息,前述框架根據(jù)用戶意愿可以采用或可以不采用所述各種可選架構(gòu)和特征來(lái)實(shí)現(xiàn)。應(yīng)強(qiáng)烈注意的是,下面的信息出于示例性目的而被闡述,并且不應(yīng)視為以任何方式加以限制。任何下面的特征可被可選地包含,排斥或不排斥所描述的其他特征。
[0024]可通過(guò)使捕捉量變化來(lái)針對(duì)不同視口分辨率產(chǎn)生一致的光柵化,使得“世界空間”中的頂點(diǎn)運(yùn)動(dòng)的量統(tǒng)一。無(wú)論顯示表面的分辨率何時(shí)降低一半,將捕捉間隔減少一半,這產(chǎn)生一致的光柵化結(jié)果。視口是顯示表面的二維區(qū)域,場(chǎng)景的觀測(cè)體投影到視口上。視口的維度以像素來(lái)提供,使得隨著視口的高度和/或?qū)挾葴p少,顯示表面的分辨率也減少(假定像素大小恒定)。相反,隨著視口的高度和/或?qū)挾仍黾?,顯示表面的分辨率增加。
[0025]圖3A示出根據(jù)一個(gè)實(shí)施例的、基于視口 300的依賴分辨率的捕捉間距所調(diào)整的基元頂點(diǎn)位置。16x16像素的視口 300使用1/256像素的捕捉間距(即網(wǎng)格單元格的寬度和高度是像素寬度和高度的1/256)以將頂點(diǎn)位置調(diào)整到子像素網(wǎng)格。因此,頂點(diǎn)捕捉精度是像素的1/256。注意,子像素網(wǎng)格單元格具有比圖3A示出的像素網(wǎng)格更精細(xì)的分辨率。圖3B示出根據(jù)一個(gè)實(shí)施例的、基于視口 350的依賴分辨率的捕捉間距所調(diào)整的基元頂點(diǎn)位置。4x4像素的視口 350使用1/1024像素的捕捉間距(即網(wǎng)格單元格的寬度和高度是像素寬度和高度的1/1024)以將頂點(diǎn)位置調(diào)整成子像素網(wǎng)格。注意,子像素網(wǎng)格單元格具有比圖3B示出的像素網(wǎng)格更精細(xì)的分辨率。當(dāng)視口的維度降低1/4時(shí),捕捉間距也降低(1/256x1/4=1/1024),增加了頂點(diǎn)捕捉的精度以產(chǎn)生一致的光柵化結(jié)果。因此,基元的形狀針對(duì)不同的像素分辨率得到維持,如圖3A和3B所示。
[0026]網(wǎng)格350可用來(lái)通過(guò)光柵化來(lái)捕捉基元頂點(diǎn)并實(shí)施合并以確定基元覆蓋顯示表面的哪些區(qū)域(即面元(bin))。當(dāng)實(shí)施保守光柵化時(shí),如果像素的任何邊界與基元相交,那么認(rèn)為像素被基元所覆蓋。當(dāng)實(shí)施常規(guī)光柵化時(shí),當(dāng)基元覆蓋像素中的樣本位置(例如像素中心)時(shí)認(rèn)為像素被覆蓋。在合并完成后,被合并的基元的頂點(diǎn)可被捕捉到網(wǎng)格300并光柵化。
[0027]分辨率不變的邊規(guī)格化
[0028]為了針對(duì)準(zhǔn)度有限(即定點(diǎn)算法)的光柵化器的硬件實(shí)現(xiàn)方案產(chǎn)生具有較精細(xì)捕捉間距的精確解,光柵化器需要具有足夠的精度以表示捕捉間距。例如光柵化器應(yīng)能夠支持小于1/256的像素的捕捉間距。通過(guò)用于光柵化的邊等式的規(guī)格化(normalizat1n),可達(dá)成由較小捕捉間距所需的精度增加,而不用增加光柵化器的定點(diǎn)精度。
[0029]光柵化器通過(guò)對(duì)邊等式求值(evaluate)來(lái)確定覆蓋以確定像素內(nèi)的樣本位置是在基元的邊之內(nèi)還是之外,其中三角形具有由三個(gè)頂點(diǎn)所定義的三條邊。邊等式集可表現(xiàn)為:
[0030]EO=eO_start+delta_x*edge_slope_xl_mns_xO+delta_y>l<edge_slope_yO_mns_yl
[0031]El=el_start+delta_x*edge_slope_xl_mns_x2+delta_y>l<edge_slope_yl_mns_y2
[0032]E2=e2_start+delta_x*edge_slope_x2_mns_x0+delta_y*edge_slope_y2_mns_y0
[0033]起始值(例如e0_start、el_start和e2_start)是邊等式在某一固定錨點(diǎn)位置的位置,delta_x和delta_y是與固定錨點(diǎn)位置的距離,基于頂點(diǎn)對(duì)之間的距離(即邊長(zhǎng))計(jì)算邊斜率(例如 edge_slope_xl_mns_xO、edge_slope_yO_mns_yl 等)。以某一樣本位置來(lái)說(shuō),當(dāng)邊值E0、E1或E2大于或等于零時(shí),樣本在各自的邊之內(nèi)。當(dāng)樣本在基元的所有三個(gè)邊之內(nèi)時(shí),樣本在基元之內(nèi)。
[0034]在一個(gè)實(shí)施例中,將邊斜率規(guī)格化以將用于至少部分地在視口之外的大基元的精度最大化。光柵化器接收頂點(diǎn)差的對(duì)(例如edge_slope_xl_mns_xO和edge_slope_yO_mns_yl),并且指數(shù)中的差用來(lái)產(chǎn)生距離的定點(diǎn)表示以將斜率比的精度最大化。定點(diǎn)表示還提供用于不同視口分辨率的、即用于不同級(jí)別的層次光柵化的一致的光柵化結(jié)果。當(dāng)使用具有較大頂點(diǎn)位置精度的較低分辨率視口進(jìn)行渲染時(shí),每邊的差(例如edge_slope_xl_mns_xO和edge_slope_yO_mns_yl)的尾數(shù)不改變,但邊差的指數(shù)隨視口大小的減小而縮放。例如,隨著視口的分辨率降低2的冪,指數(shù)減量I。由于指數(shù)之間的差是恒定的,所以當(dāng)視口的分辨率增加(基更精細(xì))或減少(即更粗略)時(shí)規(guī)格化的邊等式是恒定的。因此諸如下面的總體邊等式:
[0035]EO=eO_start+delta_x*edge_slope_xl_mns_xO+delta_y>l<edge_slope_yO_mns_yl
[0036]具有當(dāng)視口分辨率變化時(shí)保持恒定的定點(diǎn)斜率值,并且e0_start值隨著視口分辨率的增加而減少(即向右移位)。邊在樣本之內(nèi)還是之外的最終確定基于E值大于還是等于O來(lái)計(jì)算。因此,通過(guò)將e0_start向右移位而被截短的位不影響覆蓋的確定,并且一致的光柵化結(jié)果隨著視口大小的減小而產(chǎn)生,并且捕捉間距也減小(即頂點(diǎn)捕捉精度增加)。
[0037]圖4A示出根據(jù)一個(gè)實(shí)施例的示意性圖形處理管線400??墒褂每删幊烫幚韱卧蚴褂糜糜谝粋€(gè)或多個(gè)功能的專(zhuān)用處理單元來(lái)實(shí)現(xiàn)圖形處理管線400。頂點(diǎn)處理單元406是可編程執(zhí)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序,對(duì)由頂點(diǎn)著色器程序所指定的頂點(diǎn)數(shù)據(jù)進(jìn)行光照和變換。例如,頂點(diǎn)處理單元406可被編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象的坐標(biāo)表示(對(duì)象空間)變換到可替代地基于諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC)空間的坐標(biāo)系。
[0038]曲面細(xì)分和幾何處理單元408是可編程執(zhí)行單元,其配置為執(zhí)行曲面細(xì)分著色器程序。曲面細(xì)分和幾何處理單元408處理由頂點(diǎn)處理單元406所產(chǎn)生的頂點(diǎn),并可配置為生成稱(chēng)為面片(patch)的圖形基元和各種面片屬性。在一些實(shí)施例中,曲面細(xì)分和幾何處理單元408還可實(shí)施拓?fù)渑渲?、將頂點(diǎn)編入索引、包括與面片相關(guān)聯(lián)的頂點(diǎn),并計(jì)算與頂點(diǎn)相對(duì)應(yīng)的紋理坐標(biāo)。曲面細(xì)分和幾何處理單元408還可配置為執(zhí)行幾何著色器程序,從而對(duì)圖形基元進(jìn)行變換。頂點(diǎn)被分組以構(gòu)建用于處理的圖形基元,其中圖形基元包括三角形、線段、點(diǎn)等等。例如,曲面細(xì)分和幾何處理單元408可被編程為將圖形基元細(xì)分成一個(gè)或多個(gè)新圖形基元并計(jì)算用來(lái)將新圖形基元光柵化的參數(shù),諸如平面等式系數(shù)。在一些實(shí)施例中,曲面細(xì)分和幾何處理單元408還可在幾何流中添加或刪除元素。曲面細(xì)分和幾何處理單元408輸出將新圖形基元指定到視口縮放、剔除和裁剪單元412的參數(shù)和頂點(diǎn)。
[0039]視口縮放、剔除和裁剪單元412接收與對(duì)象相關(guān)的幾何數(shù)據(jù)并在幾何數(shù)據(jù)上執(zhí)行視口變換,以產(chǎn)生用于二維屏幕空間中的對(duì)象的頂點(diǎn)的坐標(biāo)。視口縮放、剔除和裁剪單元412內(nèi)的視口處理單元可配置為實(shí)施視口變換、基于視口分辨率變化捕捉間距。針對(duì)視口變換指定一般與二維網(wǎng)格或空間相對(duì)應(yīng)的某個(gè)分辨率(例如以像素的寬度和高度)。二維空間中的對(duì)象的頂點(diǎn)坐標(biāo)具有與該分辨率相對(duì)應(yīng)的值。因此,對(duì)于320x240像素的分辨率,對(duì)象的頂點(diǎn)的水平坐標(biāo)范圍可以從O到320,垂直坐標(biāo)的范圍可以從O到240。對(duì)于其他分辨率,坐標(biāo)可具有不同范圍。
[0040]用于視口變換的計(jì)算典型地包括某一舍入。即產(chǎn)生自視口變換的坐標(biāo)具有所應(yīng)用的某個(gè)量的舍入,意味著用于生成屏幕空間頂點(diǎn)的計(jì)算結(jié)果被舍入到某個(gè)精度。視口變換還將用于對(duì)象頂點(diǎn)的坐標(biāo)“捕捉”到指定的子像素網(wǎng)格。換句話說(shuō),應(yīng)用有視口變換的、對(duì)象頂點(diǎn)的屏幕空間位置與網(wǎng)格對(duì)齊,其中網(wǎng)格的單元格(或“子像素”)具有等于像素的指定分?jǐn)?shù)的大小(例如,網(wǎng)格中的所有單元格可具有等于像素的1/4或1/64的大小)。捕捉間距將精度控制到頂點(diǎn)相對(duì)于視口的分辨率進(jìn)行捕捉的精度。頂點(diǎn)間距是網(wǎng)格中的單元格的維度(高度或?qū)挾?,并被指定為像素的分?jǐn)?shù)?!安蹲健敝率箤?duì)象的坐標(biāo)與子像素網(wǎng)格對(duì)齊。視口變換的結(jié)果包括捕捉和舍入的效果并且一般包括對(duì)齊到子像素網(wǎng)格的、每個(gè)對(duì)象的每個(gè)頂點(diǎn)的屏幕空間坐標(biāo)。
[0041]視口縮放、剔除和裁剪單元412配置為基于視口分辨率確定捕捉間距。當(dāng)視口分辨率改變時(shí),捕捉間距可能增加或減少以調(diào)整捕捉精度。更具體地,隨著視口大小(以像素)的增加,捕捉精度減少(即被指定為捕捉間距的像素的分?jǐn)?shù)增加)。類(lèi)似地,隨著視口大小(以像素)的減少,捕捉精度增加(即被指定為捕捉間距的像素的分?jǐn)?shù)減少)。可由應(yīng)用程序?qū)⒉蹲介g距提供到視口縮放、剔除和裁剪單元412,或者視口縮放、剔除和裁剪單元412可配置為計(jì)算用于每個(gè)視口的捕捉間距。在一個(gè)實(shí)施例中,可限定多于一個(gè)視口,并可針對(duì)視口中的每一個(gè)指定(或計(jì)算)捕捉間距。當(dāng)支持層次光柵化時(shí),可限定與不同級(jí)別的光柵化層次相對(duì)應(yīng)的兩個(gè)或更多個(gè)視口。視口縮放、剔除和裁剪單元412實(shí)施裁剪、剔除和視口縮放并將所處理的圖形基元輸出到基元設(shè)定單元414。
[0042]基元設(shè)定單元414計(jì)算用于每個(gè)基元的每邊的邊等式系數(shù)(例如邊起始值、delta_X、delta_y),其中邊由基元的所調(diào)整(即捕捉)的頂點(diǎn)中的兩個(gè)來(lái)限定。如先前所說(shuō)明的,邊等式典型地處于E (X,y) =Ax+By+C的形式,其中A、B和C是由設(shè)定單元計(jì)算的系數(shù),X和I是要由邊等式求值的像素或樣本的坐標(biāo),并且E(X,y)表示對(duì)用于X-y坐標(biāo)的一個(gè)集合的邊等式求值的結(jié)果。即使當(dāng)X、y頂點(diǎn)位置由于捕捉而改變時(shí),當(dāng)邊斜率被規(guī)格化時(shí)系數(shù)A和B (與delta x和delta y相對(duì)應(yīng))也是跨不同分辨率一致的,如先前所述。C是邊起始值,并且如果分辨率減少2的冪,那么C將向右移位?;旧系?,當(dāng)分辨率折半時(shí),x、y和C折半,A和B保持相同。E(x,y)折半,但E(x,y)的符號(hào)(正/零或負(fù))不受影響。因此,基元的形狀在兩個(gè)不同分辨率之間得到維持。
[0043]光柵化器416從基元設(shè)定單元414接收對(duì)象頂點(diǎn)的屏幕空間坐標(biāo)和邊等式系數(shù)。光柵化器416從設(shè)定單元取得基元和邊等式并對(duì)由基元設(shè)定單元414所提供的邊等式求值以確定用于對(duì)象的樣本或像素的覆蓋。光柵化器416掃描轉(zhuǎn)換新圖形基元并將片段和覆蓋數(shù)據(jù)輸出到片段處理單元422。另外,光柵化器416可配置為實(shí)施z剔除(z-culling)和其他基于z的優(yōu)化。在一個(gè)實(shí)施例中,光柵化器416可實(shí)現(xiàn)為計(jì)算粗略覆蓋信息的粗略光柵化器以及以子像素粒度計(jì)算覆蓋信息的精細(xì)光柵化器。
[0044]片段處理單元422是可編程的執(zhí)行單元,其配置為執(zhí)行片段著色器程序、按片段著色器程序所指定的來(lái)變換從光柵化器416所接收的片段。例如,片段處理單元422可被編程以實(shí)施諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生輸出到光柵操作單元424的經(jīng)著色的片段??梢砸韵袼?、樣本、或其他粒度對(duì)片段著色,這取決于所編程的采樣率。
[0045]光柵操作單元424是處理單元,其實(shí)施諸如模板(Stencil)、Z測(cè)試、混合等的光柵操作,并輸出像素?cái)?shù)據(jù)作為所處理的圖形數(shù)據(jù)用于存儲(chǔ)在圖形存儲(chǔ)器中。所處理的圖形數(shù)據(jù)可存儲(chǔ)在存儲(chǔ)器中,用于顯示或用于進(jìn)一步處理。在本發(fā)明的一些實(shí)施例中,光柵操作單元424配置為壓縮被寫(xiě)入到存儲(chǔ)器的z或顏色數(shù)據(jù)以及解壓縮從存儲(chǔ)器讀取的z或顏色數(shù)據(jù)。
[0046]圖4B示出根據(jù)一個(gè)實(shí)施例的、用于調(diào)整頂點(diǎn)位置的方法430的另一流程圖。在一個(gè)實(shí)施例中,方法430中示出的步驟可由諸如由圖形處理器所執(zhí)行的頂點(diǎn)著色器的應(yīng)用程序來(lái)實(shí)施。在另一實(shí)施例中,方法430中示出的步驟可由諸如視口縮放、剔除和裁剪單元412的、圖形處理器內(nèi)的處理單元來(lái)實(shí)施。在步驟435,應(yīng)用程序或處理單元接收視口維度。在步驟440,應(yīng)用程序或處理單元確定視口維度是否已減少使得捕捉精度應(yīng)改變,并且如果是,那么在步驟445,捕捉間距精度增加。否則,在步驟450,應(yīng)用程序或處理單元確定視口維度是否已增加使得捕捉精度應(yīng)改變,并且如果是,那么在步驟455,捕捉間距精度減少。否貝U,捕捉間距不變。
[0047]在步驟460,根據(jù)依賴視口的捕捉間距,將基元頂點(diǎn)位置調(diào)整到子像素網(wǎng)格以產(chǎn)生被捕捉的頂點(diǎn)位置。在步驟465,將由被捕捉的頂點(diǎn)位置所限定的基元光柵化。
[0048]圖5示出根據(jù)一個(gè)實(shí)施例的并行處理單元(PPU) 500。雖然本文提供并行處理器作為PPU500的示例,但應(yīng)特別注意的是,這類(lèi)處理器僅出于示例性目的而闡述,并且可出于相同目的采用任何處理器以對(duì)其進(jìn)行補(bǔ)充和/或替換。在一個(gè)實(shí)施例中,PPU500配置為在兩個(gè)或更多個(gè)流多處理器(SM) 550中并發(fā)地執(zhí)行多個(gè)線程。線程(即執(zhí)行的線程)是在特定SM550內(nèi)執(zhí)行的指令集的實(shí)例化。下文結(jié)合圖6更詳細(xì)描述的每個(gè)SM550可包括但不限于一個(gè)或多個(gè)處理核心、一個(gè)或多個(gè)加載/存儲(chǔ)單元(LSU)、一級(jí)(LI)高速緩存、共享存儲(chǔ)器等。
[0049]在一個(gè)實(shí)施例中,PPU500包括輸入/輸出(I/O)單元505,其配置為通過(guò)系統(tǒng)總線502傳送和接收來(lái)自中央處理單元(CPU)(未示出)的通信(即命令、數(shù)據(jù)等)。I/O單元505可實(shí)現(xiàn)用于高速外圍部件互連(PCIe)總線上的通信的PCIe接口。在可替代實(shí)施例中,I/O單元505可實(shí)現(xiàn)其他類(lèi)型的公知總線接口。
[0050]PPU500還包括主機(jī)接口單元510,其將命令解碼并將命令傳送到PPU500的網(wǎng)格管理單元515或如命令可指定的其他單元(例如存儲(chǔ)器接口 580)。在網(wǎng)格管理單元515的上下文中,網(wǎng)格是一些處理工作。主機(jī)接口單元510配置為路由PPU500的各邏輯單元之間的通信。
[0051]在一個(gè)實(shí)施例中,由CPU將被編碼為命令流的程序?qū)懭刖彌_區(qū)。緩沖區(qū)是例如存儲(chǔ)器504或系統(tǒng)存儲(chǔ)器的存儲(chǔ)器中的區(qū)域,其可由CPU和PPU500 二者訪問(wèn)(即讀/寫(xiě))。CPU將命令流寫(xiě)入緩沖區(qū)并隨后將指向命令流開(kāi)始的指針傳送到PPU500。主機(jī)接口單元510為網(wǎng)格管理單元(GMU)515提供指向一個(gè)或多個(gè)流的指針。GMU515選擇一個(gè)或多個(gè)流并配置為將所選擇的流組織成掛起網(wǎng)格池。掛起網(wǎng)格池可包括尚未被選擇用于執(zhí)行的新網(wǎng)格和已被部分地執(zhí)行并且已被暫停的網(wǎng)格。
[0052]耦連在GMU515和SM550之間的工作分布單元520管理活動(dòng)網(wǎng)格池,選擇并分派活動(dòng)網(wǎng)格用于由SM550執(zhí)行。當(dāng)掛起的網(wǎng)格有資格執(zhí)行、即不具有未解決的數(shù)據(jù)依賴時(shí),掛起的網(wǎng)格由GMU515轉(zhuǎn)移到活動(dòng)網(wǎng)格池。當(dāng)活動(dòng)網(wǎng)格的執(zhí)行被依賴阻塞時(shí),活動(dòng)網(wǎng)格被轉(zhuǎn)移到掛起池。當(dāng)網(wǎng)格的執(zhí)行完成時(shí),網(wǎng)格被工作分布單元520從活動(dòng)網(wǎng)格池移除。除了接收來(lái)自主機(jī)接口單元510和工作分布單元520的網(wǎng)格以外,GMU510還接收在網(wǎng)格的執(zhí)行期間由SM550所動(dòng)態(tài)生成的網(wǎng)格。這些動(dòng)態(tài)生成的網(wǎng)格加入掛起網(wǎng)格池中的其他掛起的網(wǎng)格。
[0053]在一個(gè)實(shí)施例中,CPU執(zhí)行實(shí)現(xiàn)應(yīng)用編程接口(API)的驅(qū)動(dòng)程序內(nèi)核,該應(yīng)用編程接口使能在CPU上執(zhí)行的一個(gè)或多個(gè)應(yīng)用以調(diào)度用于在PPU500上執(zhí)行的操作。應(yīng)用可包括使驅(qū)動(dòng)程序內(nèi)核生成一個(gè)或多個(gè)網(wǎng)格用于執(zhí)行的指令(即API調(diào)用)。在一個(gè)實(shí)施例中,PPU500實(shí)現(xiàn)SMD (單指令、多數(shù)據(jù))結(jié)構(gòu),其中由線程塊中的不同線程對(duì)不同數(shù)據(jù)集并發(fā)地執(zhí)行網(wǎng)格中的每個(gè)線程塊(即線程束(warp))。驅(qū)動(dòng)程序內(nèi)核定義包含k個(gè)相關(guān)線程的線程塊,使得相同線程塊中的線程可通過(guò)共享存儲(chǔ)器交換數(shù)據(jù)。在一個(gè)實(shí)施例中,線程塊包括32個(gè)相關(guān)線程,并且網(wǎng)格是執(zhí)行相同流的一個(gè)或多個(gè)線程塊的陣列,并且不同的線程塊可通過(guò)全局存儲(chǔ)器交換數(shù)據(jù)。
[0054]在一個(gè)實(shí)施例中,PPU500包括X個(gè)SM550 (X)0例如,PI3USOO可包括15個(gè)不同的SM550。每個(gè)SM550是多線程的并配置為并發(fā)地執(zhí)行來(lái)自特定線程塊的多個(gè)線程(例如32個(gè)線程)。SM550中的每一個(gè)經(jīng)由交叉開(kāi)關(guān)560 (或其他類(lèi)型的互連網(wǎng)絡(luò))連接到二級(jí)(L2)高速緩存565。
[0055]L2高速緩存565連接到一個(gè)或多個(gè)存儲(chǔ)器接口 580。存儲(chǔ)器接口 580實(shí)現(xiàn)16、32、64、128位數(shù)據(jù)總線等等,用于高速數(shù)據(jù)轉(zhuǎn)移。在一個(gè)實(shí)施例中,PPU500包括U個(gè)存儲(chǔ)器接口580 (U),其中每個(gè)存儲(chǔ)器接口 580 (U)連接到相對(duì)應(yīng)的存儲(chǔ)器設(shè)備504 (U)。例如,PPU500可連接到多達(dá)6個(gè)存儲(chǔ)器設(shè)備504,諸如圖形雙數(shù)據(jù)速率、版本5、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(⑶ DR5SDRAM)。
[0056]在一個(gè)實(shí)施例中,PPU500實(shí)現(xiàn)多級(jí)存儲(chǔ)器層次。存儲(chǔ)器504位于耦連到PPU500的SDRAM的片外。來(lái)自存儲(chǔ)器504的數(shù)據(jù)可被獲取并存儲(chǔ)在L2高速緩存565中,該L2高速緩存565位于片上并在各SM550之間共享。在一個(gè)實(shí)施例中,SM550中的每一個(gè)還實(shí)現(xiàn)LI高速緩存。LI高速緩存是專(zhuān)用于特定SM550的私有存儲(chǔ)器。LI高速緩存中的每一個(gè)耦連到共享的L2高速緩存565。來(lái)自L2高速緩存565的數(shù)據(jù)可被獲取并存儲(chǔ)在LI高速緩存中的每一個(gè)中用于SM550的功能單元中的處理。
[0057]在一個(gè)實(shí)施例中,PPU500包括圖形處理單元(GPU)。PPU500配置為接收指定用于處理圖形數(shù)據(jù)的著色器程序的命令。圖形數(shù)據(jù)可被定義為諸如點(diǎn)、線、三角形、四邊形、三角形條帶等基元的集合。典型地,基元包括指定用于(例如在模型空間坐標(biāo)系中的)基元的若干頂點(diǎn)以及與基元的每個(gè)頂點(diǎn)相關(guān)聯(lián)的屬性的數(shù)據(jù)。PPU500可配置為處理圖形基元以生成幀緩沖區(qū)(即用于顯示器的像素中的每一個(gè)的像素?cái)?shù)據(jù))。驅(qū)動(dòng)程序內(nèi)核實(shí)現(xiàn)圖形處理管線,諸如由OpenGL API定義的圖形處理管線。
[0058]應(yīng)用將用于場(chǎng)景的模型數(shù)據(jù)(即頂點(diǎn)和屬性的合集)寫(xiě)到存儲(chǔ)器。模型數(shù)據(jù)定義在顯示器上可見(jiàn)的對(duì)象中的每一個(gè)。應(yīng)用隨后對(duì)驅(qū)動(dòng)程序內(nèi)核做出請(qǐng)求模型數(shù)據(jù)被渲染和顯示的API調(diào)用。驅(qū)動(dòng)程序內(nèi)核讀取模型數(shù)據(jù)并將命令寫(xiě)到緩沖區(qū)以實(shí)施一個(gè)或多個(gè)操作來(lái)處理模型數(shù)據(jù)。命令可將包括頂點(diǎn)著色器、外殼著色器、幾何著色器、像素著色器等中的一個(gè)或多個(gè)的不同著色器程序編碼。
[0059]GMU515可配置一個(gè)或多個(gè)SM550以實(shí)施圖4A中示出的處理單元中的一個(gè)或多個(gè)的功能,處理單元例如頂點(diǎn)處理單元、曲面細(xì)分處理單元、幾何處理單元和片段處理單元。視口縮放、剔除和裁剪處理單元、粗略光柵化器、精細(xì)光柵化器和光柵操作單元的功能也可由GMU515內(nèi)的其他處理引擎來(lái)實(shí)施。
[0060]例如,GMU515可配置一個(gè)或多個(gè)SM550為執(zhí)行處理由模型數(shù)據(jù)所定義的若干頂點(diǎn)的頂點(diǎn)著色器程序。在一個(gè)實(shí)施例中,GMU515可配置不同SM550為并發(fā)地執(zhí)行不同著色器程序。例如,SM550的第一子集可配置為執(zhí)行頂點(diǎn)著色器程序,而SM550的第二子集可配置為執(zhí)行像素著色器程序。SM550的第一子集處理頂點(diǎn)數(shù)據(jù)以產(chǎn)生經(jīng)處理的頂點(diǎn)數(shù)據(jù)并將經(jīng)處理的頂點(diǎn)數(shù)據(jù)寫(xiě)到L2高速緩存565和/或存儲(chǔ)器504。在經(jīng)處理的頂點(diǎn)數(shù)據(jù)被光柵化(即從三維數(shù)據(jù)變換成屏幕空間中的二維數(shù)據(jù))以產(chǎn)生片段數(shù)據(jù)之后,SM550的第二子集執(zhí)行像素著色器以產(chǎn)生經(jīng)處理的片段數(shù)據(jù),其隨后與其他經(jīng)處理的片段數(shù)據(jù)混合并被寫(xiě)到存儲(chǔ)器504中的幀緩沖區(qū)。頂點(diǎn)著色器程序和像素著色器程序可并發(fā)地執(zhí)行,以管線的方式處理來(lái)自同一場(chǎng)景的不同數(shù)據(jù)直到用于場(chǎng)景的所有模型數(shù)據(jù)已被渲染到幀緩沖區(qū)為止。隨后,幀緩沖區(qū)的內(nèi)容被傳送到顯示控制器用于在顯示設(shè)備上顯示。
[0061]PPU500可包括在臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話(例如無(wú)線、手持設(shè)備)、個(gè)人數(shù)字助理(PDA)、數(shù)字相機(jī)、手持電子設(shè)備等等中。在一個(gè)實(shí)施例中,PTO500具體化在單個(gè)半導(dǎo)體襯底上。在另一實(shí)施例中,PPU500連同一個(gè)或多個(gè)其他邏輯單元被包括在片上系統(tǒng)(SoC)中,所述一個(gè)或多個(gè)其他邏輯單元諸如精簡(jiǎn)指令集計(jì)算機(jī)(RISC) CPU、存儲(chǔ)器管理單元(MMU)、數(shù)模轉(zhuǎn)換器(DAC)等。
[0062]在一個(gè)實(shí)施例中,PPU500可被包括在包括諸如⑶DR5SDRAM的一個(gè)或多個(gè)存儲(chǔ)器設(shè)備504的圖形卡上。圖形卡可配置為與包括例如北橋芯片集和南橋芯片集的、臺(tái)式計(jì)算機(jī)的主板上的PCIe槽相接。在又一實(shí)施例中,Pro500可以是被包括在主板的芯片集(即北橋)中的集成圖形處理單元(iGPU)。
[0063]圖6示出根據(jù)一個(gè)實(shí)施例的、圖5的流多處理器550。如圖6所示,SM550包括指令高速緩存605、一個(gè)或多個(gè)調(diào)度器單元610、寄存器堆620、一個(gè)或多個(gè)處理核心650、一個(gè)或多個(gè)雙精度單元(DPU) 651、一個(gè)或多個(gè)特殊功能單元(SFU) 652、一個(gè)或多個(gè)加載/存儲(chǔ)單元(LSU)653、互連網(wǎng)絡(luò)680、共享存儲(chǔ)器/LI高速緩存670以及一個(gè)或多個(gè)紋理單元690。
[0064]如上文所述,工作分布單元520分派活動(dòng)網(wǎng)格用于在PPU500的一個(gè)或多個(gè)SM550上執(zhí)行。調(diào)度器單元610從工作分布單元520接收網(wǎng)格并管理用于每個(gè)活動(dòng)網(wǎng)格的一個(gè)或多個(gè)線程塊的指令調(diào)度。調(diào)度器單元610調(diào)度線程用于在并行線程的組中執(zhí)行,其中每個(gè)組稱(chēng)為線程束。在一個(gè)實(shí)施例中,每個(gè)線程束包括32個(gè)線程。調(diào)度器單元610可管理多個(gè)不同線程塊,在每個(gè)時(shí)鐘周期期間將線程塊分配到線程束用于執(zhí)行并隨后調(diào)度來(lái)自各功能單元(即核心650、DPU651、SFU652以及LSU653)上的多個(gè)不同線程束的指令。
[0065]在一個(gè)實(shí)施例中,每個(gè)調(diào)度器單元610包括一個(gè)或多個(gè)指令分派單元615。每個(gè)分派單元615配置為將指令傳送到功能單元中的一個(gè)或多個(gè)。在圖6示出的實(shí)施例中,調(diào)度器單元610包括兩個(gè)分派單元615,其使能來(lái)自同一線程束的兩個(gè)不同指令在每個(gè)時(shí)鐘周期期間被分派。在可替代實(shí)施例中,每個(gè)調(diào)度器單元610可包括單個(gè)分派單元615或附加的分派單元615。
[0066]每個(gè)SM550包括寄存器堆620,其提供用于SM550的功能單元的寄存器的集合。在一個(gè)實(shí)施例中,寄存器堆620在功能單元中的每一個(gè)之間被劃分,使得每個(gè)功能單元被分配寄存器堆620的專(zhuān)用部分。在另一實(shí)施例中,寄存器堆620在正由SM550執(zhí)行的不同線程束之間被劃分。寄存器堆620為連接到功能單元的數(shù)據(jù)路徑的操作數(shù)提供暫時(shí)存儲(chǔ)。
[0067]每個(gè)SM550包括L個(gè)處理核心650。在一個(gè)實(shí)施例中,SM550包括大數(shù)目的(例如192個(gè)等)不同的處理核心650。每個(gè)核心650是完全管線(fully-pipelined)的單精度處理單元,其包括浮點(diǎn)運(yùn)算邏輯單元和整數(shù)運(yùn)算邏輯單元。在一個(gè)實(shí)施例中,浮點(diǎn)運(yùn)算邏輯單元實(shí)現(xiàn)用于浮點(diǎn)運(yùn)算的IEEE754-2008標(biāo)準(zhǔn)。每個(gè)SM550還包括實(shí)現(xiàn)雙精度浮點(diǎn)運(yùn)算的M個(gè)DPU651、實(shí)施特殊功能(例如拷貝矩形、像素混合操作等)的N個(gè)SFU652以及在共享存儲(chǔ)器/LI高速緩存670和寄存器堆620之間實(shí)現(xiàn)加載和存儲(chǔ)操作的P個(gè)LSU653。在一個(gè)實(shí)施例中,SM550 包括 64 個(gè) DPU65U32 個(gè) SFU652 以及 32 個(gè) LSU653。
[0068]每個(gè)SM550包括互連網(wǎng)絡(luò)680,其將功能單元中的每一個(gè)連接到寄存器堆620和共享存儲(chǔ)器/LI高速緩存670。在一個(gè)實(shí)施例中,互連網(wǎng)絡(luò)680是交叉開(kāi)關(guān),其可配置為將任何功能單元連接到寄存器堆620中的任何寄存器或共享存儲(chǔ)器/LI高速緩存670中的任何存儲(chǔ)器位置。
[0069]在一個(gè)實(shí)施例中,SM550實(shí)現(xiàn)在GPU內(nèi)。在這類(lèi)實(shí)施例中,SM550包括J個(gè)紋理單元690。紋理單元690配置為從存儲(chǔ)器504加載紋理圖(即紋理元素的2D陣列)并對(duì)紋理圖采樣以產(chǎn)生經(jīng)采樣的紋理值用于在著色器程序中使用。紋理單元690使用mip-map (即變化細(xì)節(jié)層級(jí)的紋理圖)實(shí)現(xiàn)諸如抗鋸齒操作的紋理操作。在一個(gè)實(shí)施例中,SM550包括16個(gè)紋理單元690。
[0070]上文所述的PPU500可配置為實(shí)施比常規(guī)CPU快得多的高度并行計(jì)算。并行計(jì)算在圖形處理、數(shù)據(jù)壓縮、計(jì)量生物學(xué)、流處理算法等方面具有優(yōu)勢(shì)。
[0071]圖7示出在其中可實(shí)現(xiàn)各先前實(shí)施例的各架構(gòu)和/或功能性的示例性系統(tǒng)700。如所示,提供了系統(tǒng)700,其包括至少一個(gè)連接到通信總線702的中央處理器701。通信總線702可使用任何合適的協(xié)議來(lái)實(shí)現(xiàn),諸如外圍部件互連(PCI)、PC1-ExpreSS、AGP (加速圖形端口)、超傳輸、或任何其他總線或點(diǎn)對(duì)點(diǎn)通信協(xié)議。系統(tǒng)700還包括主存儲(chǔ)器704??刂七壿?軟件)和數(shù)據(jù)存儲(chǔ)在可采取隨機(jī)存取存儲(chǔ)器(RAM)形式的主存儲(chǔ)器704中。
[0072]系統(tǒng)700還包括輸入設(shè)備712、圖形處理器706以及顯示器708,所述顯示器708即常規(guī)CRT (陰極射線管)、IXD (液晶顯示器)、LED (發(fā)光二極管)、等離子顯示器等等??蓮妮斎朐O(shè)備712例如鍵盤(pán)、鼠標(biāo)、觸摸板、擴(kuò)音器等接收用戶輸入。在一個(gè)實(shí)施例中,圖形處理器706可包括多個(gè)著色器模塊、光柵化模塊等。前述模塊中的每一個(gè)實(shí)際上可布置于單個(gè)半導(dǎo)體平臺(tái)上以形成圖形處理單元(GPU)。
[0073]在本描述中,單個(gè)半導(dǎo)體平臺(tái)可以指單獨(dú)一個(gè)的基于半導(dǎo)體的集成電路或芯片。應(yīng)注意的是,術(shù)語(yǔ)單個(gè)半導(dǎo)體平臺(tái)還可以指具有增強(qiáng)的連通性的多芯片模塊,其仿真片上操作,并通過(guò)利用常規(guī)中央處理單元(CPU)和總線實(shí)現(xiàn)方案做出實(shí)質(zhì)的改進(jìn)。當(dāng)然,各模塊還可根據(jù)用戶的期望分開(kāi)地或以半導(dǎo)體平臺(tái)的各種組合來(lái)布置。
[0074]系統(tǒng)700還可包括二級(jí)存儲(chǔ)710。二級(jí)存儲(chǔ)710包括例如硬盤(pán)驅(qū)動(dòng)器和/或表示軟盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、壓縮光盤(pán)驅(qū)動(dòng)器、數(shù)字通用光盤(pán)(DVD)驅(qū)動(dòng)器、記錄設(shè)備、通用串行總線(USB)閃存的可移動(dòng)存儲(chǔ)驅(qū)動(dòng)器??梢苿?dòng)存儲(chǔ)驅(qū)動(dòng)器以公知的方式從可移動(dòng)存儲(chǔ)單元讀取和/或?qū)懭氲娇梢苿?dòng)存儲(chǔ)單元。
[0075]計(jì)算機(jī)程序或計(jì)算機(jī)控制邏輯算法可存儲(chǔ)在主存儲(chǔ)器704和/或二級(jí)存儲(chǔ)710中。這類(lèi)計(jì)算機(jī)程序當(dāng)被執(zhí)行時(shí)使得系統(tǒng)700能夠?qū)嵤└鞣N功能。編譯器程序可由中央處理器701或圖形處理器706執(zhí)行。主存儲(chǔ)器704、存儲(chǔ)710和/或任何其他存儲(chǔ)是計(jì)算機(jī)可讀介質(zhì)的可能的示例。
[0076]在一個(gè)實(shí)施例中,可在以下內(nèi)容的上下文中實(shí)現(xiàn)各先前示圖的架構(gòu)和/或功能性:中央處理器701、圖形處理器706、能夠具有中央處理器701和圖形處理器706 二者的能力的至少一部分的集成電路(未示出)、芯片集(即設(shè)計(jì)為作為用于實(shí)施相關(guān)功能的單元來(lái)工作和出售的集成電路組等)和/或用于此的任何其他集成電路。
[0077]還有就是,可在以下內(nèi)容的上下文中實(shí)現(xiàn)各先前示圖的架構(gòu)和/或功能性:通用計(jì)算機(jī)系統(tǒng)、電路板系統(tǒng)、專(zhuān)用于娛樂(lè)目的的游戲機(jī)系統(tǒng)、特定于應(yīng)用的系統(tǒng)和/或任何其他所期望的系統(tǒng)。例如,系統(tǒng)700可采取臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、工作站、游戲機(jī)、嵌入式系統(tǒng)和/或任何其他類(lèi)型的邏輯的形式。還有就是,系統(tǒng)700可采取各種其他設(shè)備的形式,包括但不限于個(gè)人數(shù)字助理(PDA)設(shè)備、移動(dòng)電話設(shè)備、電視機(jī)等。
[0078]進(jìn)一步地,雖然未示出,但系統(tǒng)700可耦連到網(wǎng)絡(luò)(例如電信網(wǎng)絡(luò)、局域網(wǎng)(LAN)、無(wú)線網(wǎng)、諸如互聯(lián)網(wǎng)的廣域網(wǎng)(WAN)、對(duì)等網(wǎng)絡(luò)、電纜網(wǎng)絡(luò)等等)用于通信目的。
[0079]雖然上文已描述了各實(shí)施例,但應(yīng)理解的是它們通過(guò)僅示例而非限制的方式加以呈現(xiàn)。因此,優(yōu)選實(shí)施例的寬度和范圍不應(yīng)被上文所述的示例性實(shí)施例中的任何一個(gè)所限制,而應(yīng)僅根據(jù)下面的權(quán)利要求和其等同物來(lái)加以限定。
【權(quán)利要求】
1.一種調(diào)整頂點(diǎn)位置的方法,包括: 接收視口的一個(gè)或多個(gè)維度; 基于所述一個(gè)或多個(gè)維度確定捕捉間距;以及 調(diào)整圖形基元的所述頂點(diǎn)位置以對(duì)齊到與所述捕捉間距相對(duì)應(yīng)的子像素網(wǎng)格。
2.根據(jù)權(quán)利要求1所述的方法,其中所述捕捉間距隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的減少而減少。
3.根據(jù)權(quán)利要求1所述的方法,其中所述捕捉間距隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的增加而增加。
4.根據(jù)權(quán)利要求1所述的方法,其中所述捕捉間距小于像素的1/256。
5.根據(jù)權(quán)利要求1所述的方法,其中所述視口的所述一個(gè)或多個(gè)維度以像素來(lái)指定。
6.根據(jù)權(quán)利要求1所述的方法,其中用以調(diào)整所述頂點(diǎn)位置的精度隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的減少而增加。
7.根據(jù)權(quán)利要求1所述的方法,其中用以調(diào)整所述頂點(diǎn)位置的精度隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的增加而減少。
8.根據(jù)權(quán)利要 求1所述的方法,進(jìn)一步包括將所述圖形基元光柵化。
9.根據(jù)權(quán)利要求8所述的方法,其中所述光柵化包括如果像素的任何邊界與所述圖形基元相交則確定所述圖形基元覆蓋所述像素。
10.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括針對(duì)所述圖形基元的、由所調(diào)整的頂點(diǎn)位置中的兩個(gè)所限定的每個(gè)邊計(jì)算邊等式。
11.根據(jù)權(quán)利要求10所述的方法,其中所述邊等式的計(jì)算包括計(jì)算規(guī)格化的邊斜率值。
12.—種非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)指令,當(dāng)所述指令由處理器所執(zhí)行時(shí),使所述處理器調(diào)整頂點(diǎn)位置,包括: 接收視口的一個(gè)或多個(gè)維度; 基于所述一個(gè)或多個(gè)維度確定捕捉間距;以及 調(diào)整圖形基元的所述頂點(diǎn)位置以對(duì)齊到與所述捕捉間距相對(duì)應(yīng)的子像素網(wǎng)格。
13.根據(jù)權(quán)利要求12所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述捕捉間距隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的減少而減少。
14.根據(jù)權(quán)利要求12所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述捕捉間距隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的增加而增加。
15.根據(jù)權(quán)利要求12所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述捕捉間距小于像素的1/256。
16.—種系統(tǒng),包括: 視口處理單元,其配置為: 接收視口的一個(gè)或多個(gè)維度; 基于所述一個(gè)或多個(gè)維度確定捕捉間距;以及 調(diào)整圖形基元的頂點(diǎn)位置以對(duì)齊到與所述捕捉間距相對(duì)應(yīng)的子像素網(wǎng)格。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),進(jìn)一步包括光柵化器,所述光柵化器配置為如果像素的任何邊界與所述圖形基元相交則確定所述圖形基元覆蓋所述像素。
18.根據(jù)權(quán)利要求16所述的系統(tǒng),進(jìn)一步包括設(shè)定單元,所述設(shè)定單元耦連到所述視口處理單元并配置為針對(duì)所述基元的、由所調(diào)整的頂點(diǎn)位置中的兩個(gè)所限定的每個(gè)邊計(jì)算邊等式。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述設(shè)定單元進(jìn)一步配置為計(jì)算規(guī)格化的邊斜率值。
20.根據(jù)權(quán)利要求16所述的系統(tǒng),其中所述捕捉間距隨所述視口的所述一個(gè)或多個(gè)維度中的至少一個(gè)維度的減少而減少。
【文檔編號(hào)】G06T15/00GK104050704SQ201310746584
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2013年12月30日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】埃里克·布雷恩·盧姆, 亨利·帕爾德·莫爾頓, 凱勒·派瑞·羅敦, 沃爾特·羅伯特·斯坦納, 濟(jì)亞德·賽米·哈庫(kù)拉 申請(qǐng)人:輝達(dá)公司