基於圖塊渲染(英語:Tiled rendering或Tile-based rendering)也稱基於瓦片渲染或基於小方塊渲染,它是一種在光學空間中通過規則的格線細分計算機圖形圖像並分別渲染格線(grid)或圖塊(tile)各部分的過程。這種設計的優點在於,與立即繪製整個幀的立即模式渲染系統相比,它減少了對記憶體和頻寬的消耗。這使圖塊渲染系統的使用特別常見於低功耗硬體設備。圖塊渲染有時也被稱為中置排序(sort middle)架構,因為它在繪圖管線中間而不是接近結束時進行幾何排序。
基本介紹
- 中文名:基於圖塊渲染
- 外文名:Tiled rendering
基本概念,早期成果,商業產品 - 桌面和控制台,商業產品 - 嵌入式,
基本概念
創建一個用於顯示的3D圖像包括一系列步驟。首先,將要顯示的對象從各個模型載入到記憶體中。然後,系統套用數學函式將模型轉換為公共坐標系統,即世界視圖。從這個世界視圖創建一系列多邊形(通常為三角形),近似從特定視點(攝像機、視角)看到的近似原始模型。接下來,合成系統通過渲染三角形並將紋理套用於外緣來產生圖像。紋理是繪製在三角形上以產生真實感的小圖像。之後將所得到的圖像與各種特殊效果組合,並移動到一個幀緩衝器,視頻硬體最後掃描並輸出到顯示器。這種基本概念的布局稱為顯示管道(display pipeline)。
上述步驟的每一步都將得到圖像並需保存,而增加了所需的記憶體容量。當它到達管道的結尾,圖像會非常大,因此典型的顯示卡設計經常使用專用的高速顯存及極快的匯流排以提供圖像移動所需的頻寬。這種支持在專用顯示卡上可能,但隨著功耗和尺寸的預算變得更有限,提供足夠的頻寬在設計上愈加昂貴。
基於圖塊的渲染器通過將圖像分解成稱為圖塊或瓦片的部分並分別渲染各部分來解決此問題。這減少了中間步驟期間所需的記憶體量,以及在期間轉移的數據量。為做到這點,系統將根據位置對構成幾何的三角形進行排序,從而能快速找到哪些三角形與圖塊邊界重疊。然後它只將這些三角形載入到渲染管線,在GPU中執行各種渲染操作,及傳送結果到幀緩衝器。使用的圖塊可能非常小,例如16×16和32×32像素是常見的圖塊大小,這使得內部所需的記憶體和頻寬量較小。因為每個圖塊都是獨立的,它也很適合簡單的並行化。
在典型的基於圖塊的渲染器中,幾何必須首先轉換為螢幕空間並分配給螢幕空間圖塊。這需要一些存儲每個圖塊幾何列表的空間。在早期的圖塊系統中,這由CPU提供,但所有現代的硬體都包括採用硬體加速此步驟。幾何的列表也可以從前到後排序,允許GPU使用隱藏表面去除來避免處理被其他遮擋的像素,節省不必要的用於紋理查找的記憶體頻寬。
基於圖塊的方法有兩個主要缺點。一是如果某些三角形疊加在數個圖塊,則需要繪製數次。這意味著總渲染時間將高於即時渲染模式。當圖塊需要拼接在一起以形成完整圖像時還有一個問題,但這個問題已在很久前得到解決。更難解決的是,一些圖像技術需要套用到整個幀,並且其模式很難在基於圖塊的渲染中實現。這些利弊是眾所周知的,並且對於某些利用其優勢的系統來說缺點是次要的,因而基於圖塊的渲染系統廣泛存在於手持計算設備中。
基於圖塊的渲染不應與圖塊/非線性幀緩衝器定址方案方案混淆,其是使相鄰元素也在記憶體中相鄰。這些定址方案被各種架構使用,而不只是基於圖塊的渲染器。
早期成果
很多基於圖塊渲染的早期成果是作為Pixel Planes 5架構(1989)的一部分完成。
Pixel Planes 5項目驗證了基於圖塊的方法,並發明了很多現在被視為基於圖塊渲染器的標準的技術。這是該領域中被其他文章廣泛引用的成果。
基於圖塊的方法在軟體渲染的早期就已被了解。Reyes渲染架構的實現就將圖像劃分為圖塊桶(tile buckets)。
商業產品 - 桌面和控制台
在開發桌面GPU的早期,幾家公司開發了圖塊式架構。隨著時間的推移,這主要被能快速定製外部記憶體系統的即時模式GPU取代。
主要的例子有:
- Microsoft Talisman(1996)
- Dreamcast(由PowerVR晶片組支持)(1998)
- Gigapixel GP-1(1999)
- Intel Larrabee GPU(2009)(已取消)
- PS Vita(由PowerVR晶片組支持)(2011)
- Nvidia基於Maxwell架構及之後架構的GPU(2014)
使用片上大緩衝器的非圖塊式架構的例子有:
商業產品 - 嵌入式
由於相對較低的外部記憶體頻寬和片上記憶體容量的需求,圖塊渲染是常用於嵌入式GPU的技術。目前的例子有:
基於圖塊的即時模式渲染(TBIM):
基於圖塊的延遲渲染(TBDR):
- Imagination TechnologiesPowerVR5/6/7系列。
- 博通VideoCore IV系列。
Vivante生產具有緊密耦合的幀緩衝器記憶體的移動GPU(類似上面描述的Xbox 360 GPU)。雖然這可以用於渲染螢幕部分,但是所渲染的區域的大尺寸使它們通常不被描述為使用基於圖塊的架構。