減小的位計數(shù)多邊形光柵化的制作方法
【專利說明】
【背景技術(shù)】
[0001]通常,三維計算機圖形領(lǐng)域涉及在二維空間(諸如顯示屏)中產(chǎn)生并顯示三維對象。這是通過將有關(guān)三維對象的信息轉(zhuǎn)換為顯示的位圖來完成的。該所謂的渲染處理是多部分處理,通過該處理,計算機將圖像的應(yīng)用模型描述轉(zhuǎn)換為屏幕圖像?;鞠敕ㄊ?三維計算機圖形中的信息的處理以圖形流水線中的一系列階段發(fā)生,每個階段產(chǎn)生對于連續(xù)階段的結(jié)果。
[0002]一個類型的渲染采用的是光柵化。一般而言,光柵化是將以矢量圖形格式(形狀)描述的圖像轉(zhuǎn)換為光柵圖像(像素或點)的處理。作為結(jié)果的輸出可能被提供給顯示器或者打印機,或者例如保存為位圖文件。典型的光柵化算法接收描述為多邊形的三維場景,并將該場景渲染到二維顯示器上。每個多邊形被表現(xiàn)為三角形的集合,并且每個三角形由三維空間中的3個頂點表現(xiàn)。在這個意義上,光柵化器接收三角形頂點的流,將其轉(zhuǎn)換為表面上對應(yīng)的二維點,并根據(jù)需要填充轉(zhuǎn)換的二維三角形。
【附圖說明】
[0003]圖1示出依據(jù)本發(fā)明的實施例的配置為進行多邊形光柵化的圖形處理系統(tǒng)。
[0004]圖2示出依據(jù)本發(fā)明的實施例配置的圖1所示的系統(tǒng)的處理路徑選擇設(shè)備。
[0005]圖3示出依據(jù)本發(fā)明的實施例配置的多邊形光柵化方法。
[0006]圖4示出依據(jù)本發(fā)明的實施例的有關(guān)給定多邊形的邊界框以及要光柵化的有效樣本。
[0007]圖5示出依據(jù)本發(fā)明的實施例能夠分割為能夠被處理的三角形的示例多邊形圖元(primitive)。
[0008]圖6示出依據(jù)本發(fā)明的實施例配置的媒體系統(tǒng)。
[0009]圖7示出依據(jù)本發(fā)明的實施例配置的移動計算系統(tǒng)。
【具體實施方式】
[0010]公開的技術(shù)用于執(zhí)行給定圖形工作負荷的光柵化,其中,與相對高位計數(shù)(bitcount)操作相關(guān)聯(lián)的工作負荷的部分經(jīng)由第一處理路徑處理,并且與相對較低位計數(shù)操作相關(guān)聯(lián)的工作負荷的部分經(jīng)由第二、相對更快的處理路徑被處理。在典型并依據(jù)實施例的工作負荷中,大多數(shù)光柵化處理操作能夠使用更快的處理路徑來執(zhí)行。例如,在一些實施例中,能夠使用更快的處理路徑執(zhí)行的光柵化處理操作超過接收的圖形工作負荷的90%,或者95%,或者在很多情況下為99%。因此,通過識別更快的處理路徑(例如32位操作路徑,例如相對于40位或者64位操作路徑)將是充分的那些情況,進而選擇適當(dāng)?shù)奶幚砺窂?,能夠?qū)崿F(xiàn)處理效率和功耗的顯著改善。在更一般的意義上,與給定圖元相關(guān)聯(lián)的最大位計數(shù)能夠被識別并與閾值比較來確定能夠使用多個可用處理路徑中的哪一個。
[0011]總覽
[0012]如上所述,光柵化器通常接收三角形頂點的流,將其轉(zhuǎn)換為表面上對應(yīng)的二維點,并根據(jù)需要填充轉(zhuǎn)換的二維三角形。更具體而言,典型地由應(yīng)用程序創(chuàng)建給定的對象的應(yīng)用模型,并存儲在應(yīng)用數(shù)據(jù)庫中。使用圖形應(yīng)用編程接口(API),應(yīng)用程序?qū)?yīng)用模型轉(zhuǎn)換為一系列命令,其然后由圖形流水線處理,以產(chǎn)生模型的視圖。圖形API典型地包含一系列圖形輸出子程序或者命令,其含有要觀看的內(nèi)容的詳細幾何描述和描述對象應(yīng)該如何出現(xiàn)(例如尺寸、顏色、紋理、寬度等)的屬性、以及其他要素,而這些都是在能夠從高級語言(諸如C、C++、面向?qū)ο驝、Pascal、LISP等)調(diào)用的圖形封裝中收集的。在光柵化期間,由三維表現(xiàn)中的三維參數(shù)定義的圖元被轉(zhuǎn)換為像素的二維光柵。三維參數(shù)包括x、y、以及z坐標(biāo),并可以可選地包括諸如顏色和紋理的參數(shù)。在轉(zhuǎn)換處理期間,包括X、Y、以及Z值的三維坐標(biāo)被轉(zhuǎn)換為用于定位的X和Y屏幕坐標(biāo)、以及被視為參數(shù)的深度值Ζ。在光柵化期間,對于3個三角形頂點的每個,給出一組參數(shù)值。在光柵化處理期間要解決的一個問題是計算三維參數(shù)(諸如Z參數(shù)、顏色參數(shù)、以及紋理參數(shù)),該三維參數(shù)對應(yīng)于將三維圖元進行最密切近似的坐標(biāo)。光柵化通過在掃描像素網(wǎng)格的水平或者垂直掃描線時計算在每個像素處的參數(shù)值,來進行這些確定。存在與已知的光柵化技術(shù)相關(guān)聯(lián)的多個重要問題。例如,在光柵化期間,檢查樣本是否由三角形(或者其他圖元)覆蓋的查詢由圖形流水線廣泛地調(diào)用。該查詢經(jīng)常用3個半平面測試來計算,并需要能夠?qū)е?2.16 (48位)數(shù)字的乘法。然而,通常的圖形API典型地將要求的光柵化精度限定為使用固定點16.8(24位)數(shù)字。此外,典型的圖形系統(tǒng)使用具有40位操作的固定功能硬件,并且軟件光柵化器使用64位操作。為此,根據(jù)工作負荷,光柵化處理可能是昂貴且低效的處理,有時需要很多乘法計算。
[0013]因此,依據(jù)本發(fā)明的實施例,提供如下光柵化技術(shù):其中,在光柵化之前或者期間評價給定的圖形工作負荷,來評估操作的必要位計數(shù)。如果位計數(shù)超過給定的閾值,那么能夠使用能夠容納更高位操作的更慢的處理路徑來處理工作負荷。另一方面,如果位計數(shù)為給定的閾值或在其以下,那么能夠使用能夠容納更低位操作的相對更快的處理路徑來處理工作負荷。例如,鑒于本公開要理解的是,對于固定功能硬件,使用32位操作而非40位操作可以減小面積和功耗。以類似的方式,對于軟件光柵化器,使用32位操作而非64位操作可以增加圖形流水線的性能并減小功耗。
[0014]該技術(shù)基于多個觀察。例如,鑒于本公開要理解的是,三角形的邊界框外的樣本點能夠在光柵化之前/之中被簡單地拒絕,使得對于三角形的邊界框內(nèi)的一組樣本僅需要完成半平面測試。此外,半平面測試需要的位的數(shù)能夠在光柵化之前界定一一該測試在當(dāng)前的繪制調(diào)用期間對于給定的三角形中的所有樣本點都有效。在一個示例實施例中,例如,如果該界限不超過32位,那么能夠使用通常的32位變量(而在光柵化期間根據(jù)需要將值移位)。如果界限超過32位,那么能夠使用軟件光柵化器中的64位操作和/或硬件光柵化器中的可編程硬件。
[0015]鑒于本公開要理解的是,雖然本文提供了諸如32位操作(例如BitOp—ld<32)的示例位操作,但是該技術(shù)能夠適用于任何數(shù)位的操作(例如24位、16位等),并且請求保護的發(fā)明不意圖被限制為任何特定位操作閾值,除非明確規(guī)定。同樣,雖然本文提供了諸如三角形的示例多邊形圖元,但該技術(shù)能夠適用于通過首先將其分割或者切割為三角形的任何平面多邊形,并且請求保護的發(fā)明不意圖被限制為任何特定圖元形狀,除非明確規(guī)定。
[0016]系統(tǒng)架構(gòu)和方法
[0017]圖1是示出依據(jù)本發(fā)明的實施例的配置為進行多邊形光柵化的圖形處理系統(tǒng)??梢?,系統(tǒng)包含渲染引擎,該渲染引擎包含光柵化器。光柵化器配置有處理路徑選擇設(shè)備。在操作中,給定的應(yīng)用訪問該系統(tǒng)并提供圖形工作負荷,該圖形工作負荷例如可以包含要由系統(tǒng)處理的一個或多個命令和/或圖形數(shù)據(jù),其進而來向顯示器設(shè)備產(chǎn)生輸出。
[0018]要理解的是,沒有示出圖形處理系統(tǒng)的所有典型部件和功能模塊(諸如圖形處理單元(GPU)、位塊傳送器引擎、以及媒體引擎)。此外要注意的是,不同實施例可以具有不同程度的元件部分/模塊整合。例如,處理路徑選擇設(shè)備可以實現(xiàn)為在光柵化器的輸入處的離散部件/模塊,或者集成到光柵化器。替代地,處理路徑選擇設(shè)備可以部分地實現(xiàn)在光柵化器內(nèi),并部分地實現(xiàn)在與光柵化器通信的一個或多個其他部件中。鑒于本公開可以想到大量其他這樣的變化和實施例,請求保護的發(fā)明不意圖被限制為在圖中繪出的特定示例。
[0019]給定的應(yīng)用能夠是產(chǎn)生適于由圖形處理系統(tǒng)執(zhí)行的命令的任何應(yīng)用。工作負荷能夠如常規(guī)完成那樣或者如果期望的話用自定義或者專有協(xié)議,從應(yīng)用傳遞至系統(tǒng)。在其他實施例中,應(yīng)用可以與一個或多個介入模塊和/或部件通信,其中的一個或多個進而與系統(tǒng)通信。這樣的應(yīng)用細節(jié)從一個實施例到另一個實施例會大幅變化,并且不意圖限制請求保護的發(fā)明。
[0020]能夠使用任何數(shù)量的已知和/或自定義技術(shù)和架構(gòu)來實現(xiàn)基于光柵化器的渲染引擎,以便允許進行典型的光柵化處理。然而,除了這樣的常規(guī)/自定義功能和架構(gòu)外,光柵化器被進一步編程和/或配置有處理路徑選擇設(shè)備,其在一個實施例中被配置為評估工作負荷的哪些部分(如果有的話)與相對高位計數(shù)操作相關(guān)聯(lián),以及工作負荷的哪些部分與相對較低位計數(shù)操作相關(guān)聯(lián),然后將這些工作負荷部分提供給光柵化器的適當(dāng)?shù)奶幚砺窂?。位計?shù)閾值例如能夠是用戶可配置的參數(shù)集,或者能夠被設(shè)定為適于給定應(yīng)用的預(yù)定值。參考圖2討論處理路徑選擇設(shè)備。
[0021]圖2示出依據(jù)本發(fā)明的實施例配置的圖1所示的系統(tǒng)的處理路徑選擇設(shè)備??梢?,設(shè)備接收采取一個或多個多邊形圖元形式的工作負荷,并通過設(shè)備模塊處理每一個,該設(shè)備模塊包含邊界框模塊、三角形變換模塊、邊緣方程