GeForce
 

DirectX 11 Tessellation—何謂曲面細分(tessellation),以及它為何如此重要?

隨著DirectX 11成為最近的熱門話題,您可能已經耳聞它那大名鼎鼎的新特性:曲面細分(tessellation)。做為一種概念,曲面細分其實很容易了解 — 也就是將一個多邊形切成小塊。但是這有什麼大不了的?以及,它對遊戲有何貢獻?在此篇文章中,我們將說明曲面細分(tessellation)可能會為個人電腦3D繪圖帶來深遠變革的原因所在。

就根本而言,曲面細分(tessellation)是一種將多邊形細分為碎片的方法。例如,如果你將一個正方形沿對角切開,則你已經將此正方形「曲面細分 (tessellation)」為兩個三角形。就其本身而言,曲面細分 (tessellation)並無法提升逼真程度。例如,在一款遊戲中,一個正方形是被渲染為兩個三角形,或是兩千個三角形都是沒有影響的 — 唯有在使用新三角形描繪新資訊時,曲面細分(tessellation)才會對逼真度的提升有所幫助。

Triangle Mapping Displacement Mapping
當位移貼圖(左)作用於平滑的表面時,則處理完成的表面(右)會表現出存於位移貼圖中的高度資訊。

利用三角形之最簡單及最普及的方法是一種被稱為位移貼圖(displacement mapping)的技術。位移圖(displacement)是儲存高度資訊的紋理。當應用於某一表面時,此技術讓表面的頂點能夠根據高度資訊向上或向下「位移」。例如,繪圖設計人員可以「位移」一塊大理石板的頂點以形成雕刻效果。另一個常用的技術則是將位移貼圖(displacement mapping)應用於地形上,藉以刻劃出隕石坑、峽谷和山峰。

如同曲面細分 (tessellation),位移貼圖(displacement mapping)已存在一段很長的時間,但是直到最近,此技術的使用才真正普及。其中的理由在於,對於位移貼圖 (displacement mapping)而言,若要發揮作用,則表面必需是由大量的頂點所構成。以大理石雕刻為例—若大理石塊是由八個頂點構成,則其間就沒有足夠的相對位移量足以製造龍形浮雕。唯有在基本網格具有足夠的頂點,可以分切成新形狀的情況下,才能形成細緻的浮雕。就實質而言—位移貼圖 (displacement mapping)需要曲面細分 (tessellation),反之亦然。

隨著DirectX 11問世,曲面細分 (tessellation)和位移貼圖(displacement mapping)終於有了快樂的結合,且開發商已紛紛投入這個領域。熱門的遊戲,例如《異形大戰鐵血戰士 (Alien vs. Predator)》以及《地鐵2033 (Metro 2033)》已使用曲面細分 (tessellation)以創造外表平滑的模型,再者,Valve和id Software等開發商也已進行一些頗有前瞻性的工作,將這些技術應用於他們現有的遊戲角色上。

Coarse Model
粗糙的模型經由曲面細分(tessellation)處理後,平滑的模型得以產生(中)。若採用位移貼圖 (displacement mapping),則角色會呈現如同電影般的真實度。 Kenneth Scott, id Software 2008版權所有

由於Directx 11曲面細分 (tessellation)流程為可程式化,因此它能被用以解決大量的繪圖問題,讓我們來看看以下四個例子。

完美的凹凸貼圖

Model Comparision

就最基本而言,位移貼圖(displacement mapping)能順勢替代現有凹凸貼圖(bump mapping)技術。目前的技術,例如法線貼圖(normal mapping)為透過較佳的像素著色(pixel shading)創造出崎嶇表面的圖像效果。然而所有這些技術僅在特定情況中發生作用,且它們發揮作用時,僅有部分是確實達到效果的。以這三者中最先進的技術---視差遮蔽貼圖(parallax occlusion mapping)而言,雖然它能以幾何形狀的重疊形成所需圖像,但是它僅能在平坦的表面上以及物體內部發揮效果(請見以上圖片)。真正的位移貼圖(displacement mapping)不會出現這些問題,能從所有視角產生精確的結果。

平滑的角色線條

Smoothing Character
設計人員毋需輸入資料,PN-Triangles便能自動讓角色的線條平滑化。幾何形狀及光線真實度皆獲得改善

