基於圖塊渲染

基於圖塊渲染(英語:Tiled renderingTile-based rendering)也稱基於瓦片渲染基於小方塊渲染,它是一種在光學空間英語Optical_space中通過規則的網格英語Grid (spatial index)細分電腦圖形圖像並分別渲染網格(grid)或圖塊(tile)各部分的過程。這種設計的優點在於,與立即繪製整個幀的立即模式渲染系統相比,它減少了對主記憶體和頻寬的消耗。這使圖塊渲染系統的使用特別常見於低功耗硬件裝置。圖塊渲染有時也被稱為中置排序(sort middle)架構,因為它在繪圖管線化中間而不是接近結束時進行幾何排序。[1]

基本概念

建立一個用於顯示的3D圖像包括一系列步驟。首先,將要顯示的對象從各個模型載入到主記憶體中。然後,系統應用數學函數將模型轉換為公共坐標系統,即世界視圖。從這個世界視圖建立一系列多邊形(通常為三角形),近似從特定視點(攝像放像機、視角)看到的近似原始模型。接下來,合成系統通過渲染三角形並將紋理應用於外緣來產生圖像。紋理是繪製在三角形上以產生真實感的小圖像。之後將所得到的圖像與各種特殊效果組合,並移動到一個幀緩衝區,影片硬件最後掃描並輸出到顯示器。這種基本概念的佈局稱為顯示管道(display pipeline)。

上述步驟的每一步都將得到圖像並需儲存,而增加了所需的主記憶體容量。當它到達管道的結尾,圖像會非常大,因此典型的顯示卡設計經常使用專用的高速影像記憶體及極快的匯流排以提供圖像移動所需的頻寬。這種支援在專用顯示卡上可能,但隨着功耗和尺寸的預算變得更有限,提供足夠的頻寬在設計上愈加昂貴。

基於圖塊的渲染器通過將圖像分解成稱為圖塊或瓦片的部分並分別渲染各部分來解決此問題。這減少了中間步驟期間所需的主記憶體量,以及在期間轉移的數據量。為做到這點,系統將根據位置對構成幾何的三角形進行排序,從而能快速找到哪些三角形與圖塊邊界重疊。然後它只將這些三角形載入到渲染管線,在GPU中執行各種渲染操作,及傳送結果到幀緩衝區。使用的圖塊可能非常小,例如16×16和32×32像素是常見的圖塊大小,這使得內部所需的主記憶體和頻寬量較小。因為每個圖塊都是獨立的,它也很適合簡單的並列化。

在典型的基於圖塊的渲染器中,幾何必須首先轉換為螢幕空間並分配給螢幕空間圖塊。這需要一些儲存每個圖塊幾何列表的空間。在早期的圖塊系統中,這由CPU提供,但所有現代的硬件都包括採用硬件加速此步驟。幾何的列表也可以從前到後排序,允許GPU使用隱藏表面去除英語Hidden surface removal來避免處理被其他遮擋的像素,節省不必要的用於紋理尋找的主記憶體頻寬。[2]

基於圖塊的方法有兩個主要缺點。一是如果某些三角形疊加在數個圖塊,則需要繪製數次。這意味着總渲染時間將高於即時渲染模式。當圖塊需要拼接在一起以形成完整圖像時還有一個問題,但這個問題已在很久前得到解決。更難解決的是,一些圖像技術需要應用到整個幀,並且其模式很難在基於圖塊的渲染中實現。這些利弊是眾所周知的,並且對於某些利用其優勢的系統來說缺點是次要的,因而基於圖塊的渲染系統廣泛存在於手持計算裝置中。

基於圖塊的渲染不應與圖塊/非線性幀緩衝區定址方案方案混淆,其是使相鄰元素也在主記憶體中相鄰。[3]這些定址方案被各種架構使用,而不只是基於圖塊的渲染器。

早期成果

很多基於圖塊渲染的早期成果是作為Pixel Planes 5架構(1989)的一部分完成。[4][5]

Pixel Planes 5專案驗證了基於圖塊的方法,並行明了很多現在被視為基於圖塊渲染器的標準的技術。這是該領域中被其他文章廣泛參照的成果。

基於圖塊的方法在軟件渲染的早期就已被了解。Reyes渲染架構的實現就將圖像劃分為圖塊桶(tile buckets)。

商業產品 - 桌面電腦和家用遊戲機

在開發桌面GPU的早期,幾家公司開發了圖塊式架構。隨着時間的推移,這主要被能快速客製化外部主記憶體系統的即時模式GPU取代。

主要的例子有:

使用片上大緩衝區的非圖塊式架構的例子有:

商業產品 - 嵌入式

由於相對較低的外部主記憶體頻寬和片上主記憶體容量的需求,圖塊渲染是常用於嵌入式GPU的技術。目前的例子有:

基於圖塊的即時模式渲染(TBIM):

基於圖塊的延遲渲染(TBDR):

Vivante生產具有緊密耦合的幀緩衝區主記憶體的移動GPU(類似上面描述的Xbox 360 GPU)。雖然這可以用於渲染螢幕部分,但是所渲染的區域的大尺寸使它們通常不被描述為使用基於圖塊的架構。

參見

參考資料

  1. ^ Molnar, Steven. A Sorting Classification of Parallel Rendering (PDF). IEEE. 1994-04-01 [2012-08-24]. (原始內容存檔 (PDF)於2014-09-12). 
  2. ^ PowerVR: A Master Class in Graphics Technology and Optimization (PDF). Imagination Technologies. 2012-01-14 [2014-01-11]. (原始內容 (PDF)存檔於2013-10-03). 
  3. ^ Deucher, Alex. How Video Cards Work. X.Org Foundation. 2008-05-16 [2010-05-27]. (原始內容存檔於2010-05-21). 
  4. ^ Mahaney, Jim. History. Pixel-Planes. University of North Carolina at Chapel Hill. 1998-06-22 [2008-08-04]. (原始內容存檔於2008-09-29). 
  5. ^ 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). 
  6. ^ Smith, Tony. GigaPixel takes on 3dfx, S3, Nvidia with... tiles. Gigapixel. The Register. 1999-10-06 [2012-08-24]. (原始內容存檔於2019-06-22). 
  7. ^ 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]. [永久失效連結]
  8. ^ Kanter, David. Tile-based Rasterization in Nvidia GPUs. Real World Technologies. August 1, 2016 [April 1, 2016]. (原始內容存檔於2016-08-04). 
  9. ^ 存档副本. [2017-03-16]. (原始內容存檔於2015-01-07). 
  10. ^ 存档副本. [2017-03-16]. (原始內容存檔於2020-08-21). 
  11. ^ Mali rendering strategy. ARM. [2020-10-05]. (原始內容存檔於2016-03-04). 
  12. ^ An update on the freedreno graphics driver. lwn.net. [2017-03-16]. (原始內容存檔於2015-09-05). 
  13. ^ The rise of mobile gaming on android (PDF). Qualcomm. [17 September 2015]. (原始內容 (PDF)存檔於2014-11-09). 
  14. ^ A look at the PowerVR graphics architecture: Tile-based rendering. Imagination Technologies. [2017-03-16]. (原始內容存檔於2015-04-05). 
  15. ^ VideoCoreIV-AG100 (PDF). Broadcom. 2013-09-18 [2017-03-16]. (原始內容 (PDF)存檔於2015-03-01).