DirectX 11

技術

最近,DirectX 11的推出在市面了引起了強烈的關注,而您聽到的關於它的最大的一個新功能就是曲面細分。 從概念上說,曲面細分是相當簡單的,即將一個多邊形切成小塊。 但這有什麼了不起的呢? 它又能如何讓遊戲從中受益? 在本文中,我們將討論曲面細分為何將對PC上的3D顯卡產生深刻的影響,以及(NVIDIA GeForce)GTX 400系列GPU何以能提供突破性的曲面細分性能。

從本質上說,曲面細分是一種對多邊形進行分解的方法,而新產生的三角形將用於描繪新信息。

要這些新三角形投入使用,一種最簡單、最常用的方法就是貼圖置換技術。 貼圖置換(displacement map)是一種用於存儲高度信息的紋理。 當紋理應用於表面時,它允許表面頂點根據高度信息向上或向下轉移。 例如,藝術家可以在一塊大理石板上通過頂點移位來創建雕刻品。 另一種流行的技術是在地形上應用貼圖置換來刻畫隕石坑、峽谷和山峰。

在平面上應用貼圖置換(左)時,最終形成的平面(右)會傳達貼圖置換中的高度信息。

類似於曲面細分,貼圖置換已經存在了很長一段時間,但直到最近才開始真正流行起來。 其原因在於,表面必須由大量頂點構成才能讓貼圖置換生效。 以大理石雕刻為例,如果大理石塊由八個頂點構成,那麼它們之間的相對位移量不足以創建一個真實的龍雕。 只當基礎模型中存在足夠的頂點時,才能夠創建一個精細的雕刻。 從本質上說,貼圖置換需要 曲面細分,反之亦然。

借助DirectX 11,曲面細分和貼圖置換最終完美地融為一體,並且開發人員已經開始順應這一趨勢。 類似的流行遊戲《Alien vs. Predator》《地鐵2033》會通過曲面細分創建平滑的模型,並且Valve和id Software的開發人員已經預見性地在他們的已有遊戲角色上應用了這些技術。

一個粗糙模型(左)在經過曲面細分之後產生了一個平滑的模型(中)。 應用貼圖置換之後(右),遊戲角色具有了電影般的逼真度。 © Kenneth Scott, id Software 2008

由於DirectX 11曲面細分流水線是可編程的,因此它可以用於解決大量的圖形問題。 讓我們來看看四個例子。

完美的凹凸貼圖

從本質上說,貼圖置換可以作為現有凹凸貼圖技術的替代方案。 現有的普通映射等技術會通過更好的像素著色來創建凹凸不平的表面。 所有這些技術只適用於一些特定的情況,並且其效果只能說是差強人意。

基礎模型

凹凸貼圖

貼圖置換

我們以視差遮蔽映射為例,它是一種非常先進的凹凸貼圖形式。 它可以產生幾何體重疊的視覺效果,但僅適用於平面和物體內部。 真正的貼圖置換技術不存在這些問題,並且在任何角度上都可以產生精確的結果。

Smoother Characters

與曲面細分結合使用的另一項技術是細化算法。 在曲面細分的幫助下,細化算法可以將一個粗糙模型打造成一個更加平滑的模型。 一個常見的例子是PN-Triangles(或稱作N-Patches)。 PN-Triangles算法可以將低解析度模型轉換為曲面,而這些曲面隨後又通過曲面細分形成更加精細的三角形。 在這些算法的幫助下,如今遊戲中的角色、多邊形車輪和粗糙表面的視覺假象都將得到消除。 例如,《Stalker: Call of Pripyat 》使用PN-Triangles創建了更加平滑真實的角色。

無需藝術家輸入,PN-Triangles便會自動為角色賦予平滑效果。 幾何和照明的逼真度都大為改善。

無縫細節水平

在使用大型開放環境的遊戲中,您可能會注意到遠處的物體經常忽隱忽現。 這是因為遊戲引擎在不同細節水平(LOD)之間來回切換以控制幾何負載所致。 目前為止,還沒有一種簡單的方法可持續改變細節水平,因為這需要為相同模型或環境維持許多不同的版本。 動態曲面細分可以動態地改變細節水平,從而解決了這一問題。 例如,當遠處的建築物第一次映入眼簾時,可能只會呈現十個三角形。 當您走近建築物時,其主要特點會隨之出現,並且系統需要使用更多的三角形來繪製細節,比如窗戶口和屋頂。 當您最終走到門口時,僅僅呈現一個銅製把手就需要使用一千個三角形,其中每個槽都是通過貼圖置換嚴謹地雕刻而成。 動態曲面細分可消除物體閃動,並且遊戲環境可以幾近無限地擴展幾何細節。

可擴展藝術品

對於開發人員來說,曲面細分可顯著提高其內容創作流水線的效率。 在描述自己使用曲面細分的動機時,Valve的Jason Mitchell表示:「我們感興趣的地方是設計可上下伸縮的的物體的能力。 也就是說,我們僅需建立一個模型,然後它便可以擴展到與電影相當的質量...相反,我們希望能夠自然伸縮物體的質量,以滿足在特定系統中實時渲染的需求。」由於只需創建一個模型便可在各種不同的平台中使用它,因此這種能力就意味著開發時間更短,並且可幫助PC遊戲玩家在其GPU上實現最高的圖像質量。

GeForce GTX 400 GPU如何實現曲面細分

傳統的GPU設計採用單一幾何圖形引擎來執行曲面細分運算。 這種方式類似早期GPU採用單一像素流水線來執行像素著色的設計。 像素流水線從早期的單個單元發展至後來的多個並行單元,對3D逼真度產生了非常積極的影響。借鑒這一經驗,我們從一開始便設計了自己的並行曲面細分架構。

GeForce GTX 400 GPU採用多達十五個曲面細分單元,每個單元都使用專用硬件實現頂點提取、曲面細分和坐標轉換。 4個並行光柵引擎能夠將剛剛經過曲面細分的三角形轉化為非常細緻的像素流以進行著色。 如此一來,便實現了突破性的Tessellation(曲面細分)性能,每秒最多可處理16億個三角形。 獨立網站Bjorn3D的測量結果顯示,與最快的同類產品相比,GeForce GTX 480最高速度可達7.8倍

結論

經過多年反覆試驗,曲面細分終於在PC上得以實現。 《地鐵2033》等遊戲大作已經展示出了曲面細分的驚人潛力。 隨著時間的推移,曲面細分必將成為素著色所必不可少的重要因素。 認識到其重要性之後,NVIDIA已經開始著手建立平行曲面細分架構。 其成果便是GeForce GTX 400系列GPU——該產品在幾何圖形逼真度和曲面細分性能上取得了真正的突破。