新四季網

圖形處理中的混合渲染的製作方法

2023-05-29 19:53:21 3


本發明涉及用於圖形處理的技術,且更具體來說,涉及用於圖形處理中的混合渲染模式的技術。



背景技術:

用於顯示的視覺內容(例如用於圖形用戶接口和視頻遊戲的內容)可由圖形處理單元(gpu)產生。gpu可將二維或三維(3d)對象轉換成可顯示的二維(2d)像素表示。將關於3d對象的信息轉換成可顯示的位圖被稱為像素渲染,且要求相當大的存儲器和處理能力。在過去,3d圖形能力僅在強大工作站上可用。然而,現在3d圖形加速器常見於個人計算機(pc)中以及嵌入式裝置中,例如智慧型電話、平板計算機、可攜式媒體播放器、可攜式視頻遊戲控制臺等。通常,嵌入式裝置相比於常規pc具有較少計算能力和存儲器容量。由此,當在嵌入式系統上實施此類技術時,3d圖形渲染技術中增加的複雜性帶來困難。



技術實現要素:

一般來說,本發明描述用於圖形處理中的混合渲染模式別的技術。明確地說,在一些實例中,本發明描述混合渲染模式,其使用分倉通過來確定幀的哪些圖元可觸摸或以其它方式促成場景的倉。接著僅使用通過分倉通過確定為觸摸所述倉的三角形來對所述倉執行渲染。在所述倉的渲染期間,深度緩衝器中的值存儲在晶片上快速圖形存儲器(gmem)中。一旦倉已渲染,就將深度緩衝器中的值解析到系統存儲器。然而,不是也將值存儲在gmem中的色彩緩衝器(即,存儲像素的色彩值的緩衝器)中,且接著在倉的渲染完成時將色彩緩衝器解析到系統存儲器,而是本發明的渲染技術可將像素值直接寫入到存儲在系統存儲器中的色彩緩衝器,而不使用gmem。在倉的渲染期間,在其中色彩緩衝器不頻繁更新或僅更新一次的情境中,將色彩緩衝器值直接寫入到系統存儲器可為有益的。

在本發明的一個實例中,一種圖形處理方法包括:用圖形處理單元(gpu),使用一或多個圖形運算來渲染幀的一或多個部分;用所述gpu,根據所述一或多個圖形運算,將色彩數據直接寫入到系統存儲器中的色彩緩衝器;用所述gpu,根據所述一或多個圖形運算,將深度數據寫入到圖形存儲器中的深度緩衝器;以及在所述幀的所述一或多個部分的渲染完成時,用所述gpu,將所述圖形存儲器中的所述深度緩衝器解析到系統存儲器。

在本發明的另一實例中,一種經配置以用於圖形處理的設備包括:圖形存儲器,其經配置以存儲圖形數據;gpu,其與系統存儲器和圖形存儲器通信,所述gpu其經配置以:使用一或多個圖形運算來渲染幀的一或多個部分;根據所述一或多個圖形運算,將色彩數據直接寫入到系統存儲器中的色彩緩衝器;根據所述一或多個圖形運算,將深度數據寫入到圖形存儲器中的深度緩衝器;以及在所述幀的所述一或多個部分的渲染完成時,將所述圖形存儲器中的深度緩衝器解析到所述系統存儲器。

在本發明的另一實例中,一種經配置以用於圖形處理的設備包括:用於使用一或多個圖形運算來渲染幀的一或多個部分的裝置;用於根據所述一或多個圖形運算,將色彩數據直接寫入到系統存儲器中的色彩緩衝器的裝置;用於根據所述一或多個圖形運算,將深度數據寫入到圖形存儲器中的深度緩衝器的裝置;以及用於在所述幀的所述一或多個部分的渲染完成時,將所述圖形存儲器中的所述深度緩衝器解析到系統存儲器的裝置。

在另一實例中,本發明描述一種存儲指令的非暫時性計算機可讀存儲媒體,所述指令在被執行時,致使經配置以用於圖形處理的裝置的一或多個處理器:使用一或多個圖形運算來渲染幀的一或多個部分;根據所述一或多個圖形運算,將色彩數據直接寫入到系統存儲器中的色彩緩衝器;根據所述一或多個圖形運算,將深度數據寫入到圖形存儲器中的深度緩衝器;以及在所述幀的所述一或多個部分的渲染完成時,將所述圖形存儲器中的所述深度緩衝器解析到所述系統存儲器。

還在存儲用於致使處理器執行所述技術的指令的設備和計算機可讀存儲媒體的方面描述本發明的技術。附圖和以下描述中陳述一或多個實例的細節。其它特徵、目標和優點將從描述和圖式以及所附權利要求書顯而易見。

附圖說明

圖1是示出經配置以使用本發明的技術的實例計算裝置的框圖。

圖2是示出經配置以使用本發明的技術的實例處理單元的框圖。

圖3是說明幀的倉的概念圖。

圖4是更詳細地說明幀的倉的概念圖。

圖5是說明根據本發明的技術的用於使用「軟體」分倉的混合渲染模式的命令緩衝器的概念圖。

圖6是說明根據本發明的技術的用於使用「硬體」分倉的混合渲染模式的命令緩衝器的概念圖。

圖7是說明根據本發明的一個實例的方法的流程圖。

具體實施方式

