曲面細分單元中的頂點次序的制作方法
【技術領域】
[0001] 本發(fā)明涉及用于視頻處理的技術,且更具體來說,涉及使用經(jīng)曲面細分基元的視 頻處理。
【背景技術】
[0002] 計算裝置越來越需要高級二維(2D)及三維(3D)圖形應用。舉例來說,計算裝置 逐漸提供游戲、角色動畫、圖形菜單系統(tǒng)及需要高級圖形呈現(xiàn)的其它應用。此高級圖形呈現(xiàn) (尤其具有3D圖形)涉及實質(zhì)上大量數(shù)據(jù)處理。高級圖形呈現(xiàn)的質(zhì)量可受處理資源的量、 可用處理資源的能力、可用電力的量及其類似者限制。
[0003] 舉例來說,需要處于高呈現(xiàn)速率(例如,測量為每秒若干幀)的高級圖形呈現(xiàn)的應 用可在可用計算資源上放置顯著應變。可用計算資源上的應變可歸因于被放置在計算資源 上的大負載而導致其它應用中的性能降低、低質(zhì)量圖形呈現(xiàn)或兩者。在例如個人數(shù)字助理 (PDA)等移動計算裝置、無線通信裝置、全球定位裝置及其類似者的情況下,對于圖形呈現(xiàn) 所需要的計算密集型數(shù)據(jù)處理可消耗移動計算裝置的大量可用電力。
[0004] 多媒體處理器可包含耦合到圖形處理單元(GPU)的通用中央處理單元(CPU)。GPU 專用于執(zhí)行圖形呈現(xiàn)操作以在顯示器上顯示計算機化的圖形。GPU內(nèi)置有高度并行結構,其 為一系列復合圖形相關算法提供比常規(guī)通用CPU更有效的處理。在于CPU上執(zhí)行的圖形相 關算法需要圖形處理時,CPU曲面細分圖形,且向GPU提供曲面細分以用于呈現(xiàn)到顯示器。 GTO的高度并行性質(zhì)允許GPU在顯示器上比通過CPU將圖像直接抽取到顯示器更快速地創(chuàng) 建復合三維圖像。GPU可以用于廣泛多種應用中,且于例如視頻游戲應用、復合圖形用戶接 口應用、用于工程或藝術應用的計算機輔助設計程序或使用2D或3D圖形的任何其它類型 的軟件應用等圖形密集型應用中極為常見。
[0005] 現(xiàn)代GPU架構可包含曲面細分級。所述曲面細分級可為GPU內(nèi)的硬件,且可經(jīng)配 置以執(zhí)行特定固定功能。作為一個實例,GPU的曲面細分級可將四域或三角域曲面細分成較 小的三角形。域可被認為是圖像的一部分,且可包含四個側(四域)或三個側(三角域)。 在具有有限大小的頂點重用緩沖器中緩沖頂點,且輸出用于三角形的連接性信息。歸因于 頂點重用緩沖器的有限大小,在連接性信息進入時需要重新計算一些頂點。一些實例方法 每一時鐘周期產(chǎn)生約1個基元。然而,對于所有實施方案并不一定都是這種情況。
【發(fā)明內(nèi)容】
[0006] -般來說,本發(fā)明中描述的技術是針對確定沿著在用于曲面細分的域內(nèi)的環(huán)的邊 緣的第一及第二部分的點的坐標。在實例中,例如位于曲面細分器中的點產(chǎn)生器可通過跟 在針對給定曲面細分水平計算曲面細分三角形的序列或次序之后來處理域。從曲面細分單 元輸出的基元的排序可能影響在后續(xù)級處的頂點重用。因此,技術可選擇允許重用在頂點 重用緩沖器大小界限內(nèi)的頂點的排序(有時被稱作遍歷)。如本文中所描述,可執(zhí)行遍歷以 使得可重用所計算的頂點信息。
[0007] 本文中所描述的各種系統(tǒng)、方法及裝置提供輸出基元的經(jīng)改變次序以有效地利用 頂點重用緩沖器,以便最小化需要計算的頂點的時間坐標的數(shù)目。此情形可減少域著色器 調(diào)用的數(shù)目。域著色器將頂點的坐標轉(zhuǎn)變成有形的某物(例如,3D空間中的點)以供域著 色器的下游使用。減少域著色器調(diào)用的數(shù)目可節(jié)約電力,且增加性能。
[0008] 在一個實例中,本發(fā)明描述用于對域進行曲面細分的曲面細分單元,其中曲面細 分單元將域劃分成包含第一部分的多個部分。曲面細分單元確定在第一部分內(nèi)存在的第一 形狀集合的頂點的坐標,其中第一形狀集合中的每一形狀包含在第一部分的第一邊緣上的 至少一個頂點。在確定第一形狀集合的頂點的坐標之后,確定在第一部分內(nèi)存在的第二形 狀集合的頂點的坐標。第二形狀集合中的每一形狀與第一形狀集合中的至少一個形狀共享 至少一個頂點。另外,第二形狀集合中并無形狀包含在第一部分的第一邊緣上的頂點。
[0009] 在另一實例中,本發(fā)明描述對域進行曲面細分的方法,其包含將域劃分成包含第 一部分的多個部分。所述方法還確定在第一部分內(nèi)存在的第一形狀集合的頂點的坐標,其 中第一形狀集合中的每一形狀包含在第一部分的第一邊緣上的至少一個頂點。在確定第一 形狀集合的頂點的坐標之后,確定在第一部分內(nèi)存在的第二形狀集合的頂點的坐標。第二 形狀集合中的每一形狀與第一形狀集合中的至少一個形狀共享至少一個頂點。另外,第二 形狀集合中并無形狀包含在第一部分的第一邊緣上的頂點。
[0010] 在另一實例中,本發(fā)明描述用于對域進行曲面細分的曲面細分單元,所述曲面細 分單元包含用于將域劃分成包含第一部分的多個部分的裝置。曲面細分單元進一步包含用 于確定在第一部分內(nèi)存在的第一形狀集合的頂點的坐標的裝置,其中第一形狀集合中的每 一形狀包含在第一部分的第一邊緣上的至少一個頂點。在確定第一形狀集合的頂點的坐標 之后,用于確定在第一部分內(nèi)存在的第二形狀集合的頂點的坐標的裝置。第二形狀集合中 的每一形狀與第一形狀集合中的至少一個形狀共享至少一個頂點。第二形狀集合中并無形 狀包含在第一部分的第一邊緣上的頂點。
[0011] 在另一實例中,本發(fā)明描述包括指令的非暫時性計算機可讀媒體,所述指令在于 接收器裝置執(zhí)行中時致使可編程處理器通過執(zhí)行以下步驟對域進行曲面細分。處理器將域 劃分成包含第一部分的多個部分。處理器確定在第一部分內(nèi)存在的第一形狀集合的頂點的 坐標,其中第一形狀集合中的每一形狀包含在第一部分的第一邊緣上的至少一個頂點。在 確定第一形狀集合的頂點的坐標之后,確定在第一部分內(nèi)存在的第二形狀集合的頂點的坐 標。第二形狀集合中的每一形狀與第一形狀集合中的至少一個形狀共享至少一個頂點。第 二形狀集合中并無形狀包含在第一部分的第一邊緣上的頂點。
[0012] 在另一實例中,本發(fā)明描述一種裝置,其包含中央處理單元(CPU)及圖形處理單 元(GPU)。GPU包含用于對域進行曲面細分的曲面細分單元。曲面細分單元經(jīng)配置以將域 劃分成包含第一部分的多個部分。曲面細分單元還經(jīng)配置以確定在第一部分內(nèi)存在的第一 形狀集合的頂點的坐標,其中第一形狀集合中的每一形狀包含在第一部分的第一邊緣上的 至少一個頂點。在確定第一形狀集合的頂點的坐標之后,確定在第一部分內(nèi)存在的第二形 狀集合的頂點的坐標。第二形狀集合中的每一形狀與第一形狀集合中的至少一個形狀共享 至少一個頂點。第二形狀集合中并無形狀包含在第一部分的第一邊緣上的頂點。
[0013] 隨附圖式及以下描述中闡述一或多個實例的細節(jié)。其它特征、目標及優(yōu)勢將從所 述描述及所述圖式以及從權利要求書顯而易見。
【附圖說明】
[0014] 圖1為說明根據(jù)本發(fā)明中所描述的一或多個實例的可實施圖形處理管線的實例 的圖形處理單元(GPU)的實例的框圖。
[0015] 圖2為說明根據(jù)本發(fā)明中所描述的一或多個實例的可實施圖形處理管線的另一 實例的GPU的另一實例的框圖。
[0016] 圖3為說明輸出用于曲面細分的頂點的實例技術的圖。
[0017] 圖4為說明可需要在圖3中說明的技術中重新計算的點的圖。
[0018] 圖5A及5B為說明根據(jù)本發(fā)明中所描述的一或多個實例的劃分成多個基元的域的 圖形圖。
[0019] 圖6為說明根據(jù)本發(fā)明中所描述的一或多個實例的連接到頂點重用緩沖器的曲 面細分單元的實例的框圖。
[0020] 圖7為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于輸出三角域的頂點的實 例技術的圖。
[0021] 圖8為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于輸出四域的頂點的實例 技術的圖。
[0022] 圖9為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于輸出四域的頂點的另一 實例技術的圖。
[0023] 圖10為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于輸出四域的頂點的另一 實例技術的圖。
[0024] 圖11為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于具有一具有奇數(shù)個區(qū)段 的邊緣的三角域的實例技術的圖。
[0025] 圖12為說明根據(jù)本發(fā)明中所描述的一或多個實例的用于具有一具有奇數(shù)個區(qū)段 的邊緣的四域的實例技術的圖。
[0026] 圖13為說明根據(jù)本發(fā)明中所描述的一或多個實例的對域進行曲面細分的實例方 法的流程圖。
[0027] 圖14為說明根據(jù)本發(fā)明中所描述的一或多個實例的實例算法與其它可能遍歷方 案之間的比較的圖。
[0028] 圖15為說明根據(jù)本發(fā)明中所描述的一或多個實例的實例算法與其它可能遍歷方 案之間的另一比較的圖。
[0029] 圖16為說明根據(jù)本發(fā)明中所描述的一或多個實例的實例算法與其它可能遍歷方 案之間的另一比較的圖。
[0030] 圖17為說明根據(jù)本發(fā)明中所描述的一或多個實例的實例算法與其它可能遍歷方 案之間的另一比較的圖。
[0031] 圖18為說明根據(jù)本發(fā)明中所描述的一或多個實例的實例算法與其它可能遍歷方 案之間的另一比較的圖。
【具體實施方式】
[0032] 例如膝上型計算機、平板計算機、智能電話及數(shù)字媒體播放器等現(xiàn)代移動裝置可 包含CPU(中央處理單元)、圖形處理單元(GPU)及系統(tǒng)存儲器。在作為執(zhí)行應用程序的部 分呈現(xiàn)圖形時,CPU將指令及圖形數(shù)據(jù)發(fā)射到GPU。在一些實例中,圖形數(shù)據(jù)可呈頂點的形 式,所述頂點可包括一或多個數(shù)據(jù)結構,所述數(shù)據(jù)結構描述2D或3D空間中的點。
[0033] 于CPU上執(zhí)行的應用程序可根據(jù)應用程序編程接口(API)與GPU通信。舉例來說, 作為兩個實例,應用程序可根據(jù)由Microsoft?開發(fā)的DirectX? API或由科納斯組織開發(fā)的 OpcnGL? API與GPU通信。出于說明的目的,且為了容易理解,通常在DirectX及OpenGL API的情境下描述本發(fā)明中描述的技術。然而,本發(fā)明的方面不應被視為限于DirectX及 OpenGL API,且本發(fā)明中描述的技術也可擴展到其它API。
[0034] DirectX及OpenGL各自定義將由GPU實施的圖形處理管道。這些圖形處理管線可 包含可編程級以及固定功能級的組合。例如Direct3D 11 API及OpenGL 4. X API等API 的一些最新版本包含將由GPU執(zhí)行的曲面細分過程。
[0035] 曲面細分過程是指將對象的表面的部分(其被稱作域)劃分成多個較小部分,且 將較小部分互連在一起。這導致了與曲面細分之前的表面相比較更高度詳細的表面。曲面 細分允許于CPU上執(zhí)行的應用程序定義具有低分辨率的表面(此舉可需要較少的點),且允 許GPU產(chǎn)生較高分辨率表面。
[0036] 舉例來說,曲面細分級可為將域劃分成多個三角形的硬件單元。域著色器接著可 獲取域中的三角形的頂點,且將頂點轉(zhuǎn)換成貼片。此將表面轉(zhuǎn)換成多個基元導致更詳細表 面。GPU可接收粗略表面的信息,且產(chǎn)生高分辨率表面,而非接收高分辨率表面的信息。接 收高分辨率表面而非粗略表面的信息可為帶寬效率低下的,因為定義高分辨率表面所需要 的信息的量可比定義粗略分辨率表面所需要的信息的量大得多。作為實例,GPU的曲面細 分級可接收域。作為一個實例,GPU的曲面細分級可將域劃分成較小三角形。在較小三角 形連接在一起時,所得圖像部分可能看起來比原始圖像部分更詳細。根據(jù)本發(fā)明中所描述 的技術,將域劃分成較小三角形及較小三角形的后續(xù)連接可被認為是曲面細分。
[0037] 借助于曲面細分,可實現(xiàn)計算高效率,因為于CPU上執(zhí)行的應用程序可能不需要 產(chǎn)生較高分辨率表面,且可替代地將較高分辨率表面的產(chǎn)生分擔到GPU。此外,也可實現(xiàn)帶 寬高效率,因為CPU可需要發(fā)射用于表面的較少點的信息,因為與較高分辨率表面相比較, 低分辨率表面包含較少點,且GPU可需要檢索表面的較少點。
[0038] 如上文所描述,GPU將曲面細分過程應用于貼片。貼片可被認為是特定類型的基 元。由一起形成表面的部分的一或多個控制點定義貼片。舉例來說,可將例如球面等對象 劃分成多個表面。在此實例中,表面可為彎曲表面,所述彎曲表面在組合時形成球面。可將 表面中的每一者劃分成一或多個貼片,其中貼片中的每一者是由一或多個控制點定義。
[0039] 通常,例如曲面細分級124等曲面細分單元可將域劃分成包含第一部分的多個部 分。曲面細分單元可確定在第一部分內(nèi)存在的第一形狀集合的頂點的坐標,其中第一形狀 集合中的每一形狀包含在第一部分的第一邊緣上的至少一個頂點。例如位于曲面細分器 (即曲面細分單元)中的點產(chǎn)生器可通過"遍歷"來處理域。"遍歷"指示針對給定曲面細分 水平計算曲面細分三角形的序列或次序。從曲面細分單元輸出的基元的排序可能會影響在 后續(xù)級處的頂點重用。因此,可選擇允許重用在頂點重用緩沖器大小界限內(nèi)的頂點的排序。 如本文中所描述,可執(zhí)行遍歷以使得可重用所計算的頂點信息以最小化域著色器的執(zhí)行。
[0040] 本文中所描述的各種系統(tǒng)、方法及裝置提供輸出基元的經(jīng)改變次序以有效地利用 頂點重用緩沖器以便最小化頂點未命中。此情形可減少域著色器調(diào)用的數(shù)目。域著色器獲 取域中的三角形的頂點,且將頂點轉(zhuǎn)換成貼片的頂點以供域著色器的下游使用。減少域著 色器調(diào)用的數(shù)目可節(jié)約電力,且增加性能。
[0041] 在確定從曲面細分單元輸出的基元的排序時,可考慮以下情形:例如(1)通常可 需要保留當前曲面細分器速度,所述曲面細分器速度可為每一時鐘周期一個基元,(2)算法 不應太復雜,及(3)僅在曲面細分器單元中進行改變可為優(yōu)選的。在一些實例中,可不對重 用邏輯作出改變。重用邏輯為可用以確定是否將所需要的頂點信息存儲于頂點重用緩沖器 中的一系列硬件比較器,例如互斥或門(異或門)。
[0042] 通常,可通過以下方式來實現(xiàn)重用:將域劃分成越來越小的部分或子部分直到可 作為一個集合"遍歷"數(shù)個三角形而不溢出頂點重用緩沖器為止。舉例來說,部分或子部分 可具有數(shù)目足夠小的三角形以允許遍歷整個部分或子部分而不溢出頂點重用緩沖器。將 理解盡管三角形具有三個頂點,但由于在三角形之間的頂點共享,需要存儲的頂點的總數(shù) 通常將不為部分或子部分中的三角形的數(shù)目的三倍。另外,還將理解,例如在不再需要所 述頂點的頂點信息時,可改寫在部分或子部分中的一些頂點而不需要后續(xù)域著色器調(diào)用。 在一些實例中,技術假定具有三十二組存儲位置的頂點重用緩沖器,然而,本發(fā)明中所描述 的技術不限于具有三十二組存儲位置的頂點重用緩沖器。或者,部分或子部分可大于例如 三十二組頂點信息,但可布置遍歷的路徑以使得可出現(xiàn)一或多個重用。舉例來說,選擇路徑 遍歷以使得所有需要的重用在改寫之前出現(xiàn)可為可能的。在其他狀況下,選擇允許在重用 存儲于頂點重用緩沖器中的頂點數(shù)據(jù)的至少一部分時出現(xiàn)一些改寫的路徑可為有利。
[0043] 控制點可由坐標(例如,二維貼片的X及y坐標或三維貼片的X、y及z坐標)定 義,且控制點可被認為是貼片的頂點。貼片中可存在任何數(shù)目個控制點。舉例來說,在一些 實例中,貼片中的控制點的數(shù)目可在一個控制點直到三十二個控制點之間。貼片中的控制 點的數(shù)目可為固定的或用戶定義的。
[0044] 不同于其它基元類型,貼片內(nèi)的控制點可以任何方式彼此連接。換句話說,不存在 其中連接貼片的控制點的預定義方式。舉例來說,標準三角基元包含三個頂點,且以特定方 式定義基元,其中三個頂點彼此連接以形成三角形。另一方面,可不需要以任何特定方式連 接控制點以形成形狀。而是,作為一個實例,貼片中的一些控制點可彼此連接以形成三角 形,相同貼片中的其它控制點可彼此連接以形成矩形,且相同貼片中的又其它控制點可彼 此連接以形成八角形。作為另一實例,也有可能控制點與另一控制點連接以形成相同類型 的形狀(例如,經(jīng)連接以僅形成多個三角形)。
[0045] 定義表面的貼片的控制點可定義低分辨率表面。在曲面細分過程的情況下,添加 額外細節(jié)以創(chuàng)建較高分辨率表面。舉例來說,返回參看球面的實例。要是使用控制點來形 成球面,球面將呈現(xiàn)為鋸齒狀的,具有階梯狀的點,而非平滑彎曲表面。在曲面細分之后,添 加額外點以使得在連接這些點時,球面看起來好像其為平滑球面。
[0046] 根據(jù)DirectX API及OpenGL 4. X API兩者,曲面細分過程包含兩個著色器及固定 功能單元。著色器為于GPU的可編程著色器核心上執(zhí)行且提供實質(zhì)上功能靈活性的軟件 應用程序。舉例來說,著色器可用以計算具有高度靈活性的圖形硬件上的呈現(xiàn)效果。固定 功能單元為執(zhí)行固定功能且可能不提供功能靈活性的硬接線邏輯單元。然而,有可能使用 可編程著色器譯碼器實施固定功能單元的功能以提供額外功能靈活性。僅僅出于說明的目 的,用提供受限制功能靈活性的固定功能單元來描述本發(fā)明中針對固定功能單元所描述的 功能。
[0047] 在DirectX API中,經(jīng)配置以實施曲面細分過程的圖形處理管線包含耦合到曲面 細分級的外殼著色器級,所述曲面細分級耦合到域著色器級。DirectX API中的外殼著色器 級及域著色器級可形成曲面細分過程的兩個著色器,且曲面細分級可形成曲面細分過程的 固定功能單元。圖形處理管線中的其它級類似于不實施曲面細分過程的DirectX API中的 那些級。
[0048] 在OpenGL 4. X API中,經(jīng)配置以實施曲面細分過程的圖形處理