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