本發明涉及用於圖形處理的技術,且更具體來說,涉及用於混合渲染模式的技術。當前圖形渲染系統通常使用分倉渲染模式(有時稱為基於平鋪塊的渲染)或直接渲染模式來渲染場景。在許多實例中,圖形處理單元(gpu)可經配置以選擇性地執行分倉渲染和基於平鋪塊的渲染兩者。在分倉渲染中,通過使幀分裂成較小部分(例如,矩形倉或平鋪塊)並單獨地渲染這些倉中的每一者來渲染2d或3d場景的一個幀。分倉渲染對於其中極少專用快速圖形存儲器(gmem)可用的應用中有用,例如對於移動應用。所述倉的大小可經配置以表示gmem中可用的存儲量。舉例來說,如果gmem能夠存儲512kb,那麼倉的大小可配置為使得包含於所述倉中的像素數據小於或等於512kb。

可存儲在gmem中的像素數據可包含像素的深度值和像素的色彩值。所述倉中的像素的深度值可存儲在gmem中的深度緩衝器中。同樣地,所述倉中的像素的色彩值可存儲在gmem中的色彩緩衝器中。當倉的渲染完成時,可將深度緩衝器和色彩緩衝器兩者解析到系統存儲器(例如解析到動態隨機存取存儲器(dram))。也就是說,將數據從緩衝器解析到系統存儲器包含將存儲在緩衝器(例如深度緩衝器和色彩緩衝器兩者)中的值從gmem寫入到系統存儲器。以此方式,下一倉的深度值和色彩值可存儲在gmem中的深度緩衝器和色彩緩衝器中。

另一方面,直接渲染模式下的圖形處理並不將幀分裂成較小部分(例如倉或平鋪塊)。實情為,立即渲染整個幀。在一些圖形處理系統(例如,移動裝置上的圖形處理系統)中,並不存在足夠的gmem來保存像素數據的整個幀。實情為,對於直接渲染模式,使用較慢的系統存儲器來渲染所述幀。由此,將深度值和色彩值分別直接寫入到系統存儲器中的深度緩衝器和色彩緩衝器。

由於直接渲染技術利用系統存儲器來存儲色彩緩衝器和深度緩衝器,因此直接渲染技術通常經歷來自系統存儲器的較多存儲器業務。gpu與系統存儲器之間的存儲器業務通常較慢,且因此限制gpu性能。另外,gpu與系統存儲器之間的存儲器業務消耗比gpu與晶片上圖形存儲器之間的存儲器業務多的電力。

通常,與直接渲染相比,分倉渲染技術經歷gpu與系統存儲器之間的較少總存儲器業務,因為分倉渲染技術使用gmem來存儲色彩緩衝器和深度緩衝器。然而,越來越多的應用程式和gpu架構使用深度測試,包含高級深度測試,來降低色彩讀取/寫入複雜性。也就是說,基於深度緩衝器中的值來執行圖形運算,例如著色,致使此類著色僅對離用戶「最近」的像素執行。由此,需要像素值到色彩緩衝器的較少寫入。如果倉中的大多數像素幾次(或僅一次)寫入到色彩緩衝器,那麼將像素寫入gmem中的色彩緩衝器中且接著將色彩緩衝器從系統存儲器解析出來可導致比僅將像素寫入到直接在系統存儲器中的色彩緩衝器中低的存儲器性能。也就是說,當多次將色彩和/或深度值寫入到色彩緩衝器和深度緩衝器時,gmem的使用提供最多優點。每倉僅幾次將色彩值寫入到gmem,且接著將此類值解析到系統可導致比僅直接將所述值寫入到系統存儲器低的存儲器和電力性能。

鑑於這些缺點,本發明提出一種混合渲染系統,其中將像素值寫入到直接在系統存儲器(例如dram)中的色彩緩衝器中,且將深度值寫入到gmem中的深度緩衝器中。本發明的混合渲染技術可結合或不結合分倉技術一起使用。因為深度複雜性(即,深度讀取/寫入的數目)通常高於色彩複雜性(即,像素值讀取/寫入的數目),所以本發明的技術可節約從gmem到dram的不必要的色彩緩衝器解析。也就是說,對於其中像素值可能每倉將寫入到gmem幾次或僅一次的情境,本發明的混合渲染技術提供較大的存儲器使用效率。

圖1是說明可用於實施本發明的用於執行混合渲染模式的技術的實例計算裝置2的框圖。計算裝置2可包括(例如)個人計算機、桌上型計算機、膝上型計算機、平板計算機、計算機工作站、視頻遊戲平臺或控制臺、行動電話(例如,蜂窩式或衛星電話、陸線電話、網際網路電話)、手持式裝置(例如,可攜式視頻遊戲裝置或個人數字助理(pda)、個人音樂播放器、視頻播放器)、顯示裝置、電視機、電視機頂盒、伺服器、中間網絡裝置、主機計算機、任何移動裝置或處理和/或顯示圖形數據的任何其它類型的裝置。

如圖1的實例中所說明,計算裝置2可包含用戶輸入接口4、中央處理單元(cpu)6、存儲器控制器8、系統存儲器10、圖形處理單元(gpu)12、圖形存儲器(gmem)14、顯示接口16、顯示器18以及總線20和22。注意,在一些實例中,gmem14可與gpu12「在晶片上」。在一些情況下,例如在晶片上系統(soc)設計中,圖1中所示的所有硬體元件可在晶片上。用戶輸入接口4、cpu6、存儲器控制器8、gpu12和顯示接口16可使用總線20彼此通信。存儲器控制器8和系統存儲器10也可使用總線22彼此通信。總線20、22可為多種總線結構中的任一者,例如第三代總線(例如,超傳輸(hypertransport)總線或無限帶寬(infiniband)總線)、第二代總線(例如,高級圖形埠總線、周邊組件互連(pci)高速總線,或高級exentisible接口(axi)總線)或另一類型的總線或裝置互連件。應注意,圖1中所示的不同組件之間的總線和通信接口的特定配置僅是示範性的,且具有相同或不同組件的計算裝置和/或其它圖形處理系統的其它配置可用於實施本發明的技術。

