向圖形處理系統(tǒng)中的區(qū)片分配圖元的制作方法
【專利說明】
【背景技術(shù)】
[0001]圖形處理系統(tǒng)被用來處理圖形數(shù)據(jù)。例如,在計算系統(tǒng)上運(yùn)行的應(yīng)用可能需要對三維(3D)場景的圖像進(jìn)行渲染以便對用戶進(jìn)行顯示。該應(yīng)用能夠向圖形處理系統(tǒng)發(fā)送通常為圖元序列形式的圖形數(shù)據(jù),該圖形處理系統(tǒng)能夠依據(jù)該圖元渲染該場景的圖像。
[0002]圖1示出了可以被用來渲染3D場景的圖像的圖形處理系統(tǒng)100的一些部件。圖形處理系統(tǒng)100包括圖形處理單元(GPU) 102以及兩個存儲器部分104jP 104 2。注意到,這兩個存儲器部分川七和104 2可以是或可以不是相同物理存儲器的部分,并且存儲器104 !和1042可能“脫離芯片”進(jìn)行定位,即并不處于與GPU 102相同的芯片上。存儲器(104 #口1042)與GPU 102之間的通信可以通過系統(tǒng)100中的通信總線來進(jìn)行。
[0003]在圖1所示的示例中,圖形處理系統(tǒng)100是基于區(qū)片的延遲渲染系統(tǒng),這意味著系統(tǒng)100的渲染空間被劃分為多個區(qū)片并且在圖元片段上執(zhí)行紋理和/或著色以便渲染場景之前在該圖元片段上執(zhí)行隱藏表面去除。然而,在其它示例中,圖形處理系統(tǒng)可以是非基于區(qū)片的和/或不是延遲渲染系統(tǒng)。GPU 102包括預(yù)處理模塊106、分片單元108和柵格化模塊110,其中柵格化模塊110包括隱藏表面去除(HSR)模塊112和紋理/著色模塊114。圖形處理系統(tǒng)100被布置為使得應(yīng)用所提供的圖元序列在預(yù)處理模塊106處被接收。預(yù)處理模塊106執(zhí)行諸如包括剪裁和剔除的幾何處理的功能以去除并未落入可見視圖中的圖元。預(yù)處理模塊106還可以將圖元投射到屏幕空間之中。預(yù)處理模塊106還可以將所接收到的圖元放入圖元塊中。
[0004]從預(yù)處理模塊106輸出的圖元(例如,在圖元塊中)被送至分片單元108,分片單元108確定哪些圖元存在于圖形處理系統(tǒng)100的渲染空間的每個區(qū)片內(nèi)。分片單元108通過針對區(qū)片創(chuàng)建顯示列表而向渲染空間的區(qū)片分配圖元,其中針對區(qū)片的顯示列表包括存在于該區(qū)片內(nèi)的圖元的指示(即,圖元ID)。顯示列表和圖元(例如,圖元塊中)從分片單元108輸出并且被存儲在存儲器10^之中。柵格化模塊110從存儲器104 i取得針對區(qū)片的顯示列表以及與該區(qū)片有關(guān)的圖元,并且HSR模塊112執(zhí)行隱藏表面去除以由此去除在場景中隱藏的圖元的片段。其余片段被送至紋理/著色模塊114,紋理/著色模塊114在該片段上執(zhí)行紋理/著色以確定能夠被送至存儲器1042以便在幀緩沖器中進(jìn)行存儲的渲染圖像的像素顏色值。柵格化模塊110對每個區(qū)片中的圖元進(jìn)行處理并且當(dāng)整個圖像已經(jīng)被渲染并且存儲在存儲器1042中時,圖像能夠從圖形處理系統(tǒng)100被輸出并且例如被顯示在顯示器上。
[0005]增加存在于區(qū)片內(nèi)的圖元的數(shù)量通常將增加包括在針對該區(qū)片的顯示列表中的圖元ID的數(shù)量。這意味著顯示列表中所包括的數(shù)據(jù)量被增加,由此使用更大數(shù)量的存儲器101來存儲該顯示列表并且增加了在分片單元108和存儲器104 i之間傳送的數(shù)據(jù)量。此夕卜,該顯示列表由HSR模塊112從存儲器川七進(jìn)行讀取,并且在顯示列表中指示的圖元由HSR模塊112從存儲器川七所取得。GPU 102和存儲器104:之間的通信是相對緩慢的過程(與GPU 102上執(zhí)行的過程相比),因此減少GPU 102向存儲器10^寫入和/或從存儲器^七讀取的數(shù)據(jù)量會是有利的。
【發(fā)明內(nèi)容】
[0006]提供該
【發(fā)明內(nèi)容】
而以簡化形式對下面在【具體實(shí)施方式】中進(jìn)一步進(jìn)行描述的概念的選擇進(jìn)行介紹。該
【發(fā)明內(nèi)容】
并非意在標(biāo)識所請求保護(hù)主題的關(guān)鍵特征或必要特征,也并非意在被用來限制所請求保護(hù)主題的范圍。
[0007]提供了一種向圖形處理系統(tǒng)中的區(qū)片分配圖元的方法,該圖形處理系統(tǒng)具有被細(xì)分為多個區(qū)片的渲染空間,其中每個區(qū)片包括一個或多個多邊形區(qū)域,該方法包括:
[0008]在針對區(qū)片的顯示列表中包括存在于該區(qū)片的多邊形區(qū)域內(nèi)的圖元的指示以由此將該圖元分配給該區(qū)片;
[0009]接收一個或多個圖元的集合;
[0010]針對區(qū)片的一個或多個多邊形區(qū)域中的每一個多邊形區(qū)域:
[0011]⑴確定一個或多個圖元的集合是否完全覆蓋該區(qū)片的多邊形區(qū)域;以及
[0012](ii)如果確定一個或多個圖元的集合完全覆蓋該區(qū)片的多邊形區(qū)域,則將針對該區(qū)片的多邊形區(qū)域的深度閾值與針對存在于該區(qū)片的多邊形區(qū)域內(nèi)的集合的至少一個所接收圖元的深度值進(jìn)行比較,以由此確定該一個或多個圖元的集合是否完全遮擋被包括在針對該區(qū)片的顯示列表中的區(qū)域中的先前圖元;以及
[0013]如果確定該一個或多個圖元的集合完全遮擋該區(qū)片的全部一個或多個區(qū)域中的顯示列表中所包括的先前圖元,則設(shè)置顯示列表起始指針以指示該集合中的圖元之一的指示是針對該區(qū)片的顯示列表中的起始點(diǎn)。
[0014]該方法可以進(jìn)一步包括,針對區(qū)片的一個或多個多邊形分區(qū)中的每一個依據(jù)出現(xiàn)在該分區(qū)內(nèi)并且其指示包括在該區(qū)片的顯示列表中的所接收圖元的深度數(shù)值更新該分區(qū)的深度閾值。
[0015]該一個或多個圖元的集合可以包括單個圖元??商鎿Q地,該一個或多個圖元的集合可以包括形成網(wǎng)格的多個圖元。
[0016]提供了一種分片單元,被配置為向具有被細(xì)分為多個區(qū)片的渲染空間的圖形處理系統(tǒng)中的區(qū)片分配圖元,其中每個區(qū)片包括一個或多個多邊形區(qū)域,該分片單元被配置為接收一個或多個圖元的集合,其中該分片單元包括:
[0017]網(wǎng)格邏輯,被配置為針對區(qū)片的一個或多個多邊形區(qū)域中的每一個多邊形區(qū)域,確定一個或多個圖元的集合是否完全覆蓋該區(qū)片的多邊形區(qū)域;以及
[0018]分片邏輯,被配置為:
[0019]在針對區(qū)片的顯示列表中包括存在于該區(qū)片的多邊形區(qū)域內(nèi)的圖元的指示,以由此將該圖元分配給該區(qū)片;
[0020]針對區(qū)片的一個或多個多邊形區(qū)域中的每一個多邊形區(qū)域,如果確定一個或多個圖元的集合完全覆蓋該區(qū)片的多邊形區(qū)域,則將針對該區(qū)片的多邊形區(qū)域的深度閾值與存在于該區(qū)片的多邊形區(qū)域內(nèi)的集合中的至少一個所接收圖元的深度值進(jìn)行比較,以由此確定該一個或多個圖元的集合是否完全遮擋被包括在該區(qū)片的顯示列表中的區(qū)域中的先前圖元;以及
[0021]如果確定該一個或多個圖元的集合完全遮擋該區(qū)片的全部一個或多個區(qū)域中的顯示列表中所包括的先前圖元,則設(shè)置顯示列表起始指針以指示該集合中的圖元之一的指示是針對該區(qū)片的顯示列表中的起始點(diǎn)。
[0022]該分片單元可以進(jìn)一步包括:深度閾值更新邏輯,被配置為針對區(qū)片的一個或多個多邊形區(qū)域中的每一個多邊形區(qū)域,依據(jù)存在于該區(qū)域內(nèi)并且針對其指示被包括在針對該區(qū)片的顯示列表中的所接收圖元的深度值來更新針對該區(qū)域的深度閾值。。
[0023]還提供了一種計算機(jī)可讀代碼,當(dāng)該代碼在計算機(jī)上運(yùn)行時其適于執(zhí)行本文所描述的示例的任意方法的步驟。此外,可以提供一種用于生成根據(jù)本文所描述的示例的任意示例的分片單元的計算機(jī)可讀代碼。該計算機(jī)可讀代碼可以被編碼在計算機(jī)可讀存儲介質(zhì)上。
[0024]如對本領(lǐng)域技術(shù)人員而言顯而易見的,以上特征可以被適當(dāng)組合并且可以與本文所描述示例的任意方面進(jìn)行組合。
【附圖說明】
[0025]現(xiàn)在將參考附圖對實(shí)施例進(jìn)行詳細(xì)描述,其中:
[0026]圖1是圖形處理系統(tǒng)的示意圖;
[0027]圖2是圖形處理系統(tǒng)的示意圖,其示出了該圖形處理系統(tǒng)內(nèi)的分片單元的組件;
[0028]圖3a示出了存在于區(qū)片的一個區(qū)域內(nèi)的第一圖元的示例;
[0029]圖3b圖示了第一示例中的第一圖元的深度;
[0030]圖3c圖示了第二示例中的第一圖元的深度;
[0031]圖3d圖示了第三示例中的第一圖元的深度;
[0032]圖4a示出了完全覆蓋一個區(qū)域的第二圖元的示例;
[0033]圖4b圖示了一個示例中的第二圖元的深度;
[0034]圖4c示出了深度閾值如何由于第二圖元而被更新的示例;
[0035]圖5示出了完全覆蓋一個區(qū)域的圖元的第一網(wǎng)格的示例;
[0036]圖6是圖示在分片單元處向區(qū)片分配圖元的第一方法的流程圖;
[0037]圖7示出了并未完全覆蓋一個區(qū)域的圖元的第二網(wǎng)格的示例;
[0038]圖8示出了完全覆蓋一個區(qū)域的圖元的第三網(wǎng)格的示例;
[0039]圖9是圖示在分片單元處向區(qū)片分配圖元的第二方法的流程圖;
[0040]圖10是區(qū)片的顯不列表的表不;和
[0041]圖11是計算機(jī)系統(tǒng)的示意圖。
[0042]附圖圖示了各個示例。本領(lǐng)域技術(shù)人員將會意識到,附圖中所圖示的要素劃界(例如,方框、方框群組或者其它形狀)表示劃界的一個示例??梢砸恍┦纠?,一個要素可以被設(shè)計為多個要素或者多個要素可以被設(shè)計為一個要素。在適當(dāng)?shù)那闆r下,貫穿附圖使用共同的附圖標(biāo)記來指示相似的特征。
【具體實(shí)施方式】
[0043]參考圖1所示的圖形處理系統(tǒng)100,如果最終將被HSR模塊112確定為被其它圖元所隱藏的圖元并不使得其圖元ID被包括在針對區(qū)片的有關(guān)顯示列表之中則會是有利的。這將減少顯示列表中的數(shù)據(jù)量并且也將減少將要被HSR模塊112所取得的圖元數(shù)據(jù)的數(shù)量。本文所描述的示例涉及圖形處理系統(tǒng)200 (在圖2中示出并且在以下詳細(xì)描述)中所實(shí)施的分片(tiling)單元208。除分片單元208之外,系統(tǒng)200類似于圖1所示的系統(tǒng)100。為了減少包括于顯示列表中的圖元數(shù)量,分片單元208能夠剔除其確定被圖像中的其它圖元所隱藏的一些圖元。分片單元208并不以HSR模塊以其執(zhí)行深度測試的樣本分辨率來執(zhí)行完整的深度測試,因為對于分片單元來說,包括充足的存儲器以存儲針對整個渲染空間的全分辨率深度緩沖器將會是高成本的。注意到,HSR模塊針對渲染空間的區(qū)片,但是通常不是針對整個渲染空間,存儲全分辨率深度緩沖器。僅針對單個區(qū)片的全分辨率深度緩沖器在基于區(qū)片的系統(tǒng)的HSR模塊中是可能的,因為分片單元208已經(jīng)執(zhí)行了圖元的空間存儲(也被稱作分片或裝倉(binning))。雖然分片單元208并不存儲針對清染空間的全分辨率深度緩沖器,但是其仍然能夠存儲能夠被用來剔除一些圖元的一些深度信息。分片單元208所接收的圖元可能并未已經(jīng)被空間存儲并且因此可能具有渲染空間中的任意位置。因此,分片單元208中所存儲的任何深度信息都必須表示整個渲染空間。例如,渲染空間被劃分為通常為矩形的多個區(qū)片(例如,為了給出一些示例,每個區(qū)片可以包括32X32或16X 16或32X 16個渲染空間樣本),但是其也可以是其它形狀和/或大小,例如三角形或六邊形。每個區(qū)片可以包括要針對其執(zhí)行深度比較的一個或多個區(qū)域,其中如果每個區(qū)片僅包括一個區(qū)域,則該區(qū)域就是區(qū)片,并且其中如果每個區(qū)片包括多于一個的區(qū)域,則區(qū)片內(nèi)的區(qū)域被稱作“子區(qū)片”。針對每個區(qū)域,分片單元208能夠存儲指示閾值深度的深度閾值,其中如果圖元相對于深度閾值并未通過深度測試,則能夠確定該圖元在該區(qū)域內(nèi)被隱藏。如果圖元針對區(qū)片的一個或多個區(qū)域的全部都被隱藏,則該圖元能夠從該區(qū)片中被剔除,即該圖元的ID并不包括在針對該區(qū)片的顯示列表中。
[0044]雖然分片單元208并不存儲之前處理過的圖元的全分辨率深度值,但是如以下更為詳細(xì)描述的,在圖元覆蓋整個區(qū)域的情況下能夠更新針對該區(qū)域的深度閾值。然而,圖元通常隨著圖形數(shù)據(jù)變得更為復(fù)雜而變得更小,從而圖元并非經(jīng)常完全覆蓋一個區(qū)域。這意味著基于完全覆蓋該區(qū)域的圖元而更新針對該區(qū)域的深度閾值的機(jī)會可能有所減少。然而,發(fā)明人已經(jīng)意識到,圖元經(jīng)常是網(wǎng)格的一部分,并且如果圖元網(wǎng)格完全覆蓋一個區(qū)域則針對該區(qū)域的深度閾值就可以被更新。這提供了更多的機(jī)會在分片單元208中更新針對一個區(qū)域的深度閾值。進(jìn)而,這意味著能夠剔除掉更多的圖元,由此減少被顯示列表所使用的存儲器數(shù)量并且減少HSR模塊將要取得的圖元的數(shù)量。也就是說,當(dāng)網(wǎng)格完全粘附一個區(qū)域時,深度閾值可以被設(shè)置為使得后續(xù)圖元能夠在它們被該區(qū)域中的網(wǎng)格的圖元所隱藏的情況下被剔除。