泡泡網顯卡頻道8月13日 有競爭的地方總會有爭吵,雖然偶爾感覺聒噪,但也總比鴉雀無聲來的好些,畢竟說明這地方還有人煙,還有關注。
都在說DIY市場受到了整機,特別是筆記本很大的衝擊,但一個DX11的發布,還是引來了NVIDIA和AMD雙方聲嘶力竭的對吼,顯然說明這個市場還是蓬勃的,至少大家還都很重視,不願輕易輸這一陣。我們也樂見雙方這樣的爭吵出現,畢竟這表示它們沒有倦怠,還在通過產品技術的升級進行著宿命般的偉大競爭。
但猶如神仙打架,我們這些凡人也只是看著天上彩雲飛舞,雷電交加,熱鬧看夠卻不知其然。不小心哪位神仙的天兵跌落凡間,沒準還要殃及無辜。就好象這次雙方的DX11大戰,不管是率先發難的AMD還是奮起直追的NVIDIA,都把焦點集中到了一個很長的名字上——Tessellation!口水仗打了不少,其實也沒幾個普通使用者瞭解這是個啥,有啥作用。這個名詞普遍被接受的中文翻譯叫做“曲面細分”,在專業領域也往往被稱作“鑲嵌”,由於國內IT媒體普遍採納了“曲面細分”這樣一個稱呼,所以在後文中,我們也從善如流,使用這個稱謂。
實際上,曲面細分絕不是DX11更新的全部內容,從某種角度看,甚至稱不上最具革命性的更新。那為什麼A/N雙方對於曲面細分這樣的在意,寸土不讓,NVIDIA以GTX400系列擁有超強的曲面細分效能而自居,而AMD在開始推廣DX11顯卡時也把重點放在了對它的訴求上,甚至目前被最廣泛使用的DX11測試程式Heaven也基本是圍繞著曲面細分來做文章?
簡單的講,雖然在改善增強畫質方面DX11有不少新特性,但在短期內可以立竿見影看到效果,遊戲開發商最容易掌握的就是曲面細分技術。這種容易使用又能出效果的東西,在DX11普及的漫長的初級階段,將會是最能代表DX11效果和效能的技術,自然會引來各方關注。所以大家也就理解了為什麼NVIDIA和AMD在這個問題上爭吵不休了。
那曲面細分到底是什嗎?能為我們這些普通玩家帶來什嗎?這正是本文要重點講述的內容,讓大家知其然後,自己判斷它能否左右您的選擇。
DX11中的曲面細分引擎
當廠商以及使用者開始神話曲面細分的時候,可能它自己都沒想到能有這樣出人頭地的一天。實際上曲面細分也是DX11收編的“散兵遊勇”。
曲面細分最早出現在專業領域,在蟄伏了多年後,終於被AMD引入到PC圖形技術中,通過R600系列的發布,見諸於案頭圖形市場。但由於沒有微軟給予的官方身份,專屬性太強,無論是其它圖形核心生產廠商,還是遊戲開發商,都很難也不願意去跟進這樣的技術。幸好AMD為微軟打造的XBOX360圖形核心Xenos採用了它,由於主機市場的封閉性,所以XBOX360的大量遊戲中都採用了曲面細分技術,微軟親自體驗到了它的好處,並終於在DX11中收編,通過自己的標準強勢推廣,否則還真不知道它要在邊緣徘徊多久。
實際上,我們所說的曲面細分的作用,只是機械的為一個多邊形模型增加更多的多邊形數量,這就是其核心內容,如果不加前後期控制,這樣的技術對於增益圖形效果起不到任何作用,對於效能反而還會起到負面影響。
之所以在DX11中,曲面細分會有改善畫質的作用,我們通過一張DX11流水線圖的觀察就能發現其原因。在增加了Tessellator外,流水線前面還多出了Hull Shader後面還增加了Domain Shader兩個模組,也就是說要想通過曲面細分獲得圖形效果提升,必須在曲面細分前後加以人工控制,不能任由其發揮。
對於Hull Shader、Tessellator、Domain Shader這三個新加入的單元的作用,上面這張圖給予了較為明確的回答。Hull Shader主要負責定義細分等級(LOD)和相關控制點在細分中的“形變”趨勢,這裡的形變之所以加引號,是要說明這種形變僅僅是類似於曲率改變等小幅度的變化,而非大幅度的多邊形位移;Tessellator則負責根據HS傳輸下來的資訊,通過暴力增加多邊形去實現HS的要求;Domain Shader負責的最重要的功能就是通過貼圖控制的方式,實現模型的形變,也就是我們大家在DX11的細分曲面中看到的高細節畫面。
通過上述的分析,大家應該可以得出一個結論,實際上細分曲面負責的僅僅是為後續的提升畫質的運算提供物質基礎,無論是置換貼圖和凹凸貼圖,都需要有大量多邊形的存在才能實現。試想,如果開發人員想在一個三角形上通過置換貼圖實現一座城市的地貌效果,空有精美的置換貼圖,區區三個頂點如何形變展開?巧婦難為無米之炊,但如果給你100000個頂點呢,事情就容易多了。
實際上,從使用者的角度講,這一段的內容並不重要,從曲面細分上獲得什麼樣的快樂才是他們關心的,而非原理。
曲面細分——更光滑的模型
我們已經知道,曲面細分的作用是在原有模型上,將多邊形數量大幅增加。一個原來只有100個三角形構成的模型,突然間被賦予了100000個三角形,遊戲開發人員能如何利用這些多出來的免費資源?或者說,玩家如何看出100000個多邊形的模型和100個多邊形模型的區別?
由於現在案頭級圖形技術都是基於多邊形建模原理,所以無論是四邊形、三角形、圓形,還是任意形狀,都是由數量有限的三角形構成的。這就導致我們經常會發現物體,特別是本應圓滑的物體出現生硬的邊緣,即使粗看下是圓滑的邊緣,在放大觀察的情況下,也是由一條條直線串連而成,這都是因為多邊形數量不足造成的。如果想要獲得能欺騙視覺的圓滑效果,就必須將多邊形數量提升到一定程度。
舉個例子,現在不再火熱但卻更加風情萬種的勞拉小姐,在《古墓麗影》第一代中出現的時候,全身都是“硬朗”風格的直線條,號稱肌肉美女。但並不是遊戲開發人員希望把勞拉變成史泰龍,而是在當時圖形運算能力極為有限的情況下,多邊形數量必須嚴格控制,否則遊戲速度就不能得到保證。而在最新的《古墓麗影》版本中,由於硬體機能的極大提升,多邊形已經不是遊戲開發人員值得顧慮的問題,勞拉又迴歸了最初設定的性感豐滿,只是玩家的熱情和遊戲的素質不再了。
還有,當年最紅的FPS遊戲《Quake III Arena》,當我們把幾何細節開到最高的時候,包括門洞等模型都將呈現出比較圓滑的過度,而當幾何細節降低後,依然是醜陋的三腳邊。雖然id software給這種技術其了很拉風的名字,但實際內容還是通過更多的多邊形去近似描繪圓滑表面。
以上的兩個例子都說明了一個問題,當多邊形數量提升後,我們將會獲得更平滑圓潤的模型,而曲面細分正式能相當輕鬆的提供給遊戲開發人員數量極為龐大的多邊形去使用,結果自然是讓100個三角形的簡陋模型變成了100000個三角形的圓潤模型。玩家看到的圖形效果也就獲得了提高,這正是細分曲面提升畫質的第一重作用。
曲面細分——更多細節的模型
同樣還是那個由100個三角形組成的模型,同樣還是免費的將它升級到100000個三角形,但是這個模型從勞拉變成了怪獸,我們不再需要圓滑,而是豐富可信的細節,這100000個多邊形能有什麼作用?
很多使用者都知道凹凸貼圖(Bump Mapping)、法線貼圖(Normal Mapping)等技術,可以通過貼圖的方式提升模型的細節。但是這些貼圖技術只是通過欺騙肉眼的方式類比出細節,而且不能進行深度較大的視角位移或者拉近觀看,否則很容易看出破綻,因為它們都不能對模型本身做任何處理,可以說是光影的欺騙術。
而通過曲面細分技術產生的數量巨大的多邊形,就給了模型一個“重生”的機會,以為更多的頂點可以通過人工控制的方式實現真實的頂點位移,直接對模型的外形產生影響,讓模型具備真實可信的細節。而利用這大量免費多邊形產生模型頂點位移的技術就被稱作置換貼圖(Displacement Mapping)。
置換貼圖是通過一張深度貼圖(實際上可以理解為一張黑白貼圖,通過黑白深淺的不同來確定對應的頂點的位移量),來控制通過曲面細分產生的大量頂點,製造出實際的模型位移,使得模型的細節大幅提升,明顯改善畫面品質。從實際的意義和效果上說,這將遠比簡單的平滑模型來的更重要,對於畫面的改善效果也更明顯。
舉個例子來說明更容易理解。以目前被廣泛使用的DX11測試軟體Heaven而言,在開啟曲面細分後(實際上是開啟了曲面細分+置換貼圖的組合),畫面的細節程度被極大的提升了,無論是地磚的溝槽還是紅龍身上的褶皺骨骼細節,都被細緻的描繪了出來,而且由於是通過對模型頂點的位移操作,這些多出來的細節還能產生真實的陰影等效果。反觀在關閉曲面細分選項後,一切歸於平靜,城市不再華麗,紅龍也不再威嚴。
置換貼圖由於需要大量的頂點去進行位移,所以需要模型具備足夠數量的多邊形,而曲面細分做的事情也正是如此,這也就成為了它提升畫面品質的第二重作用。
繞開各種水坑
文字寫道這裡,相信大家應該明白,曲面細分技術確實可以協助使用者獲得更好的畫面品質,簡單的說,是個有用實用的好技術。但是很多好技術,由於在實際運用中遇到了種種問題,最後也是無疾而終,曲面細分是否也會遇到同樣的問題而夭折呢?特別是對於遊戲開發商而言,一個技術是否容易被使用才是他們更關心的,容易使用和好效果之間,開發商往往選擇前者,特別是PC遊戲開發商,大部分都是在工期+預算的雙重壓力下趕工,好用可能是他們評價一種新技術的唯一標準,因為你不能指望到處都是暴雪,到處都是山內一典的《GT5》。
前文我們明確了曲面細分能帶給來的兩種提升畫質的方式,在下面的章節中我們將分開闡述這兩種方式中可能遇到的問題,以及曲面細分能否解決或者如何解決。
從容易使用的角度看,曲面細分自動產生大量的多邊形數量去實現模型的圓滑效果,這個對於開發人員而言應該是非常容易使用的,所以開發商接受起來並不難。
但是這裡產生了一個很有趣的問題,由於產生多邊形是自動的,可以說產生圓滑效果也是自動的,如何控制哪裡不產生圓滑效果反而是開發人員需要考量的問題,看似可笑,實際上這樣的問題確實存在,並且扼殺過一些曲面細分的早期版本。
如果是對於顯卡發展比較瞭解的使用者可能會記得AMD在RADEON 8500時代推出的Truform技術,實際上這也是一種曲面細分技術,只不過它僅僅是只能自動產生多邊形而已,缺乏相對應的控制手段。在AMD的示範中,Truform確實可以把一些看起來見稜見角的模型進行優良的圓滑處理,但在實際遊戲中,這種“地毯式”的圓滑處理就暴露出了問題。
當時最知名的Truform BUG就是在《英雄薩姆》中,將本開線條硬朗的機槍“圓滑”了,使得我們的英雄端著一把很有喜感的圓肚衝鋒槍周旋於滿螢幕的怪物中。也正是由於這個原因,Truform失敗了。
而DX11中的細分曲面技術,在開發階段就已經看到了前人翻船的水坑,最大限度的避免同類問題發生。這也就是在DX11渲染管線中不僅僅增加了Tessellator單元,還在之前加入了Hull Shader的作用。Hull Shader作為一個控制器,可以根據開發人員的意圖,去判斷哪裡需要增加多邊形達到圓滑的效果。
這種判斷實際上也並不困難。在細分曲面出現前,一個多邊形數量不高,但又需要圓滑效果的模型,一般都是用軟邊(Soft Edge)、硬邊(Hard Edge)的方式去實現。實際上,也就是通過對發現的操作達到圓滑顯示的效果。
我們可以通過去說明這是如何?的。同樣的一個模型,多邊形數量並不多,左側的模型進行了軟邊處理,使得模型看上去圓滑了很多;右邊的是原始的,或者說是硬邊處理的模型,能清楚的看到模型上的稜角。
在很早以前,遊戲中就已經採用了這種技術,而軟邊和硬邊的操作在法線上是不同的,而Hull Shader就可以根據程式員的指令去判斷這種差異,並告知Tessellator該為哪個模型或者模型的哪個部分去進行曲面細分,從而達到可控圓滑模型的效果。可控性成為了DX11曲面細分勝於之前同類技術的關鍵。
類比逼真自然情境
細分曲面另外一種提升畫質的方式是通過置換貼圖實現的,而這裡就需要大量的後期控制,也就是說在大量頂點產生後,通過什麼方式去控制這些新增加的頂點形變,以期達到我們想要的增加模型細節的目的。
實際上,控制新增加頂點形變的手段並不只有置換貼圖一種方式,只不過它是被用到最多也相對來說比較容易的,所以我們在前文中一直是用“置換貼圖”來表述形變控制。大體而言,形變控制除了用置換貼圖外,還可以使用程式控制的方式。
由於通過細分曲面新產生的大量新頂點都是實際存在的,也就是都有三維空間座標,通過一定程式的制定,就可以控制這些座標進行位移,如果說通過貼圖控制是靜態,那通過程式控制就是動態,因為在程式中我們可以加入很多種變數,讓頂點呈現不斷的變化,比如說水面或者飄動的旗幟。
通過Occean technology demo這個測試可以非常明顯的觀察到,開啟曲面細分技術,並且調節細分級數的不同,海面將呈現出明顯不同的變化。特別是當級數提升後,海面的細節就變得極為豐富逼真。實際上去控制海面變化效果的程式碼是一樣的,但是由於可控制頂點數量的不同,所以呈現出來的效果也就出現了不同,這就是曲面細分在這裡發揮的作用。
實際上,在DX11曲面細分技術出現之前,這類效果就已經開始被使用了。在目前依然頂著最強畫質頭銜的《Crysis》中,Crytek2引擎就採用了一種叫做Screen-Space Tessellation的技術,實際上就是通過程式去控制大量的曲面細分頂點製造出逼真的海洋效果,再配合遊戲本身出眾的光影技術,使得效果更佳逼真。
AMD在示範HD5000系列的曲面細分效果時,展示了一個經過曲面細分處理後的旗幟擁有了更自然順暢的飄動效果。這就是當頂點數量增加後,通過重力、風等物理程式控制的效果更佳連貫的結果。
展現高細節模型的威力
雖然通過程式控制頂點形變效率很高,但是這種效果只能適用於無序、大面積的情境中,比如像海洋這樣的自然地貌。如果需要針對特定的模型,進行特定的控制,比如說遊戲人物,我們還是要動用前面說過的置換貼圖技術。而置換貼圖本身實際上又可以分為兩種不同的方式去操作。
所謂的兩種方式,實際上是指用以置換的貼圖獲得方式的不同,這對於使用者而言是不可見的差別,但對於遊戲開發商而言,就存在難以的差別。
第一種方式,實際上在早前的一些遊戲引擎的介紹中,已經講述過很多次,只不過當時我們談論的不是置換貼圖,而是法線貼圖。就是在遊戲開發的前期,模型師就建立一套高細節的模型,然後通過“烘焙(BAKE)”的方式將這些細節資訊儲存成一張置換貼圖,然後在遊戲中通過這張貼圖的資訊去控制曲面細分出來的數量眾多的頂點。實際結果就是一個低多邊形模型通過曲面細分+置換貼圖達到了與高細節模型相同的效果。
這種方式可以獲得效果最佳的置換貼圖,但開發商要在前期建立一個高細節模型,其開發成本實際上並沒有太多的降低。不過隨著像ZBrush這類建模軟體的成熟,製作一個高細節模型也並不是什麼太複雜的事情了。以上是《虛幻3》中的法線貼圖製作流程,實際上和置換貼圖的製作過程一樣。
第二種方式,就讓遊戲開發商非常省心省力了,因為根本就不用製作專門的置換貼圖,這樣就節省了大量的開發成本和開發週期。
我們都知道一般模型至少會有一張色彩貼圖,而色彩貼圖中的Alpha通道所包含的資訊,就可以直接當作置換貼圖使用,當然如果利用凹凸貼圖去做效果會更好一些。就是利用專業圖形軟體MAYA去簡單展示的利用色彩貼圖中Alpha通道資訊去控制頂點的效果。
當然,這種貼圖本身所包含的資訊並不是針對頂點位移控制建立的,所以在精度上不是很高,用來對人物模型使用可能並不合適。但對於情境,比如像Heaven中的地轉,牆壁等部位使用就非常合適了,其效果與專用的置換貼圖相差無幾。
我們需要曲面細分
通過這篇文章,我們盡量希望通過簡單的語言描述,為大家去講解DX11中曲面細分的作用和意義,以及對於使用者而言可以獲得哪些實際的畫面提升感受,並針對這些技術是否容易被開發商採用而廣泛的出現在更多的遊戲作品中。
大量使用曲面細分技術的《天堂2.0》中,N卡遙遙領先於A卡
相信大部分讀者已經認同,曲面細分是一項很優秀的技術,但是曲面細分實際上只是一個中間過程,並非我們最後看到的結果。曲面細分產生的大量多邊形,在人為控制下產生的各種形變才是改善畫面品質的根本因素,這是一個相輔相成的過程。
對於開發商而言,一款好技術如果不容易使用,也會被拋棄。而在我們分析的幾種情況下,曲面細分實際上都還算是容易使用的,而且在之前開發商通過其它同類相關技術已經積累了不少經驗,相信在未來的遊戲中我們會越來越多的看到由曲面細分技術為我們帶來的驚豔視覺效果。
是個好技術,容易被使用,確實能夠改善畫面品質,那結論自然是使用者需要曲面細分,而且會越來越多的需要。這就告訴了我們一個現實的問題,當遊戲越來越多的使用曲面細分的時候,顯卡本身是否有足夠強大的曲面細分引擎就成為了關鍵。雖然目前NVIDIA和AMD都已經推出了DX11層級的顯卡產品,但在測試中已經表明,NVIDIA GTX400系列顯卡擁有明顯超越對手的曲面細分能力,這在未來的應用中將會協助使用NVIDIA GTX400顯卡的使用者獲得更好的遊戲體驗。■