cpu6可包括控制計算裝置2的操作的通用或專用處理器。用戶可將輸入提供到計算裝置2以致使cpu6執行一或多個軟體應用程式。在cpu6上執行的軟體應用程式可包含(例如)作業系統、字處理器應用程式、電子郵件應用程式、電子表格應用程式、媒體播放器應用程式、視頻遊戲應用程式、圖形用戶接口應用程式或另一程序。另外,cpu6可執行用於控制gpu12的操作的gpu驅動程序7。用戶可經由一或多個輸入裝置(未圖示)(例如,鍵盤、滑鼠、麥克風、觸摸墊或經由用戶輸入接口4耦合到計算裝置2的另一輸入裝置)將輸入提供到計算裝置2。

在cpu6上執行的軟體應用程式可包含指令cpu6以致使向顯示器18渲染圖形數據的一或多個圖形渲染指令。在一些實例中,所述軟體指令可符合圖形應用編程接口(api),例如開放圖形庫api、開放圖形庫嵌入系統(opengles)api、direct3dapi、x3dapi、rendermanapi、webglapi或任何其它公共或專有標準圖形api。為了處理圖形渲染指令,cpu6可將一或多個圖形渲染命令發出到gpu12(例如,通過gpu驅動程序7),以致使gpu12執行圖形數據的渲染中的一些或全部。在一些實例中,待渲染的圖形數據可包含例如點、線、三角形、四邊形、三角形帶等圖形基元的列表。

存儲器控制器8促進數據進出系統存儲器10的傳送。舉例來說,存儲器控制器8可接收存儲器讀取和寫入命令,且服務相對於存儲器系統10的此類命令,以便為計算裝置2中的組件提供存儲器服務。存儲器控制器8經由存儲器總線22以通信方式耦合到系統存儲器10。雖然在圖1中將存儲器控制器8說明為與cpu6和系統存儲器10兩者分開的處理模塊,但在其它實例中,存儲器控制器8的一些或全部功能性可實施在cpu6和系統存儲器10中的一或兩者上。

系統存儲器10可存儲可由cpu6存取以用於執行的程序模塊和/或指令和/或由在cpu6上執行的程序使用的數據。舉例來說,系統存儲器10可存儲窗口管理器應用程式,其由cpu6使用以在顯示器18上呈現圖形用戶接口(gui)。另外,系統存儲器10可存儲用戶應用程式以及與所述應用程式相關聯的應用程式表面數據。系統存儲器10可另外存儲由計算裝置2的其它組件使用和/或產生的信息。舉例來說,系統存儲器10可充當gpu12的裝置存儲器,且可存儲將由gpu12對其進行操作的數據,以及因gpu12執行的操作而產生的數據。舉例來說,系統存儲器10可存儲紋理緩衝器、深度緩衝器、模板緩衝器、頂點緩衝器、幀緩衝器等的任何組合。系統存儲器10可包含一或多個易失性或非易失性存儲器或存儲裝置,例如隨機存取存儲器(ram)、靜態ram(sram)、動態ram(dram)、只讀存儲器(rom)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、快閃記憶體、磁性數據媒體或光學存儲媒體。

gpu12可經配置以執行圖形操作來向顯示器18渲染一或多個圖形基元。因此,當在cpu6上執行的軟體應用程式中的一者需要圖形處理時,cpu6可向gpu12提供圖形命令和圖形數據以用於向顯示器18渲染。圖形數據可包含(例如)繪製命令、狀態信息、圖元信息、紋理信息等。在一些情況下,gpu12可內置有高度並行的結構,與cpu6相比,所述結構提供對複雜圖形相關操作的更高效的處理。舉例來說,gpu12可包含經配置而以並行方式對多個頂點或像素操作的多個處理元件。在一些情況下,gpu12的高度並行本質允許gpu12比使用cpu6直接將場景繪製到顯示器18更快速地將圖形圖像(例如,gui和二維(2d)和/或三維(3d)圖形場景)繪製到顯示器18上。

在一些情況下,可將gpu12集成到計算裝置2的主板中。在其它情況下,gpu12可存在於圖形卡上,所述圖形卡安裝在計算裝置2的主板中的埠中或可以其它方式併入經配置以與計算裝置2交互操作的外圍裝置內。gpu12可包含一或多個處理器,例如一或多個微處理器、專用集成電路(asic)、現場可編程門陣列(fpga)、數位訊號處理器(dsp)或其它等效的集成或離散邏輯電路。

gpu12可直接耦合到gmem14。因此,gpu12可在不必使用總線20的情況下從gmem14讀取數據且將數據寫入到gmem14。換句話說,gpu12可使用本地存儲裝置而非晶片外存儲器在本地處理數據。這通過消除gpu12經由總線20讀取和寫入數據的需要來允許gpu12以更高效的方式操作,其中經由總線操作可經歷繁重的總線業務。然而,在一些情況下,gpu12可不包含單獨的存儲器,而是改為經由總線20利用存儲器10。gmem14可包含一或多個易失性或非易失性存儲器或存儲裝置,例如隨機存取存儲器(ram)、靜態ram(sram)、動態ram(dram)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、快閃記憶體、磁性數據媒體或光學存儲媒體。

