刨根問底!曲面細分技術到底是個啥?
文字寫道這里,相信大家應該明白,曲面細分技術確實可以幫助用戶獲得更好的畫面質量,簡單的說,是個有用實用的好技術。但是很多好技術,由于在實際運用中遇到了種種問題,最后也是無疾而終,曲面細分是否也會遇到同樣的問題而夭折呢?特別是對于游戲開發商而言,一個技術是否容易被使用才是他們更關心的,容易使用和好效果之間,開發商往往選擇前者,特別是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曲面細分勝于之前同類技術的關鍵。
關注我們