曲面細分 (tessellation)的另一最佳拍檔是精鍊演算法(refinement algorithm)。在曲面細分 (tessellation)的協助下,精鍊演算法可將粗糙的模型改造為具有平滑外表的模型。一個很普及的例子是PN-Triangles (亦被稱為 N-patches)。PN-Triangles演算法將低解析度模型轉化為有曲線的表面,之後這些表面會被重繪為由細緻的曲面細分三角形所構成的網格。存在於現今遊戲中,許多被我們視為無可避免的視覺缺陷 ,例如塊狀的人物關節、多邊形的賽車車輪以及粗糙的面部特徵等,都能在此種演算法的協助下加以消除。例如,PN-Triangles便被用於《浩劫殺陣3:渾沌召喚(Stalker: Call of Pripyat) 》中,藉以創造出更平滑、更栩栩如生的角色。

無縫的細緻呈現

在具有大型、開放式環境的遊戲中,你可能會注意到遠處的物體常常會突然出現又突然消失。這是因為遊戲引擎會在不同等級的精細度或層級精細度(LDO)間切換,時時進行幾何工作負載的確認。直到彼時,都還沒有可以輕易持續改變精細度的方式,因為這必需要能保存同一模型或環境的眾多版本。動態曲面細分 (tessellation)則藉由即時改變精細度來解決這個問題。例如,當一棟位於遠方的建築物首度映入眼簾時,它可能只是以十個三角形渲染而成。隨著你逐漸靠近,這棟建築物的特癥開始顯現,此時便需使用更多的三角形去呈現細緻的線條,例如它的窗戶和屋頂。當你最後到達門口時,僅僅渲染一個古銅門把便需動用上千個三角形,利用曲面細分 (tessellation)技術,可以精心刻畫出每一道凹槽。由於動態曲面細分物體不會再時隱時現,因此遊戲環境的精細度幾乎可以不受限制的擴增。

可靈活調整的作品

對開發商而言,曲面細分 (tessellation)可大幅提升他們的內容創作流程的效率。當談及使用曲面細分 (tessellation)的動機時,Valve的Jason Mitchell表示:「我們對於創作內容這一點很感興趣,這讓我們可以進行縮放。也就是說,我們只需要建構模型一次,就能將其提升至電影的畫質…….反過來說,我們也想要能自然地降低內容的畫質,以符合特定系統對於即時渲染的需求。」此種僅需建構模型一次便能將之用於各種平台的能力,意謂著開發時間的縮短,而對於PC遊戲業者而言,則意謂著能在他們的GPU上達到最高的畫質。

GeForce GTX 400 GPU如何處理曲面細分 (tessellation)

傳統的GPU設計採用單一幾何引擎執行曲面細分。此方法相當類似於早期的GPU設計,亦即此利用單一的像素流程執行像素著色。NVIDIA深諳像素流程如何由一個單元增長為許多平行單元,並且知道其能為3D真實性帶來大幅進展,因此我們在一開始時便將細分取面架構設計為平行處理。

GeForce GTX 400 GPU由多達15個曲面細分單元構成,每一個單元皆具有專屬的硬體以實現頂點提取、曲面細分,並統合轉換。它們以四個平行光柵引擎(raster engines)進行運作,將產生自曲面細分的新三角形轉換為精細的像素串流,以進行著色。這便造就了曲面細分效能的一大突破 — 以穩定持續的效能每秒產生16億個以上的三角形。經由獨立網站Bjorn3D的評比,GeForce GTX 480較最快同級產品的速度快上7.8倍。

結論

在經過多年的嘗試和錯誤後,曲面細分 (tessellation)終於在PC上取得成果。諸如《Metro 2033 (Metro 2033)》等此類令人讚嘆的遊戲已充分顯示曲面細分 (tessellation)的潛力。如同像素著色一般,曲面細分 (tessellation)將在很短的時間內變得非常關鍵且無可取代。深深了解此技術的重要性,NVIDIA在一開始便以打造平行細分取面架構加速此技術的發展,成果便是GeForce GTX 400的GPU系列 ,為幾何逼真度及細分取面效能帶來了真正的突破。