Tessellation

Tessellation

Tessellation細分曲面技術是AMD(ATI)常年研發多代的技術,經過多年發展最終被採納成為DX11的一項關鍵技術,因此歷來都是宣傳重點。和光線追蹤不同,現在的光柵化圖形渲染技術的核心是繪製大量三角形來組成3D模型,而Tessellation技術就是利用GPU硬體加速,將現有3D模型的三角形拆分得更細小、更細緻,也就是大大增加三角形數量,使得渲染對象的表面和邊緣更平滑、更精細。

技術

Tessellation一詞相信大家並不陌生,早在DX9C時代,微軟XBOX360遊戲主機中由ATI設計的Xeno顯示晶片就支持;從DX10時代到DX10.1時代,ATI HD2000/3000/4000系列顯示卡全都整合了一個叫做Tessellator的模組,雖然當時沒有任何遊戲能夠支持該技術,但ATI通過幾個演示Demo展現了Tessellation技術的魅力。

事實上,在更早的DX8時代,ATI就已經和微軟聯手開發了TruForm(N-Patch)技術,也就是Tessellation的前身,並被納入DX8.1的範疇。但由於該技術有一些不可控制的BUG,因此被DX9和DX10無情的拋棄了。

Tessellation之所以未成氣候,就是因為此前的技術還不夠完善,另外GPU處理能力不足也是一大因素,因此ATI即便有微軟的鼎力相助,也未能將該技術發揚光大。到了DX10時代,ATI雖然在全線GPU當中整合了Tessellator模組,無奈孤掌難鳴,並沒有得到遊戲開發商的支持。

直到DX11時代,GPU自身的性能有了長足的進步,硬體上真正具備了細分曲面的實力,再加上微軟重新改寫API渲染流程,專為Tessellation開闢了新的著色器,這才讓Tessellation技術得以重見天日。

原理

Tessellation這個英文單詞直譯為“鑲嵌”,也就是在頂點與頂點之間自動嵌入新的頂點。Tessellation經常被意譯為“細分曲面”,因為在自動插入大量新的頂點之後,模型的曲面會被分得非常細膩,看上去更加平滑緻密。它是一種能夠在圖形晶片內部自動創造頂點,使模型細化,從而獲得更好畫面效果的技術。Tessellation能自動創造出數百倍與原始模型的頂點,這些不是虛擬的頂點,而是實實在在的頂點,效果是等同於建模的時候直接設計出來的。

Tessellation技術是完全可程式的,它提供了多種插值頂點位置的方法來創造各種曲面:

1. N-Patch曲面,就是和當年TruForm技術一樣,根據基礎三角形頂點的法線決定曲面;

2. 貝塞爾曲面,根據貝塞爾曲線的公式計算頂點的位置;

3. B-Spline、NURBs、NUBs曲線(這三種曲線均為CAD領域常用曲線,在Maya中均有相應工具可以生成)

4. 通過遞歸算法接近Catmull-Clark極限曲面。

Tessellation技術最初主要被用以“細分曲面”,隨著該技術被納入DX11範疇,得到大範圍推廣之後,插值頂點的算法也越來越多,因此用途也越來越廣,產生了很多非常有創意的套用。

Tessellation技術還經常與Displacement Maps(貼圖置換)技術搭配使用,從而將平面紋理貼圖改造成為具有立體感的幾何圖形,大大增強3D模型或場景的真實性。

除了大幅提升模型細節和畫質外,Tessellation最吸引程式設計師的地方就是:他們無需手動設計上百萬個三角形的複雜模型,只需簡單勾繪一個輪廓,剩下的就可以交給Tessellation技術自動鑲嵌,大大提高開發效率;而且簡單的模型在GPU處理時也能大幅節約顯存開銷,同時大幅提升渲染速度!

發展

Tessellation的改進

ATI的HD2000以上級別顯示卡其實都具備Tessellation的功能,但它們卻無法與DX11中的Tessellation技術相兼容。這是因為微軟並沒有原封未動的將R600的Tessellation技術抄到DX11之中,而是對其進行了最佳化,使之能與渲染流程完美的結合在一起,可以更高效率的細分出更多的多邊形和曲面。

與DX9C/DX10時代孤零零的Tessellator模組不同,在DX11當中,微軟加入了兩種全新著色器來全力配合Tessellator的工作,分別位於鑲嵌器的前後。

其中Hull Shader(外殼著色器)用來控制自動生成頂點的數量和算法,也就是Tessellator的細分級別,然後交給Tesselator進行鑲嵌處理,最後由Domain Shader(域著色器)按照程式要求生成所需曲面,並自動進行法線平移、置換貼圖,產生新的模型。

與DX9/10中的Tessellation技術相比,DX11新增的兩種著色器都受統一渲染架構支配,因此處理能力非常富裕,DX11版Tessellation不僅效率更高、而且細分級別更豐富。但是,更高的細分等級對Tessellator模組本身的處理能力提出了苛刻要求,這需要晶片廠商在設計之初就考慮周全,在本文架構解析部分,筆者會詳細分析ATI和NVIDIA兩者的設計思路。

Tessellation的前景

Tessellation技術所實現的功能並沒有局限在“細分曲面”的範圍內,隨著DX11逐漸走向普及,開發商和程式設計師基於新的API開發遊戲時,更多有創意的套用將會呈現在大家面前。

相關詞條

相關搜尋

熱門詞條

聯絡我們