cpu6和/或gpu12可將經渲染圖像數據存儲在幀緩衝器15中。幀緩衝器15可為獨立存儲器或可分配在系統存儲器10內。顯示接口16可從幀緩衝器15檢索數據,並配置顯示器18以顯示由經渲染圖像數據表示的圖像。在一些實例中,顯示接口16可包含經配置以將從幀緩衝器檢索的數字值轉換為可由顯示器18消耗的模擬信號的數/模轉換器(dac)。在其它實例中,顯示接口16可將數字值直接傳遞到顯示器18以供處理。顯示器18可包含監視器、電視機、投影裝置、液晶顯示器(lcd)、等離子顯示面板、發光二極體(led)陣列(例如有機led(oled)顯示器)、陰極射線管(crt)顯示器、電子紙、表面傳導電子發射顯示器(sed)、雷射電視顯示器、納米晶體顯示器或另一類型的顯示單元。顯示器18可集成在計算裝置2內。舉例來說,顯示器18可為行動電話的屏幕。或者,顯示器18可為經由有線或無線通信鏈路而耦合到計算裝置2的獨立裝置。舉例來說,顯示器18可為經由電纜或無線鏈路而連接到個人計算機的計算機監視器或平板顯示器。

根據本發明的一個實例,gpu12可經配置以使用一或多個圖形運算來渲染幀的一或多個部分,並根據所述一或多個圖形操作來講色彩數據直接寫入到系統存儲器10中的色彩緩衝器。gpu12可進一步經配置以根據一或多個圖形操作來將深度數據寫入到gmem14中的深度緩衝器,且在所述幀的一或多個部分的渲染完成時,將gmem14中的深度緩衝器解析到系統存儲器10。

圖2是進一步詳細地說明圖1的cpu6、gpu12和系統存儲器10的實例實施方案的框圖。cpu6可包含至少一個軟體應用程式24、圖形api26和gpu驅動程序7,其中的每一者可為在cpu6上執行的一或多個軟體應用程式或服務。gpu12可包含圖形處理管線30,所述圖形處理管線包含一起操作以執行圖形處理命令的多個圖形處理級。gpu12可經配置以根據本發明的技術,在混合渲染模式下執行圖形處理管線30。如圖2中所示,圖形處理管線30可包含命令引擎32、幾何處理級34、光柵化級36和像素處理管線38。圖形處理管線30中的組件中的每一者可實施為固定功能組件、可編程組件(例如,作為在可編程著色器單元上執行的著色器程序的部分),或實施為固定功能與可編程組件的組合。可用於cpu6和gpu12的存儲器可包含系統存儲器10和幀緩衝器15。幀緩衝器15可為系統存儲器10的部分或可與系統存儲器10分開。幀緩衝器15可存儲經渲染圖像數據的幀。

如將在下文更詳細地闡釋,根據本發明的技術,gpu12可經配置以將色彩值存儲在gmem14中的深度緩衝器13a中。gpu12可進一步經配置以在幀的一或多個部分(例如倉)的渲染完成時,將深度緩衝器13a解析到系統存儲器10中的深度緩衝器13b。gpu12可進一步經配置以將色彩值存儲在直接在系統存儲器10中的色彩緩衝器11中(即,而不將色彩值存儲在gmem14中)。

軟體應用程式24可為利用gpu12的功能性的任何應用程式。舉例來說,軟體應用24可為gui應用程式、作業系統、可攜式製圖應用、用於工程或藝術應用的計算機輔助設計程序、視頻遊戲應用程式,或使用2d或3d圖形的另一種類型的軟體應用程式。

軟體應用程式24可包含指令gpu12渲染圖形用戶接口(gui)和/或圖形場景的一或多個繪製指令。舉例來說,繪製指令可包含界定將由gpu12渲染的一組一或多個圖形基元的指令。在一些實例中,繪製指令可共同地界定用於gui中的多個開窗表面的全部或部分。在額外實例中,所述繪製指令可共同地定義圖形場景的全部或部分,所述圖形場景包含在由應用程式定義的模型空間或世界空間內的一或多個圖形對象。

軟體應用程式24可經由圖形api26調用gpu驅動程序7,以將一或多個命令發布到gpu12,以用於將一或多個圖形基元渲染到可顯示的圖形圖像中。舉例來說,軟體應用程式24可經由圖形api26調用gpu驅動程序7以將圖元定義提供給gpu12。在一些情況下,可以繪製圖元(例如,三角形、矩形、三角扇、三角帶等)的列表的形式將圖元定義提供給gpu12。圖元定義可包含指定與將渲染的圖元相關聯的一或多個頂點的頂點規格。頂點規格可包含每一頂點的位置坐標,且在一些情況下,包含與頂點相關聯的其它屬性,例如色彩坐標、法向量和紋理坐標。圖元定義還可包含圖元類型信息(例如,三角形、矩形、三角扇、三角帶等)、縮放信息、旋轉信息等。基於由軟體應用程式24發布到gpu驅動程序7的指令,gpu驅動程序7可制定指定供gpu12執行的一或多個圖形操作以便渲染圖元的一或多個命令。當gpu12接收到來自cpu6的命令時,圖形處理管線30對所述命令進行解碼,且配置圖形處理管線30內的一或多個處理元件,以執行所述命令中所指定的一或多個圖形操作。在執行指定圖形操作之後,圖形處理管線30將經渲染的數據輸出到與顯示裝置相關聯的幀緩衝器15。

