基於圖塊渲染
基於圖塊渲染(英語: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).