曲面細分時間隨曲面細分量線性增長的鑲嵌器的製作方法
2023-07-14 18:30:01
專利名稱:曲面細分時間隨曲面細分量線性增長的鑲嵌器的製作方法
曲面細分時間隨曲面細分量線性增長的鑲嵌器
背景技術:
這一般涉及圖形處理,包括對圖形處理器和用於圖形處理的通用處理器的使用。圖形流水線可以負責為遊戲、計算機動畫、醫學應用等渲染圖形。所生成的圖形圖像的細節水平可能因圖形流水線的限制而低於理想情況。所提供的細節越多,導致圖形處理越慢。因此,在處理速度與圖形細節之間需要折衷。新的圖形處理流水線(諸如微軟的 DirectX 11)通過增加曲面細分(tessellation)細節來增加幾何細節。曲面細分是形成一系列三角形以通過粗糙的多邊形模型開始來渲染對象的圖像。 面片(patch)是在描述表面的控制籠(control cage)的粗糙水平上的基本單元。面片可以表示彎曲或區域。表面可以是可被描述為參數函數的任何表面。控制籠是由藝術工作者用來生成平滑表面的低解析度模型。因此,通過提供更高程度的曲面細分,可被描繪的圖形細節水平更高。然而,處理速度可能會受到不利影響。一般而言,處理時間隨圖像細節水平的增加而二次方地增大。附圖簡述
圖1是根據一個實施例的圖形流水線的示意圖;圖2是根據一個實施例的採用最大內部曲面細分因子縮減函數和1軸內部曲面細分因子軸縮減的內部曲面細分的示圖;圖3是根據一個實施例的採用平均內部曲面細分因子縮減函數和1軸內部曲面細分因子軸縮減的曲面細分圖案的示圖;圖4是根據一個實施例的使用最小內部曲面細分因子縮減函數的1軸曲面細分的曲面細分圖案的示圖;圖5A是根據一個實施例的1軸內部曲面細分因子軸縮減的示圖;圖5B是根據一個實施例的1軸內部曲面細分,其中頂邊緣具有與圖5A不同的邊緣細節水平;圖5C是根據一個實施例的1軸內部曲面細分,其中左邊緣具有與圖5A和5B所示的曲面細分不同的邊緣細節水平;圖6是根據一個實施例的每面片的循環相對於細節水平的假定曲線圖,示出在軟體鑲嵌器上使用1軸、冪2曲面細分的非線性關係和線性關係的效果;圖7是本發明一個實施例的流程圖;以及圖8是根據一個實施例的多核處理器的示意圖。詳細描述根據一些實施例,曲面細分時間隨曲面細分量僅線性增加。通常,曲面細分時間以曲面細分細節量的二次函數增長。結果,在一些實施例中,曲面細分時間可以得到減小,並且在其它實施例中,可以使用次強大的鑲嵌器來執行更細節的曲面細分。在一些實施例中,通過在邊緣細節水平的範圍上預計算一系列經預計算的內部曲面細分,曲面細分時間可以得到節約和/或曲面細分處理能力可以得到增強。這節約了運行時預計算內部曲面細分。
根據一些實施例,曲面細分可以使用三角形或四邊形原始域。邊緣分割可以涉及將邊緣劃分成間隔。所使用的間隔越多,可能的曲面細分細節水平越高。因此,增加邊緣細節水平可以增加所得曲面細分的解析度。內部曲面細分是原始域外周長內原始點的曲面細分。外帶(outer band)由原始域周長構成。參照圖1,圖形流水線可以在作為獨立、專用集成電路的圖形處理器中、軟體中、通過軟體實現的通用處理器、或者通過軟硬體組合來實現。輸入裝配器12從存儲器讀出使用固定函數操作、形成幾何結構並創建流水線工作項目的頂點。自動生成的標識符使標識符專用處理能夠進行,如圖1右側虛線所示。頂點標識符和實例標識符從頂點著色器14向前可用。原始標識符從外殼著色器16向前可用。 控制點標識符僅在外殼著色器16中可用。頂點著色器14執行諸如變換、結皮或照明之類的操作。這輸入一個頂點並輸出一個頂點。在每個輸出控制點調用並且各自由控制點標識符標識的控制點階段,頂點著色器具有對獨立於輸出數量的面片讀取所有輸入控制點的能力。外殼著色器16每次調用輸出控制點。聚集輸出是下一外殼著色器階段以及域著色器20的共享輸入。對每個面片,可以通過所有輸入和輸出控制點的共享讀取輸入調用面片常數階段一次。外殼著色器16輸出邊緣曲面細分因子和其它面片常數數據。如本文所使用的,邊緣曲面細分因子和在每個原始域邊緣有多個間隔的邊緣細節水平可以互換使用。可以分割代碼使得通過在結束處採用結合步驟並行完成,來做完獨立工作。鑲嵌器18可以在硬體或軟體中實現。在某些有益實施例中,鑲嵌器可以是軟體實現的鑲嵌器。通過加速鑲嵌器的操作,如本文所述,進行鑲嵌器操作的核可以被釋放去進行其它任務。鑲嵌器18可以從外殼著色器輸入定義曲面細分程度的數量。這生成諸如三角形或四邊形之類的原始域以及諸如點、線或三角的拓撲。在一個實施例中,鑲嵌器對面片的所有外殼著色器輸出的每個經著色的只讀輸入,輸入一個域位置。這可以輸出一個頂點。幾何著色器22可以輸入一個原始域並輸出多達四個流,每個流獨立地接收零或更多原始域。在幾何著色器輸出處出現的流可以向光柵器(rasterizeiOM提供原始域,同時多達四個流可被連接到緩衝器30。剪輯、透視劃分、查看埠、以及剪裁選擇實現和原始設置可以由光柵器M實現。像素著色器沈輸入一個像素並且在相同位置輸出一個像素或不輸出像素。輸出合併器觀提供固定函數目標渲染、混合、深度、以及模板(stencil)操作。因此,參照圖2,根據原始域是四邊形的實施例,四邊形32具有頂邊32t、右邊32r、 底邊32b以及左邊321。在該示例中,頂邊32t具有一個間隔,右邊32r具有八個間隔,底邊32b具有四個間隔,並且左邊321具有兩個間隔。這些間隔對應於邊緣細節水平和曲面細分因子。在鑲嵌器18中,內部曲面細分可以使用最小、最大或平均的因子縮減函數。圖 2示出最大縮減函數。在該情況下,使用邊緣32r來實現曲面細分,因為它具有最大的間隔數。在本實施例中,只計算一個最大值。在其他實施例中,可以使用三角形作為原始域,並且可以使用其它內部曲面細分縮減函數。圖3示出採用平均曲面細分因子縮減函數進行處理之後的四邊形。在此,平均是基於四個邊的間隔的平均。最後,圖4示出使用最小邊(即頂邊32t)的最小曲面細分縮減因子的結果。接下來參照圖5A-5C,可將四邊形劃分成外帶36a和內部曲面細分38。外帶36a 是沿原始域周長的全部,在此情況下是四邊形,並且內部曲面細分是剩餘的全部。圖5A-5C 示出在1軸內部曲面細分因子縮減示例中,內部曲面細分是相同的,不管外帶中使用的間隔數如何,只要外部曲面細分的最大值保持相同。在該示例中,曲面細分因子縮減函數是最大的,並且曲面細分因子軸縮減是1軸。因此,無論邊緣細節水平或曲面細分因子如何,內部曲面細分保持相同。結果,有可能對各種不同邊緣細節水平預計算內部曲面細分,對其進行存儲,並且在運行時期間需要時簡單地對其進行應用。因此,對邊緣細節水平範圍預計算的內部曲面細分可以在運行時被再使用並且無需重新計算,這加速了計算。參照圖6,通過使用本發明的實施例,曲面細分時間隨曲面細分細節的增加而線性增長,如交叉陰影條所指示。然而,採用其它技術,曲面細分時間隨曲面細分細節的增加而非線性地或二次方地增長,如陰影條所指示。如圖6所示的示例使用採用冪2邊緣分割以及最大曲面細分因子縮減函數的1軸曲面細分縮減。在該示例中,使用基於軟體的曲面細分。因此,隨著細節水平增加,每面片的循環數在非線性示例中增長到較大程度,但在根據本發明一個實施例的示例中線性增長。通過一些基於硬體的方法,預計算的內部曲面細分與非預計算的內部曲面細分之間的差別可能小一些。參照圖7,根據本發明一個實施例,鑲嵌器18通過預計算並存儲用於內部曲面細分的u和ν值而開始,如框40所指示。u和ν值簡單地是沿水平軸u和垂直軸ν的點坐標或點間隔,如諸如圖5A所示。而且,可以預計算用於內部曲面細分的三角測量,如框42所指示,並進行存儲。因此,在一個實施例中,對於所有不同的邊緣細節水平,用於內部曲面細分的各個點的預計算值和所得的三角測量可以被預先確定並存儲。然後在運行時,計算沿原始域外帶的U、ν值,如框44所指示。而且,在運行時期間,計算用於外帶的三角測量,如框46所指示。然後,在運行時期間,鑲嵌器18基於可應用的細節水平,查找用於內部曲面細分的合適預計算值。因此,在諸如DirectX 11的一些實施例中,只存在64個離散邊緣細節水平。其它實施例可以使用其它數量的邊緣細節水平。可以對這些邊緣細節水平的每一個預計算內部曲面細分,並進行存儲以備運行時使用。在運行時期間,當處理圖像時,可以對圖像的不同區域指定不同的邊緣細節水平。 通常,較靠近相機的物體(以及因此,佔據較大屏幕空間的物體)會比離相機較遠的物體被曲面細分得更多。因此,在揮拳的動畫中,拳頭的細節水平可以是最高的,並且遠離拳頭的區域可以使用較低的細節水平。因此,可以創建相對逼真的渲染,因為用戶可能不會注意到繪圖內較不感興趣區域中使用的不同細節水平。結果,可能會遇到各種邊緣細節水平。代替在運行時當其出現時才計算用於內部曲面細分的這些細節水平的每個,在一些實施例中, 可以預先計算全部這些細節水平,並隨後在運行時查找並簡單地使用而無需因確定內部曲面細分點的值以及連接性或三角測量而延遲運行時計算。在一些實施例中,可以使用線程化和矢量化,基於其內部曲面細分因子,對面片進行分類。然後,在多核處理器50的相同物理核上對具有相同細節水平的面片進行曲面細分,如圖8所指示。在面片分類器52中分類和分組之後,可將具有相同內部曲面細分細節水平的、要進行曲面細分的所有面片發送到相同的核M或56,然後該核上的所有線程可以在該核的一級58和二級60高速緩存中只使用一個副本。然後,在後續點處,可以使用面片原始ID將三角形解分類(imsort)。就在三角測量中生成的點數而言,外帶曲面細分是可變的。因此,可以通過在第一緩衝器62中放置預計算的已知內部曲面細分,使用雙緩衝器方法。然後,計算外部曲面細分可變部分並將其存儲在第二緩衝器64中。雖然在圖8中只描繪了兩個核,但是可以使用任何數量的核。根據一個實施例,偽代碼可以實現如下
PreProcess
{ foreach InsideTessFactor in [2..64]
{ UVBufferT [InsideTessFactor] = CalculateUVBuffer (InsideTessFactor, 丁RI) ; UVBufferQ [InsideTessFactor] = CalculateUVBuffer (InsideTessFactor, QUAD);
權利要求
1.一種方法,包括執行曲面細分時間隨曲面細分細節水平增加而線性增加的曲面細分。
2.如權利要求1所述的方法,包括使用軟體鑲嵌器。
3.如權利要求1所述的方法,包括在運行時之前對多個不同邊緣細節水平預計算內部曲面細分值。
4.如權利要求3所述的方法,包括在運行時查找經預計算的內部曲面細分值。
5.如權利要求4所述的方法,包括預計算內部曲面細分的三角測量。
6.如權利要求1所述的方法,包括使用1軸內部曲面細分因子軸縮減。
7.如權利要求1所述的方法,包括使用四邊形作為用於所述曲面細分的原始域。
8.如權利要求1所述的方法,包括將具有相同邊緣細節水平的面片分類並分組到分立的物理核上。
9.如權利要求8所述的方法,包括線程化和矢量化。
10.一種裝置,包括 外殼著色器;以及鑲嵌器,耦合到所述外殼著色器以形成曲面細分時間隨曲面細分細節水平增加而線性增加的曲面細分。
11.如權利要求10所述的裝置,其特徵在於,鑲嵌器是軟體鑲嵌器。
12.如權利要求10所述的裝置,其特徵在於,所述鑲嵌器在運行時之前對多個不同邊緣細節水平預計算內部曲面細分值。
13.如權利要求12所述的裝置,所述鑲嵌器在運行時查找經預計算的內部曲面細分值。
14.如權利要求13所述的裝置,所述鑲嵌器預計算內部曲面細分的三角測量。
15.如權利要求10所述的裝置,所述鑲嵌器使用1軸內部曲面細分因子軸縮減。
16.如權利要求10所述的裝置,所述鑲嵌器使用四邊形作為原始域。
17.如權利要求10所述的裝置,所述鑲嵌器將具有相同邊緣細節水平的面片分類並分組到多核處理器的分立物理核上。
18.如權利要求17所述的裝置,所述鑲嵌器使用線程化和矢量化。
19.一種系統,包括包括至少兩個核的多核處理器,所述核的每一個包括第一和第二緩衝器; 面片分類器,基於其邊緣細節水平對用於曲面細分的面片進行分類並向相同的核提供具有相同細節水平的面片;以及鑲嵌器,通過預計算用於內部曲面細分的間隔和三角測量並且使用查找技術在運行時期間應用經預計算的間隔和三角測量,來曲面細分所述面片。
20.如權利要求19所述的系統,使用線程化和矢量化。
21.如權利要求19所述的系統,所述系統執行其中曲面細分時間隨曲面細分細節水平增加而線性增加的曲面細分。
22.如權利要求10所述的系統,包括軟體鑲嵌器。
全文摘要
根據一些實施例,鑲嵌器可以隨邊緣細節水平的增加而只經歷曲面細分時間的線性增長。通常,鑲嵌器隨細節水平的增加經歷曲面細分時間的非線性或二次方增長。在一些實施例中,可以預計算內部曲面細分的間隔和三角測量。然後在運行時,可以對可應用的邊緣細節水平查找經預計算的值。
文檔編號G06T1/20GK102272798SQ200980153800
公開日2011年12月7日 申請日期2009年12月22日 優先權日2008年12月31日
發明者P·A·羅森, R·P·薩特 申請人:英特爾公司