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