刨根問底!曲面細(xì)分技術(shù)到底是個(gè)啥?
文字寫道這里,相信大家應(yīng)該明白,曲面細(xì)分技術(shù)確實(shí)可以幫助用戶獲得更好的畫面質(zhì)量,簡(jiǎn)單的說,是個(gè)有用實(shí)用的好技術(shù)。但是很多好技術(shù),由于在實(shí)際運(yùn)用中遇到了種種問題,最后也是無疾而終,曲面細(xì)分是否也會(huì)遇到同樣的問題而夭折呢?特別是對(duì)于游戲開發(fā)商而言,一個(gè)技術(shù)是否容易被使用才是他們更關(guān)心的,容易使用和好效果之間,開發(fā)商往往選擇前者,特別是PC游戲開發(fā)商,大部分都是在工期+預(yù)算的雙重壓力下趕工,好用可能是他們?cè)u(píng)價(jià)一種新技術(shù)的唯一標(biāo)準(zhǔn),因?yàn)槟悴荒苤竿教幎际潜┭教幎际巧絻?nèi)一典的《GT5》。
前文我們明確了曲面細(xì)分能帶給來的兩種提升畫質(zhì)的方式,在下面的章節(jié)中我們將分開闡述這兩種方式中可能遇到的問題,以及曲面細(xì)分能否解決或者如何解決。
從容易使用的角度看,曲面細(xì)分自動(dòng)生成大量的多邊形數(shù)量去實(shí)現(xiàn)模型的圓滑效果,這個(gè)對(duì)于開發(fā)人員而言應(yīng)該是非常容易使用的,所以開發(fā)商接受起來并不難。
但是這里產(chǎn)生了一個(gè)很有趣的問題,由于產(chǎn)生多邊形是自動(dòng)的,可以說產(chǎn)生圓滑效果也是自動(dòng)的,如何控制哪里不產(chǎn)生圓滑效果反而是開發(fā)人員需要考量的問題,看似可笑,實(shí)際上這樣的問題確實(shí)存在,并且扼殺過一些曲面細(xì)分的早期版本。
如果是對(duì)于顯卡發(fā)展比較了解的用戶可能會(huì)記得AMD在RADEON 8500時(shí)代推出的Truform技術(shù),實(shí)際上這也是一種曲面細(xì)分技術(shù),只不過它僅僅是只能自動(dòng)生成多邊形而已,缺乏相對(duì)應(yīng)的控制手段。在AMD的演示中,Truform確實(shí)可以把一些看起來見棱見角的模型進(jìn)行優(yōu)良的圓滑處理,但在實(shí)際游戲中,這種“地毯式”的圓滑處理就暴露出了問題。
當(dāng)時(shí)最知名的Truform BUG就是在《英雄薩姆》中,將本開線條硬朗的機(jī)槍“圓滑”了,使得我們的英雄端著一把很有喜感的圓肚沖鋒槍周旋于滿屏幕的怪物中。也正是由于這個(gè)原因,Truform失敗了。
而DX11中的細(xì)分曲面技術(shù),在開發(fā)階段就已經(jīng)看到了前人翻船的水坑,最大限度的避免同類問題發(fā)生。這也就是在DX11渲染管線中不僅僅增加了Tessellator單元,還在之前加入了Hull Shader的作用。Hull Shader作為一個(gè)控制器,可以根據(jù)開發(fā)者的意圖,去判斷哪里需要增加多邊形達(dá)到圓滑的效果。
這種判斷實(shí)際上也并不困難。在細(xì)分曲面出現(xiàn)前,一個(gè)多邊形數(shù)量不高,但又需要圓滑效果的模型,一般都是用軟邊(Soft Edge)、硬邊(Hard Edge)的方式去實(shí)現(xiàn)。實(shí)際上,也就是通過對(duì)發(fā)現(xiàn)的操作達(dá)到圓滑顯示的效果。
我們可以通過上圖去說明這是如何實(shí)現(xiàn)的。同樣的一個(gè)模型,多邊形數(shù)量并不多,左側(cè)的模型進(jìn)行了軟邊處理,使得模型看上去圓滑了很多;右邊的是原始的,或者說是硬邊處理的模型,能清楚的看到模型上的棱角。
在很早以前,游戲中就已經(jīng)采用了這種技術(shù),而軟邊和硬邊的操作在法線上是不同的,而Hull Shader就可以根據(jù)程序員的指令去判斷這種差異,并告知Tessellator該為哪個(gè)模型或者模型的哪個(gè)部分去進(jìn)行曲面細(xì)分,從而達(dá)到可控圓滑模型的效果??煽匦猿蔀榱薉X11曲面細(xì)分勝于之前同類技術(shù)的關(guān)鍵。
關(guān)注我們