根據本發明的技術,gpu12可經配置以使用像素處理操作和一或多個深度測試來渲染幀的一或多個部分。所述像素處理操作可包含圖形操作,其使用、改變、更新和/或通常操縱像素的色彩值。像素的色彩值可處於rgb格式(紅、藍綠)、yuv格式(亮度(y),以及兩個色度值(uv)),或處於任何其它格式。gpu12也可執行深度測試(或其它圖形操作),以便使用、改變、更新和/或通常操縱深度值。深度值可指示像素相對於其它像素距離檢視者有多近。可使用深度值來確定什麼圖元在最終經渲染場景中可見。

根據本發明的技術,gpu12經配置以將色彩值直接存儲到系統存儲器10中的色彩緩衝器11。也就是說,gpu12更新色彩緩衝器11,而不寫入到gmem14中的任何色彩緩衝器。gpu12還可經配置以將幀的一或多個部分(例如幀的倉)的深度值存儲在gmem14中的深度緩衝器13a中。當gpu12已結束渲染幀的一或多個部分(例如幀的倉)時,gpu12可將gmem14中的深度緩衝器13a解析到系統存儲器10中的深度緩衝器13b。

gpu驅動程序7可進一步經配置以編譯一或多個著色器程序,且將經編譯的著色器程序下載到gpu12內所包含的一或多個可編程著色器單元上。可用高級著色語言來編寫著色器程序,例如opengl著色語言(glsl)、高級著色語言(hlsl)、用於圖形的c(cg)著色語言等。經編譯的著色器程序可包含控制gpu12內的可編程著色器單元的操作的一或多個指令。舉例來說,著色器程序可包含頂點著色器程序和/或像素著色器程序。頂點著色器程序可控制可編程頂點著色器單元或統一著色器單元的執行,且包含指定一或多個每頂點操作的指令。像素著色器程序可包含控制可編程像素著色器單元或統一著色器單元的執行的像素著色器程序,且包含指定一或多個逐像素操作的指令。根據本發明的一些實例,像素著色器程序還可包含選擇性地致使基於源像素的對應目的地阿爾法值而檢索源像素的紋理值的指令。gpu12可根據本發明的技術來執行頂點著色器和像素著色器。也就是說,像素著色器或頂點著色器所執行的更新色彩值的任何圖形操作均將致使gpu12更新系統存儲器10中的色彩緩衝器11。像素著色器或頂點著色器所執行的更新深度值的任何圖形操作均將致使gpu12更新gmem中的深度緩衝器13a。並且,gpu12經配置以在幀的正由gpu12渲染的部分完成時,將深度緩衝器13a解析到系統存儲器10中的深度緩衝器13b。

圖形處理管線30可經配置以經由圖形驅動程序28從cpu6接收一或多個圖形處理命令,且執行圖形處理命令以產生可顯示的圖形圖像。如上文所論述,圖形處理管線30包含一起操作以執行圖形處理命令的多個級。然而,應注意,所述級不需要一定實施在單獨的硬體塊中。舉例來說,幾何處理級34和像素處理管線38的部分可實施為統一著色器單元的部分。並且,圖形處理管線30可經配置以在多種不同的渲染模式中的一者中執行,包含分倉渲染模式和直接渲染模式。

命令引擎32可接收圖形處理命令,且配置圖形處理管線30內的其餘處理級以執行用於實行圖形處理命令的各種操作。圖形處理命令可包含(例如)繪製命令和圖形狀態命令。所述繪製命令可包含頂點規格命令,所述頂點規格命令指定一或多個頂點的位置坐標,並且在一些情況下,指定與所述頂點中的每一者相關聯的其它屬性值,例如色彩坐標、法向量、紋理坐標和霧坐標。所述圖形狀態命令可包含圖元類型命令、變換命令、照明命令等。所述圖元類型命令可指定將要渲染的圖元的類型和/或頂點如何組合以形成圖元。所述變換命令可指定對頂點執行的變換的類型。所述照明命令可指定圖形場景內的不同光的類型、方向和/或布局。命令引擎32可致使幾何處理級34相對於與一或多個所接收到的命令相關聯的頂點和/或圖元而執行幾何處理。

幾何處理級34可對一或多個頂點執行每頂點操作和/或圖元設置操作,以便產生用於光柵化級36的圖元數據。每一頂點可與一組屬性(例如,位置坐標、色彩值、法向量和紋理坐標)相關聯。幾何處理級34根據各種每頂點操作而修改這些屬性中的一或多者。舉例來說,幾何處理級34可對頂點位置坐標執行一或多個變換以產生經修改的頂點位置坐標。幾何處理級34可(例如)將模型化變換、檢視變換、投影變換、模型視圖(modelview)變換、模型視圖投影(modelviewprojection)變換、視口變換以及深度範圍按比例縮放變換中的一或多者應用於頂點位置坐標,以產生經修改的頂點位置坐標。

在一些情況下,頂點位置坐標可為模型空間坐標,且經修改的頂點位置坐標可為屏幕空間坐標。可在所述模型化、檢視、投影和視口變換的應用之後獲得屏幕空間坐標。在一些情況下,幾何處理級34還可對頂點執行每頂點照明操作以產生頂點的經修改的色彩坐標。幾何處理級34還可執行其它操作,包含(例如)正常變換、正常規格化操作、檢視量修剪、均質劃分和/或隱面消除操作。

幾何處理級34可產生包含界定將經光柵化的圖元的一組一或多個經修改的頂點的圖元數據以及指定頂點如何組合以形成圖元的數據。所述經修改的頂點中的每一者可包含(例如)與所述頂點相關聯的經修改的頂點位置坐標以及經處理的頂點屬性值。所述圖元數據可共同地對應於將由圖形處理管線30的其它級光柵化的圖元。在概念上,每一頂點可對應於圖元的其中所述圖元的兩個邊緣會合的隅角。幾何處理級34可將圖元數據提供到光柵化級36以供進一步處理。

在一些實例中,幾何處理級34的全部或部分可由在一或多個著色器單元上執行的一或多個著色器程序實施。舉例來說,在此些實例中,幾何處理級34可由頂點著色器、幾何著色器或其任何組合實施。在其它實例中,可將幾何處理級34實施為固定功能硬體處理管線,或實施為固定功能硬體與在一或多個著色器單元上執行的一或多個著色器程序的組合。

光柵化級36經配置以從幾何處理級34接收表示將被光柵化的圖元的圖元數據,且使所述圖元光柵化以產生對應於經光柵化的圖元的多個源像素。在一些實例中,光柵化級36可確定哪些屏幕像素位置由將被光柵化的圖元覆蓋,且產生用於被確定為由圖元覆蓋的每一屏幕像素位置的源像素。光柵化級36可通過使用所屬領域的技術人員已知的技術來去確定哪些屏幕像素位置由圖元覆蓋,例如邊緣遍歷技術、評估邊緣等式等。光柵化級36可將所得源像素提供到像素處理管線38以供進一步處理。

由光柵化級36產生的源像素可對應於屏幕像素位置,例如目的地像素,且與一或多個色彩屬性相關聯。針對特定經光柵化的圖元所產生的所有源像素可稱為與經光柵化的圖元相關聯。由光柵化級36確定的將由圖元覆蓋的像素可在概念上包含表示圖元的頂點的像素、表示圖元的邊緣的像素以及表示圖元的內部的像素。

像素處理管線38經配置以接收與經光柵化的圖元相關聯的源像素,且對所述源像素執行一或多個逐像素操作。可由像素處理管線38執行的逐像素操作包含(例如)阿爾法測試、紋理映射、色彩計算、像素著色、逐像素照明、霧處理、混合、像素所有權文本、源阿爾法測試、模板測試、深度測試、剪刀測試和/或點刻操作。另外,像素處理管線38可執行一或多個像素著色器程序以執行一或多個逐像素操作。由像素處理管線38產生的所得數據可在本文中被稱作目的地像素數據,且存儲在幀緩衝器15中。目的地像素數據可與幀緩衝器15中的具有與經處理源像素相同的顯示位置的目的地像素相關聯。目的地像素數據可包含例如色彩緩衝器11中的色彩值、目的地阿爾法值、深度緩衝器13b中的深度值等數據。

幀緩衝器15存儲gpu12的目的地像素。每一目的地像素可與唯一屏幕像素位置相關聯。在一些實例中,幀緩衝器15可存儲每一目的地像素的色彩分量和目的地阿爾法值。舉例來說,幀緩衝器15可存儲每一像素的紅色、綠色、藍色、阿爾法(rgba)分量,其中「rgb」分量對應於色彩值,且「a」分量對應於目的地阿爾法值。儘管幀緩衝器15和系統存儲器10被說明為單獨存儲器單元,但在其它實例中,幀緩衝器15可為系統存儲器10的部分。

如上文所論述,gpu12可經配置以一次渲染幀的一或多個部分。在本發明的一些實例中,gpu12可經配置以一次渲染整個幀。在此實例中,當渲染整個幀時,gpu12將解析gmem14中的深度緩衝器13a。在本發明的其它實例中,gpu12可經配置以一次僅渲染幀的一部分。也就是說,gpu12可經配置以將幀劃分為被稱作倉或平鋪塊的區,並獨立地渲染所述倉中的每一者。根據本發明的技術,gpu12可經配置以將幀分為若干倉,並將與渲染所述倉相關聯的任何深度值存儲在gmem14中的深度緩衝器13a中。當所述倉的渲染完成時,gpu12經配置以將深度緩衝器13a解析到系統存儲器10中的深度緩衝器13b。然而,gpu12經配置以將與渲染所述倉有關的任何色彩值直接存儲在系統存儲器10中的色彩緩衝器11中。

在這點上,由於色彩緩衝器11可用於幀中的每個倉,因此色彩緩衝器11可被配置成具有使得幀的所有色彩值將剛好放入色彩緩衝器11中的存儲器大小。然而,深度緩衝器13a僅需要配置有使得倉的所有深度值會剛好放入深度緩衝器13a中的大小。深度緩衝器13b可被配置成具有使得幀的所有深度值將剛好放入深度緩衝器13b中的大小。下文將論述關於分倉的額外細節。

圖3是說明劃分成倉以用於分倉渲染模式的幀的概念圖。幀40可劃分成多個倉,例如倉42。通常,圖形硬體將含有快速存儲器(例如圖2的gmem14),其具有足以保持至少一個倉的數據的大小。根據本發明的實例,gmem14可被配置成具有保持值得存儲在深度緩衝器13a中的深度數據的一個倉的大小。

作為針對幀的特定倉的單個渲染遍次的部分,圖形處理管線30可相對於幀的目的地像素的特定子集(例如,目的地像素的特定倉)渲染圖元批次的全部或子集。在相對於第一倉執行第一渲染遍次之後,圖形處理管線30可相對於第二倉執行第二渲染遍次,等等。圖形處理管線30可遞增地遍歷經過所述倉,直到已渲染與每個倉相關聯的圖元為止。

圖4是更詳細示出根據本發明的技術用於混合渲染模式的倉的概念圖。渲染/光柵化倉44、46、48和50,以含有多個像素52。一或多個圖形基元可在每一倉中可見。舉例來說,三角形a(tria)的部分在倉44和倉48兩者中可見。三角形b(trib)的部分在倉44、倉46、倉48和倉50中的每一者中可見。三角形c(tric)僅在倉46中可見。在渲染遍次期間,在本發明的一個實例中,將場景分裂成若干倉,且渲染在所述倉中的所有三角形(這有時被稱作軟體分倉)。在本發明的另一實例中,gpu12在渲染之前執行額外步驟,來確定所述倉中的哪些三角形在最終經渲染場景中實際可見(這有時被稱作硬體分倉)。舉例來說,一些三角形可在一或多個其它三角形後方,且將在最後經渲染場景中不可見。以此方式,不必為所述倉渲染不可見的三角形。

根據本發明的技術,在執行特定渲染遍次時,與所述特定渲染遍次相關聯的倉的深度數據可存儲在gmem14中的深度緩衝器13a中。然而,與特定渲染遍次相關聯的倉的像素數據可存儲在系統存儲器10中的色彩緩衝器11中。在執行渲染遍次之後,gpu12可將gmem14中的深度緩衝器13a的內容傳送(即,解析)到系統存儲器10中的深度緩衝器13b。在將gmem14中的深度緩衝器13a的內容傳送到系統存儲器10中的深度緩衝器13b之後,gpu12可將gmem14中的深度緩衝器13a初始化為默認值,且開始相對於不同倉的後續渲染遍次。

圖5是示出用於連同「軟體」分倉技術使用本發明的混合渲染模式來渲染場景的實例命令結構的概念圖。層級1間接緩衝器(ib1)60含有一系列執行命令,用於指導gpu12執行圖形處理管線30的各種步驟(即,執行一或多個圖形操作)。ib160中的每一執行命令基本上指向含有用於渲染管線的各個方面的命令的一或多個層級2間接緩衝器(ib2)的指針。以此方式,建立用於執行圖形渲染管線的兩個或更多個層級結構。gpu12可循序步進通過ib160中的每一執行命令,其中ib160中的每一執行指向存儲在ib2中的特定命令堆疊。ib1和ib2可為gpu12的機載存儲器或可為gpu12的外部存儲器,例如系統存儲器10。

ib160中的前導執行命令指向含有可由gpu12執行的前導命令的前導ib262。舉例來說,前導ib262可包含初始化gpu12的靜止狀態且設置gpu12的初始渲染狀態的命令。gpu12的靜止狀態包含並不基於特定應用而改變的設置。另一方面,渲染狀態包含可基於特定應用(例如,開放gl(opengl)應用與直接x(directx)應用)而改變的gpu設置。在前導ib2中的命令完成之後,控制返回到ib160以執行下一執行命令。

ib160中的下一執行命令為正使用的渲染模式配置渲染遍次。並且,在圖5的實例中,渲染模式是本發明的使用軟體分倉的混合渲染模式。接下來,ib160中的加載倉執行命令指向加載ib266中的命令。對於軟體分倉,將特定倉的深度數據加載到gmem14中的深度緩衝器13a中。另外,將特定倉的色彩數據加載到系統存儲器10中的色彩緩衝器11中。控制接著傳遞迴到ib160,且渲染倉執行命令指向渲染ib2中的命令。

渲染ib268由一系列狀態命令和繪製所加載的倉中的三角形的繪製命令構成。每一繪製命令指令gpu12根據由命令和/或gpu硬體建立的圖形處理管線30(例如,包含幾何處理級34、光柵化級36和/或像素處理管線38)繪製三角形。如渲染ib268中所示,繪製命令中的每一者指示不使用可見性流來確定特定三角形是否在所述倉中實際上可見。可見性流產生於使用「硬體」分倉的分倉渲染模式中,且將參考圖6更詳細論述。

渲染ib268中的狀態命令影響由gpu12執行的圖形處理管線的行為。舉例來說,狀態命令可改變色彩、多邊形模式(例如,點而不是立體或線)、混合(開/關)、深度測試(開/關)、紋理化(開/關)、剔除、裁剪和其它邏輯操作。如渲染ib268中所示,狀態命令可以每三角形(或每圖元)為基礎而發布。也就是說,命令「狀態三角形a」可影響gpu12繪製三角形a時的行為,而「狀態三角形b1」和「狀態三角形b2」命令可影響gpu12繪製三角形b時的行為。「狀態三角形b1」和「狀態三角形b2」命令僅指示可針對每一三角形執行多個狀態命令。渲染ib268中更新正渲染的倉中的像素的色彩值的任何渲染命令致使gpu12更新系統存儲器10中的色彩緩衝器11中的此類色彩值。渲染ib268中更新正渲染的倉中的像素的深度值的任何渲染命令致使gpu12更新gmem14中的深度緩衝器13a。

在已執行渲染ib268中的全部命令之後(例如,在已繪製全部三角形之後),控制返回到ib160。存儲倉執行命令可包含指向存儲ib270的指針,其包含將gmem14中的深度緩衝器13a中的深度值存儲(即,解析)到系統存儲器10中的深度緩衝器13b的命令。接著為一或多個幀的每一倉72重複渲染遍次(例如,從配置渲染遍次到存儲倉的執行命令,如ib160中示出)。

