包含2節(jié)視頻教程
關(guān)注3.4萬次
mari是目前為之最棒的3d材質(zhì)繪畫軟件,他支持多個繪畫通道,實時顯示法線置換貼圖,快速有效的繪畫速度,是我們選擇他的原因。
近年來3D圖形技術(shù)的發(fā)展勢頭非常迅猛,軟件方面游戲的畫面和逼真度有了長足進(jìn)步,硬件方面顯卡的更新?lián)Q代越來越頻繁。但始終存在這樣一個現(xiàn)象,無論顯卡的性能翻多少倍,游戲玩家們總感覺還是不夠強大,GPU龐大的運算能力到底被誰吃掉了呢?
答案很簡單,游戲為了提高畫面質(zhì)量、更加接近于真實世界,使用了諸多先進(jìn)的圖形技術(shù),特效的“濫用”大幅提升了游戲畫面水平,但也抵消掉了GPU性能的增長。
那么最新的圖形技術(shù)到底能給游戲帶來多少的畫面改進(jìn),對于顯卡的需求會有多夸張呢?今天筆者就將主流游戲中使用最廣泛的技術(shù)提取出來,對其原理和需求進(jìn)行詳細(xì)的分析,以饗讀者。
其實很多最先進(jìn)的游戲高級圖形技術(shù)都包括在了新版本的DirectX API當(dāng)中,或者說是通過DirectX中的Shader Model新指令集來實現(xiàn)。但這些東西并不容易理解,也不夠直觀,所以本文反其道而行之,通過肉眼可以看得出來的差別來分析DirectX版本更新對于圖形技術(shù)的改進(jìn)到底有多大?
● 為什么要加入景深——模擬鏡頭和人眼的視覺效果
使用單反數(shù)碼相機拍照的朋友應(yīng)該知道,大光圈鏡頭所帶來的背景虛化效果非常好,能夠凸出人物和景物,主次分明。其實人眼在注意觀察物體時,也會將焦距拉近,主體清晰可見但遠(yuǎn)景一片模糊,這就是通常所說的景深效果。
大多數(shù)游戲都有景深選項
3D游戲為了模擬真實,更接近鏡頭/人眼的成像原理,也將景深引入渲染過程之中。由于3D游戲只是將圖像投影在了平面的顯示器上,不會有深度,因此想要實現(xiàn)景深效果必須在圖像輸出之前就進(jìn)行預(yù)處理,把游戲主角以外的遠(yuǎn)景全部虛化。
● DX10帶來更好的景深處理
DX9時代,是通過投機取巧的方式來實現(xiàn)景深效果的,它自動判定距離,將遠(yuǎn)處景物的紋理、陰影、光照等特效全面縮水,然后再輔以模糊處理,而只對近景做正常渲染輸出,這樣就會讓玩家注意到主角而忽視遠(yuǎn)景。
而DX10則沒有任何的偷工減料,它通過幾何著色器,將深度帖圖中的紋理信息按照距離拆分到緩沖,然后分為幾個不同的視角進(jìn)行渲染,最后合成完整的圖像。因此最終實現(xiàn)的景深效果在特效方面不會有任何縮水,遠(yuǎn)景完全符合正常的虛化模式,如果仔細(xì)觀察的話,光影等細(xì)節(jié)依然得到保留。
● DX11帶來更快的景深處理
DX10的景深處理能夠?qū)崿F(xiàn)近乎完美的景深效果,但通過不同視覺渲染的方法還是不夠靈活,而且會大大增加GPU后端處理(光柵單元)的負(fù)擔(dān),產(chǎn)生負(fù)載不均的情況,導(dǎo)致性能損失較大。
而DX11則通過DirectCompute中新增的Gather4數(shù)據(jù)采集指令,使得計算著色器能夠以四倍的紋理采集速度,幫助減少GPU紋理單元和光柵單元的負(fù)擔(dān),從而在進(jìn)行景深處理時消除了瓶頸,提升渲染效率。
在GPU和CPU有能力進(jìn)行實時光線追蹤(Ray Tracing,按照真實世界光線投射原理反向渲染的技術(shù))之前,環(huán)境光遮蔽是當(dāng)今光柵化渲染模式中最好、最高效的替代方案。環(huán)境光遮蔽通過計算光線在物體上的折射、衍射、散射和吸收,在受影響位置上渲染出適當(dāng)?shù)年幱埃M(jìn)一步豐富標(biāo)準(zhǔn)光照渲染器的效果。
一些游戲支持多種環(huán)境光遮蔽模式
屏幕空間環(huán)境光遮蔽(Screen Space Ambient Occlusion,SSAO)是AO的一個變種,它通過對屏幕內(nèi)進(jìn)行簡單的空間劃分,然后進(jìn)行計算。SSAO的工作原理是:通過采樣象素周圍的信息,進(jìn)行簡單的深度值對比來計算物體身上環(huán)境光照無法到達(dá)的范圍,從而可以近似地表現(xiàn)出物體身上在環(huán)境光照下產(chǎn)生的輪廓陰影。雖然只是模擬實現(xiàn),但確實能增強場景的層次感,讓畫面更細(xì)膩,讓場景細(xì)節(jié)更加明顯。
● DX10.1大大提升SSAO效率
SSAO可以利用“逐象素場景深度計算”技術(shù)計算得出的深度值直接參與運算,也可以利用DX10.1當(dāng)中的Gather4函數(shù)實現(xiàn)更快速紋理采樣及過濾。DX10模式下開啟SSAO性能損失非常大,因此SSAO技術(shù)多出現(xiàn)在DX10.1游戲中。通過實際測試來看,DX10.1顯卡在DX10.1模式下(如果該游戲支持的話)的性能相比DX10會提升20*-30*之多,從而使得SSAO成為真正實用的技術(shù),而不再是花瓶。
● DX11帶來更高清晰度的HDAO
在DX11中,SSAO被進(jìn)一步升級至HDAO(高清晰),因為DX11中的Gather4函數(shù)更加強大,它可針對特定的顏色分別采樣,能自動識別能做陰影映射的值,從而實現(xiàn)更快更好的陰影過濾。HDAO和SSAO都能向下兼容舊硬件,但運行速度會打折扣。換句話說,DX11和DX10.1是在改進(jìn)算法、優(yōu)化性能的基礎(chǔ)上,使得顯卡有能力渲染出更復(fù)雜、更完美的特效,而DX10雖然在也能達(dá)到同樣的畫面效果,但速度會很慢,實用性不大。
● 媲美電影CG畫質(zhì)——鑲嵌式細(xì)分曲面技術(shù)
游戲和電影CG動畫,其實都是由計算機渲染出來的,那為什么畫質(zhì)差別那么大呢?這是因為CG動畫的模型要比3D游戲復(fù)雜成千上萬倍,所以CG也要成千上萬倍與電腦的性能才能渲染出來,而且還無法實現(xiàn)實時渲染。
3D游戲考慮到家用電腦的機能,模型不可能設(shè)計得太復(fù)雜,否則就不具備可玩性。但為了讓游戲變得更加逼真、達(dá)到更高畫質(zhì),太簡單的模型的確拿不出手,那么有什么方法既能大幅提升模型復(fù)雜度、又不至于給顯卡造成太大負(fù)擔(dān)呢?Tessellation技術(shù)就是為此而生的。
簡單來說,Tessellation是一種能夠在圖形芯片內(nèi)部自動創(chuàng)造頂點,使模型細(xì)化,從而獲得更好畫面效果的技術(shù)。Tessellation能自動創(chuàng)造出數(shù)百倍與原始模型的頂點,這些不是虛擬的頂點,而是實實在在的頂點,效果是等同于建模的時候直接設(shè)計出來的。
實現(xiàn)相同的模型細(xì)節(jié),Tessellation顯然比直接建模更快更高效
除了大幅提升模型細(xì)節(jié)和畫質(zhì)外,Tessellation最吸引程序員的地方就是:他們無需手動設(shè)計上百萬個三角形的復(fù)雜模型,只需簡單勾繪一個輪廓,剩下的就可以交給Tessellation技術(shù)自動鑲嵌,大大提高開發(fā)效率;而且簡單的模型在GPU處理時也能大幅節(jié)約顯存開銷,同時大幅提升渲染速度!
● Tessellation的妙用
Tessellation技術(shù)的原理很簡單,就是把簡單的模型智能的鑲嵌成為復(fù)雜模型,使得游戲中的景物變得更加細(xì)膩真實。實際上除此之外Tessellation還能實現(xiàn)一些令人意想不到的功效:
DX11代表作《DiRT2》就大量使用了Tessellation技術(shù),它用Tessellation構(gòu)建了動態(tài)水面、動態(tài)布料旗幟和觀眾人物模型,其中加強人物模型不難理解,而動態(tài)水面和布料效果足以媲美物理加速,讓人驚訝不已!
Tessellation(細(xì)分曲面)水面效果對比
DX11模式
DX9模式
Tessellation(細(xì)分曲面)布料效果對比
DX11
DX9
雖然XBOX360和ATI的全線DX10顯卡都支持Tessellation技術(shù),但支持Tessellation游戲并不多,隨著DX11將Tessellation作為一項重要技術(shù)納入API規(guī)范之后,未來DX11游戲都將會支持這一技術(shù),但由于DX11中的Tessellation和DX10/DX9版本有很大的區(qū)別,因此并不會向下兼容,Tessellation只能通過DX11顯卡在DX11游戲中才能實現(xiàn)。
● 動態(tài)逼真——物理效果的實現(xiàn)
3D游戲中“物理”指的是什么呢?簡言之就是模擬真實世界中的物理定律,使得運動物體產(chǎn)生一些復(fù)雜的交互性干涉,從而改變形狀、軌跡或狀態(tài)的一種技術(shù)。比如:流體(水、煙、霧)、碰撞、變形、爆炸、毀壞、布料、碎片……物理技術(shù)雖然屬于圖形技術(shù)的一種,但所涉及到的運算并非是圖形渲染,而是大量的并行計算,等結(jié)果算出來之后才會進(jìn)行后續(xù)的渲染操作。
3D游戲中一些典型的物理應(yīng)用
這里為什么要強調(diào)GPU物理加速呢,因為CPU物理加速其實早就進(jìn)入實際應(yīng)用階段,但由于CPU性能有限(或者說CPU并不擅長做物理運算),大多數(shù)游戲僅采用了少許簡單的物理效果作為點綴,未能給玩家?guī)硪曈X上的震撼力,也就容易被大家所忽視。比如《半條命2》系列游戲都使用了物理技術(shù),在擊穿木板或爆炸時會有一定的破壞效果,但如果不特別指出的話您可能注意不到。
Crysis爆炸時的物理效果不錯(CPU加速),但在場景毀壞與交互方面略有不足
● 物理引擎并不是只有PhysX一種,但只有PhysX支持GPU加速
除了CPU外,還有專用的PPU(即物理加速卡)來進(jìn)行物理運算,但隨著GPU進(jìn)入DX10時代,并行架構(gòu)的流處理器擁有比PPU和CPU更強大的浮點運算能力,GPU物理加速技術(shù)被提上日程。終于,在NVIDIA收購Ageia公司之后,通過CUDA技術(shù)將PhysX物理引擎重新編譯了一遍,使得GeForce 8以上的N卡都能夠支持物理運算,通過大量的測試來看,即便是低端N卡的物理加速能力也要比專用的物理加速卡強,CPU跟它根本不是一個級別。
就拿最近比較熱門的《蝙蝠俠:阿卡姆瘋?cè)嗽骸愤@款游戲來說,是否開啟PhysX有著天壤之別,PhysX能夠讓蝙蝠俠的披風(fēng)更拉風(fēng)、地洞中的霧氣在人經(jīng)過時產(chǎn)生互動、地面上的碎片和紙屑在打斗過程中飛舞、地板磚桌椅墻壁都有可能被打碎、布料和旗幟隨風(fēng)而動……
物理引擎也不是只有PhysX一種,已經(jīng)被Intel收購的Havok也提供了很不錯的物理解決方案,但目前支持GPU加速的還只有PhysX這一種,由于GPU擁有很強的運算能力,因此PhysX引擎所實現(xiàn)的物理效果最為出色,但對顯卡的要求也很高。
開啟PhysX之后是十分消耗資源的,GTS250以下級別的顯卡性能損失特別大,最好是能安裝一塊額外的顯卡做專門的物理加速運算,而GTX260+以上級別的顯卡則可以同時處理圖形渲染和物理加速運算,能夠保證不低于30幀的速度。至于A卡則不支持PhysX加速,強行開啟的話只能使用CPU進(jìn)行運算,效率自然非常低下,不過使用A卡做渲染N卡做物理加速也是個臨時解決方案。
● 大名鼎鼎的HDR技術(shù)再次縮水
HDR(High Dynamic Range,高動態(tài)范圍光照)技術(shù)相信很多人并不陌生,想當(dāng)年DX9C SM3.0面世時,正是憑借HDR技術(shù)一舉成名,HDR所帶來的絢麗光影效果給玩家極強的視覺震撼,但卻產(chǎn)生了很多負(fù)面效果,這些歷史遺留問題時至今日都沒有得到完美解決。
幾乎所有的圖形技術(shù)都是隨著時間的推移來進(jìn)一步增強效果,只有HDR被一而再再而三的“縮水”,這是為什么呢?
● DX9C時代HDR與AA水火不容
HDR技術(shù)通過采用浮點格式的顏色代碼來為紋理、光照等計算提供極大的精度和顏色范圍(以前的紋理一般都是采用整數(shù)型的顏色格式)。盡管最后顯示到屏幕上還是每個顏色通道8位的整數(shù)格式,但是以前的材質(zhì)、光照計算中紋理也是用每通道8位的格式來參與計算,所以在顯示到畫面之前,很多細(xì)節(jié)就在低精度的運算中丟失了。
HDR效果雖然很美,但在DX9C模式下進(jìn)行16位浮點(FP16)運算時,會占用到原本屬于多重采樣抗鋸齒(MSAA)的緩沖區(qū)域,使得游戲開啟HDR后無法進(jìn)行FSAA處理。當(dāng)年的一大批DX9C游戲都是如此,比如《孤島驚魂》、《細(xì)胞分裂》、《虛幻3》引擎的全系列游戲。
● ATIX1000和XBOX360是個例外
ATI的DX9C顯卡發(fā)布較晚,因此在設(shè)計之初就考慮到了HDR+AA的需要,整合了額外的緩存,只要通過游戲或者驅(qū)動重新指定另外的緩沖區(qū),就能完美支持HDR+AA效果,所以X1000系列和XBOX360主機都能支持HDR+AA。
不過ATI的HDR+AA方案并不是業(yè)界標(biāo)準(zhǔn),還是有不少游戲無法同時開啟HDR和AA,通過驅(qū)動強行更改緩沖區(qū)的方式和一些游戲有兼容性問題,ATI官方都不認(rèn)可這種做法。
● DX10時代,新增兩種HDR顏色格式
為了解決困擾業(yè)界已久的HDR+AA問題,微軟在DX10當(dāng)中加入了兩種新的HDR格式,對每個顏色通道16位浮點數(shù)的格式進(jìn)行刪減,第一種是R11G11B10(紅色綠色各11位,藍(lán)色10位,總計32位),另一種是紅綠藍(lán)各9位共享5位指數(shù)(計算機中浮點數(shù)是尾數(shù)附加指數(shù)的形式來表示)。
新增的兩種HDR格式都只有32位,而并非DX9C時代的48位(FP16x3),所以動態(tài)范圍精度有些下降,但好處就是新的HDR不會與MSAA搶占緩沖區(qū),所消耗的顯存也大大減少,效率和兼容性提高,至于光影效果的縮水其實很難看出來。
● DX11時代,新增HDR紋理壓縮技術(shù)
HDR除了不支持抗鋸齒外,還不支持紋理壓縮技術(shù),因為HDR在設(shè)計之初的要求就是光照和紋理都必須保持高精度。隨著時代的發(fā)展,游戲的分辨率越來越高,紋理貼圖越來越精細(xì),而紋理貼圖如果不經(jīng)壓縮就放在顯存里面的話,容量是相當(dāng)恐怖的,因此新一代的游戲顯存消耗成倍增加,這其中罪魁禍?zhǔn)灼鋵嵾是HDR技術(shù)。
為了解決這個顯存消耗大戶,在DX11當(dāng)中又新增了一種專為HDR設(shè)計的紋理壓縮格式:BC6H,壓縮比高達(dá)6:1。
上圖展示的是圖像通過BC6H壓縮模式進(jìn)行壓縮的前后效果對比圖。其中左邊的圖像為原始圖像,中間的是在壓縮過程中損失的一些細(xì)節(jié),而右邊的就是壓縮后的圖像?梢钥闯觯瑥漠嬞|(zhì)上來看幾乎沒有損失(肉眼看不出),但是卻可以大幅度降低顯存的占用。
經(jīng)過了DX9C、DX10和DX11三代API,HDR技術(shù)在神不知鬼不覺的情況下被兩次“縮水”之后,才真正走向成熟,由此可見好的圖形技術(shù)不光是要效果出色,更重要的是擁有高效率和實用性,才能被更多的游戲所接受,被更多的顯卡所支持。
紋理貼圖大家都明白,就是往建好的3D模型上“貼”一些二維的畫面,讓人物顯得更真實一些,比如常見的磚墻、凹凸不平的地面等,這些如果全部用三角形來實現(xiàn)的話,那么模型就會非常復(fù)雜,GPU將會不堪重負(fù),但如果用“一張已經(jīng)畫好磚紋的紙”貼上去的話,那么渲染起來就會輕松好多。
但是這么做也有很大的缺點,貼圖畢竟是2D的,如果在游戲中換個角度看的話,很容易就會發(fā)現(xiàn)墻面沒有任何立體感,磚紋看上去非常假!為了讓2D貼圖看上去也有3D立體效果,就誕生了多種貼圖技術(shù),比如凹凸貼圖、法線貼圖、位移貼圖、視察映射貼圖等。
● 凹凸貼圖
凹凸貼圖技術(shù)簡單說起來是一種在3D場景中模擬粗糙表面的技術(shù),將帶有深度變化的凹凸材質(zhì)貼圖賦予3D物體,經(jīng)過光線渲染處理后,這個物體的表面就會呈現(xiàn)出凹凸不平的感覺,而無需改變物體的幾何結(jié)構(gòu)或增加額外的點面。例如,把一張碎石的貼圖賦予一個平面,經(jīng)過處理后這個平面就會變成一片鋪滿碎石、高低不平的荒原。當(dāng)然,使用凹凸貼圖產(chǎn)生的凹凸效果其光影的方向角度是不會改變的,而且不可能產(chǎn)生物理上的起伏效果。
凹凸貼圖的墻壁效果,注意看邊緣其實沒有任何凹槽
凹凸貼圖在今天看來已經(jīng)是老的不能再老的一種技術(shù)了,雖然能夠獲得凹凸的效果,但是凹凸的程度非常受限制,基本上只能做出一些簡單的浮雕效果來。這種技術(shù)通常用在一些觀察視角變化很小的情況上,例如地面,墻壁,遠(yuǎn)處的一些模型等等,如果角度稍微一大,你就會發(fā)現(xiàn)那些凹坑其實是根本不存在的。
● 法線貼圖
法線貼圖就是把一個表面的凹凸情況用每個點的法線向量記錄下來,在貼圖的時候根據(jù)法線貼圖做光影的變換,從而實現(xiàn)凹凸效果。
法線貼圖比起凹凸貼圖而言,能夠?qū)崿F(xiàn)的效果更好了,相對的就是運算量更大了,需要大量的紋理材質(zhì),每個象素的光照情況都需要計算這個點的法線向量和光照情況的夾角計算該點的亮度和顏色。為了節(jié)約GPU資源,ATI曾開發(fā)了3DC+紋理壓縮技術(shù),這對于法線貼圖有莫大的幫助。
當(dāng)然,法線貼圖技術(shù)同樣不是完美的,它也有著自己的不足,凹凸貼圖沒有能夠解決的切向效果問題肯定是仍然不能夠得到解決。此外,就是法線貼圖技術(shù)不能夠解決解決更大的凹凸情況的效果。大家如果去觀察的話,法線貼圖效果能實現(xiàn)的通常是一些內(nèi)凹或者外凸不是很嚴(yán)重的表面效果。
● 視差映射貼圖
為了解決法線貼圖在處理較深內(nèi)凹之時不能夠達(dá)到的弊端,誕生了新的視差映射貼圖技術(shù)。該技術(shù)其實稱之為視差遮蔽貼圖似乎更容易理解一些,因為它會對紋理的坐標(biāo)做變換,一些凸出的紋理會遮蔽到其他的紋理,這樣就會看起來具備更好的凹凸的感覺了。
ATI X1000 Demo中就包含了視察映射技術(shù)
正如我們在上圖看到的情況一樣,地面上的石塊的凹凸感覺非常好,前面的石塊已經(jīng)對后面的石塊進(jìn)行了局部的遮蔽。雖然這個Demo中的磚塊依然很假,但磚塊之間凹凸的效果已經(jīng)得到了完美體現(xiàn),非常遺憾的是,沒有任何一款DX9游戲使用過這種視差貼圖技術(shù)。
● 直到DX10時代才大量使用視差映射貼圖技術(shù)
視差貼圖技術(shù)的實現(xiàn)原理,其實和法線貼圖是一樣的,都是根據(jù)法線貼圖進(jìn)行的處理,所以我們可以把它當(dāng)作是法線貼圖的一種衍生技術(shù)。視差貼圖技術(shù)的實現(xiàn)是和硬件沒有必然聯(lián)系的,這個技術(shù)概念的誕生其實也非常早,只是未能得到大量使用,這是因為視差貼圖技術(shù)的運算量要比法線貼圖大了不少,原來的顯示芯片因為性能有限基本都運行不了。
狂野西部DX10版本首次使用了視差映射貼圖
《孤島危機》中的石塊和地面都使用了視察映射貼圖
最早使用視差映射貼圖技術(shù)的游戲叫做《狂野西部》,首批DX10游戲之一,DX9版本不支持。由于DX10顯卡都采用了統(tǒng)一渲染架構(gòu),可以方便的集中利用Shader資源,來渲染出復(fù)雜的特效。再加上有全新的幾何著色器輔助,因此特效的運用方面可以更加靈活,游戲開發(fā)商可以很容易的自定義一些特效渲染方式,所以將先進(jìn)的技術(shù)都安置在DX10模式之中也是無可厚非。
游戲中所使用的圖形技術(shù)動輒數(shù)以百計,即便是像3DMark這樣簡短的測試程序中,也包含了數(shù)十項先進(jìn)的、甚至是獨創(chuàng)的渲染技術(shù),有些技術(shù)甚至連一個像樣的名字都沒有,而真正能得到廣泛使用、被3D游戲愛好這所熟知的技術(shù),確實是屈指可數(shù)。
Crysis的畫面之所以如此完美,是因為幾乎所有的高級圖形技術(shù)它都有所使用
所以,本文只是有選擇性的介紹了一些知名的、肉眼看得出差別、能明顯提升游戲畫質(zhì)的圖形技術(shù),其實在這些風(fēng)光無限技術(shù)的背后,還有很多默默無聞的、用以提升渲染效率的輔助技術(shù)。
Tessellation技術(shù)的坎坷發(fā)展歷程
而且,這些圖形技術(shù)也不是一朝一夕就能得到程序員的青睞、并獲得游戲玩家的認(rèn)可,比如HDR技術(shù)時至今日依然存在兼容性問題、動態(tài)模糊和景深經(jīng)過三代API的改良效果才令人滿意、Tessellation技術(shù)更是經(jīng)過六代七年的發(fā)展才修成正果!
每一代圖形API的革新,一方面是加入新的特效、讓畫面變得更完美,另一方面是通過新的指令提升運算效率。顯卡進(jìn)入DX10時代后,畫面已經(jīng)達(dá)到了巔峰,很難再有較大的突破,因此后續(xù)的DX10.1和DX11都主要是為了優(yōu)化算法,使得游戲運行更加流暢,也有利于游戲開發(fā)者使用更多、更強的圖形技術(shù),營造出更逼真的3D畫面!■
朱峰社區(qū)網(wǎng)頁版(手機掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)
未知用戶
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP