基於圖塊彩現
基於圖塊彩現(英語:Tiled rendering或Tile-based rendering)也稱基於瓦片彩現或基於小方塊彩現,它是一種在光學空間中通過規則的網格細分電腦圖形圖像並分別彩現網格(grid)或圖塊(tile)各部分的過程。這種設計的優點在於,與立即繪製整個幀的立即模式彩現系統相比,它減少了對主記憶體和頻寬的消耗。這使圖塊彩現系統的使用特別常見於低功耗硬件裝置。圖塊彩現有時也被稱為中置排序(sort middle)架構,因為它在繪圖管線化中間而不是接近結束時進行幾何排序。[1]
基本概念
[編輯]建立一個用於顯示的3D圖像包括一系列步驟。首先,將要顯示的對象從各個模型載入到主記憶體中。然後,系統應用數學函數將模型轉換為公共坐標系統,即世界視圖。從這個世界視圖建立一系列多邊形(通常為三角形),近似從特定視點(攝像放像機、視角)看到的近似原始模型。接下來,合成系統通過彩現三角形並將紋理應用於外緣來產生圖像。紋理是繪製在三角形上以產生真實感的小圖像。之後將所得到的圖像與各種特殊效果組合,並移動到一個幀緩衝區,影片硬件最後掃描並輸出到顯示器。這種基本概念的佈局稱為顯示管道(display pipeline)。
上述步驟的每一步都將得到圖像並需儲存,而增加了所需的主記憶體容量。當它到達管道的結尾,圖像會非常大,因此典型的顯示卡設計經常使用專用的高速影像記憶體及極快的匯流排以提供圖像移動所需的頻寬。這種支援在專用顯示卡上可能,但隨着功耗和尺寸的預算變得更有限,提供足夠的頻寬在設計上愈加昂貴。
基於圖塊的彩現器通過將圖像分解成稱為圖塊或瓦片的部分並分別彩現各部分來解決此問題。這減少了中間步驟期間所需的主記憶體量,以及在期間轉移的數據量。為做到這點,系統將根據位置對構成幾何的三角形進行排序,從而能快速找到哪些三角形與圖塊邊界重疊。然後它只將這些三角形載入到彩現管線,在GPU中執行各種彩現操作,及傳送結果到幀緩衝區。使用的圖塊可能非常小,例如16×16和32×32像素是常見的圖塊大小,這使得內部所需的主記憶體和頻寬量較小。因為每個圖塊都是獨立的,它也很適合簡單的並列化。
在典型的基於圖塊的彩現器中,幾何必須首先轉換為螢幕空間並分配給螢幕空間圖塊。這需要一些儲存每個圖塊幾何列表的空間。在早期的圖塊系統中,這由CPU提供,但所有現代的硬件都包括採用硬件加速此步驟。幾何的列表也可以從前到後排序,允許GPU使用隱藏表面去除來避免處理被其他遮擋的像素,節省不必要的用於紋理尋找的主記憶體頻寬。[2]
基於圖塊的方法有兩個主要缺點。一是如果某些三角形疊加在數個圖塊,則需要繪製數次。這意味着總彩現時間將高於即時彩現模式。當圖塊需要拼接在一起以形成完整圖像時還有一個問題,但這個問題已在很久前得到解決。更難解決的是,一些圖像技術需要應用到整個幀,並且其模式很難在基於圖塊的彩現中實現。這些利弊是眾所周知的,並且對於某些利用其優勢的系統來說缺點是次要的,因而基於圖塊的彩現系統廣泛存在於手持計算裝置中。
基於圖塊的彩現不應與圖塊/非線性幀緩衝區定址方案方案混淆,其是使相鄰元素也在主記憶體中相鄰。[3]這些定址方案被各種架構使用,而不只是基於圖塊的彩現器。
早期成果
[編輯]很多基於圖塊彩現的早期成果是作為Pixel Planes 5架構(1989)的一部分完成。[4][5]
Pixel Planes 5專案驗證了基於圖塊的方法,並行明了很多現在被視為基於圖塊彩現器的標準的技術。這是該領域中被其他文章廣泛參照的成果。
基於圖塊的方法在軟件彩現的早期就已被了解。Reyes彩現架構的實現就將圖像劃分為圖塊桶(tile buckets)。
商業產品 - 桌面電腦和家用遊戲機
[編輯]在開發桌面GPU的早期,幾家公司開發了圖塊式架構。隨着時間的推移,這主要被能快速客製化外部主記憶體系統的即時模式GPU取代。
主要的例子有:
- PowerVR彩現架構(1996):光柵化器由32×32的圖塊組成,其中的多邊形跨越多個像素、多個圖像被柵格化。在早期的PC版本中,圖塊疊加在執行於CPU的顯示驅動程式中執行。在Dreamcast控制台的應用程式中,圖塊疊加用一組硬件執行。這促進了延期着色——只有可見像素被材質貼圖,從而節省陰影計算和紋理bandwidth。
- Microsoft Talisman(1996)
- Dreamcast(由PowerVR晶片組支援)(1998)
- Gigapixel GP-1(1999)[6]
- Intel Larrabee GPU(2009)(已取消)
- PS Vita(由PowerVR晶片組支援)(2011)[7]
- Nvidia基於Maxwell架構及之後架構的GPU(2014)[8]
使用片上大緩衝區的非圖塊式架構的例子有:
- Xbox 360(2005):GPU包含一個嵌入式10 MiB eDRAM。這不足以保留一個配有4×多重採樣抗鋸齒(MSAA)的1280×720圖像的光柵,因此執行在HD解像度並啟用4× MSAA時採用圖塊疊加。[9]
- Xbox One(2013):GPU包含一個嵌入式32 MiB eSRAM,這可以儲存部分或整個圖像。它不是一個基於圖塊的架構,但足夠靈活,軟件開發人員可以模擬基於圖塊的彩現。[10][與來源不符]
商業產品 - 嵌入式
[編輯]由於相對較低的外部主記憶體頻寬和片上主記憶體容量的需求,圖塊彩現是常用於嵌入式GPU的技術。目前的例子有:
基於圖塊的即時模式彩現(TBIM):
基於圖塊的延遲彩現(TBDR):
- Imagination Technologies PowerVR 5/6/7系列。[14]
- 博通 VideoCore IV系列。[15]
Vivante生產具有緊密耦合的幀緩衝區主記憶體的移動GPU(類似上面描述的Xbox 360 GPU)。雖然這可以用於彩現螢幕部分,但是所彩現的區域的大尺寸使它們通常不被描述為使用基於圖塊的架構。
參見
[編輯]參考資料
[編輯]- ^ Molnar, Steven. A Sorting Classification of Parallel Rendering (PDF). IEEE. 1994-04-01 [2012-08-24]. (原始內容存檔 (PDF)於2014-09-12).
- ^ PowerVR: A Master Class in Graphics Technology and Optimization (PDF). Imagination Technologies. 2012-01-14 [2014-01-11]. (原始內容 (PDF)存檔於2013-10-03).
- ^ Deucher, Alex. How Video Cards Work. X.Org Foundation. 2008-05-16 [2010-05-27]. (原始內容存檔於2010-05-21).
- ^ Mahaney, Jim. History. Pixel-Planes. University of North Carolina at Chapel Hill. 1998-06-22 [2008-08-04]. (原始內容存檔於2008-09-29).
- ^ Fuchs, Henry. Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories. Pixel-Planes. ACM. 1989-07-01 [2012-08-24]. (原始內容存檔於2018-10-27).
- ^ Smith, Tony. GigaPixel takes on 3dfx, S3, Nvidia with... tiles. Gigapixel. The Register. 1999-10-06 [2012-08-24]. (原始內容存檔於2019-06-22).
- ^ mestour, mestour. Develop 2011: PS Vita is the most developer friendly hardware Sony has ever made. PS Vita. 3dsforums. 2011-07-21 [2011-07-21].[永久失效連結]
- ^ Kanter, David. Tile-based Rasterization in Nvidia GPUs. Real World Technologies. August 1, 2016 [April 1, 2016]. (原始內容存檔於2016-08-04).
- ^ 存档副本. [2017-03-16]. (原始內容存檔於2015-01-07).
- ^ 存档副本. [2017-03-16]. (原始內容存檔於2020-08-21).
- ^ Mali rendering strategy. ARM. [2020-10-05]. (原始內容存檔於2016-03-04).
- ^ An update on the freedreno graphics driver. lwn.net. [2017-03-16]. (原始內容存檔於2015-09-05).
- ^ The rise of mobile gaming on android (PDF). Qualcomm. [17 September 2015]. (原始內容 (PDF)存檔於2014-11-09).
- ^ A look at the PowerVR graphics architecture: Tile-based rendering. Imagination Technologies. [2017-03-16]. (原始內容存檔於2015-04-05).
- ^ VideoCoreIV-AG100 (PDF). Broadcom. 2013-09-18 [2017-03-16]. (原始內容 (PDF)存檔於2015-03-01).