圖6是示出用於使用「硬體」分倉來使用分倉渲染模式渲染場景的實例命令結構的概念圖。ib161中的執行命令類似於圖6的ib160的那些執行命令,與「分倉」遍次有關的命令除外。「分倉」遍次用於產生指示倉中的特定三角形在最後經渲染場景中是否實際上可見的可見性流。舉例來說,一些三角形可在場景中的另一三角形後方,且在一些情境中將不可見(例如,當前方三角形不透明時或當未使用混合時)。在渲染倉72之前,ib161可包含指向分倉ib274中的命令的分倉遍次執行命令。分倉ib274包含致使gpu12執行圖形管線的簡化版本(例如,渲染ib269的簡化版本)的命令,但添加基於確定三角形在最後經渲染場景中是否可見的深度測試(z測試)針對倉中的每一三角形更新可見性流的步驟。當執行分倉遍次時,分倉ib274可產生深度值,且可致使gpu12更新gmem14中的深度緩衝器13a。

分倉遍次的目標是識別與當前倉相交的三角形。由此,僅需要確定三角形的頂點的位置來識別三角形是否與特定倉相交。分倉遍次利用僅包含影響頂點的位置的指令的簡化頂點著色器。舉例來說,色彩指令、紋理坐標以及並不影響三角形頂點的位置的其它指令可從用於分倉遍次的簡化頂點著色器移除。分倉遍次還使用粗略光柵化而非精細光柵化來確定每一三角形的近似深度。粗略光柵化以與精細光柵化相比較低的精度(例如,使用較低數目的位)計算深度值。僅必需近似深度值來確定三角形是否在倉中可見。像素著色器不用於分倉遍次中。

分倉遍次接著利用對粗略深度值的深度測試來確定三角形相對於倉中的其它三角形是否在倉中可見。基於此深度測試,更新可見性流。可見性流可為指示經渲染倉中的特定三角形是否可見的位串(例如,1指示三角形可見,0指示三角形不可見)。

渲染ib269中的命令類似於圖5中的渲染ib68的那些命令,可見性流的使用除外。渲染ib269中的繪製命令(例如,繪製tria、繪製trib、繪製tric等)可使用由分倉遍次產生的可見性流來確定是否有必要繪製特定三角形。舉例來說,對於由可見性流指示為不可見的三角形,可跳過繪製。

圖7是說明根據本發明的一個實例的方法的流程圖。圖13的方法可由gpu12的一或多個硬體單元執行。在本發明的一個實例中,gpu12可經配置以使用一或多個圖形操作來渲染幀的一或多個部分(702)。gpu12可進一步經配置以根據一或多個圖形操作來將色彩數據直接寫入到系統存儲器10中的色彩緩衝器11(704)。gpu12可再進一步經配置以根據一或多個圖形操作來將深度數據寫入到gmem14中的深度緩衝器13a(706),且在所述幀的一或多個部分的渲染完成時,將gmem14中的深度緩衝器13a解析到系統存儲器10中的深度緩衝器13b。在本發明的一個實例中,系統存儲器10可為dram,且gmem14可在與gpu12相同的集成電路上。

在本發明的另一實例中,gpu12可經配置以對幀的一或多個部分執行分倉遍次。所述幀的所述一或多個部分可為幀的倉。在一個實例中,為了執行分倉遍次,gpu12進一步經配置以執行識別在倉中可見的圖元的硬體分倉遍次。在此實例中,gpu12可進一步經配置以通過對被識別為在倉中可見的圖元使用一或多個圖形操作,來渲染所述幀的倉。在另一實例中,gpu12經配置以執行識別在所述倉內的圖元的軟體分倉遍次,且通過對被識別為在所述倉內的圖元使用一或多個圖形操作來渲染所述幀的倉。

在一或多個實例中,上文所描述的功能可以硬體、軟體、固件或其任何組合來實施。如果以軟體實施,那麼功能可作為一或多個指令或代碼存儲在包括非暫時性計算機可讀媒體的製品上。計算機可讀媒體可包含計算機數據存儲媒體。數據存儲媒體可為可由一或多個計算機或一個或多個處理器存取以檢索用於實施本發明中描述的技術的指令、代碼和/或數據結構的任何可用媒體。作為實例而非限制,此類計算機可讀媒體可包括ram、rom、eeprom、cd-rom或其它光碟存儲裝置、磁碟存儲裝置或其它磁性存儲裝置、快閃記憶體存儲器或可用來攜帶或存儲呈指令或數據結構形式的所要程序代碼且可由計算機存取的任何其它媒體。如本文中所使用,磁碟和光碟包含壓縮光碟(cd)、雷射光碟、光學光碟、數字多功能光碟(dvd)、軟性磁碟和藍光光碟,其中磁碟通常以磁性方式再現數據,而光碟利用雷射以光學方式再現數據。以上各項的組合也應包含在計算機可讀媒體的範圍內。

代碼可由一或多個處理器執行,所述一或多個處理器例如一或多個dsp、通用微處理器、asic、fpga,或其它等效集成或離散邏輯電路。另外,在一些方面中,可在專用硬體和/或軟體模塊內提供本文中所描述的功能性。而且,所述技術可完全實施於一或多個電路或邏輯元件中。

本發明的技術可在廣泛多種裝置或設備中實施,包含無線手持機、集成電路(ic)或一組ic(例如,晶片組)。本發明中描述各種組件、模塊或單元是為了強調經配置以執行所揭示的技術的裝置的功能方面,但未必需要由不同硬體單元實現。實際上,如上文所描述,各種單元可結合合適的軟體和/或固件組合在編解碼器硬體單元中,或者通過互操作硬體單元的集合來提供,所述硬體單元包含如上文所描述的一或多個處理器。

已描述了各種實例。這些和其它實例在所附權利要求書的範圍內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