顯卡帝揭秘3D遊戲畫質特效
近幾年來,大量採用最新技術製作的大型3D遊戲讓大部分玩家都享受到了前所未有的遊戲畫質體驗,同時在顯卡硬體方面的技術革新也日新月異。對於經常玩遊戲的玩家來說,可能對遊戲畫質提升有種不知不覺之感,而對於那些前些年經常玩遊戲,現在突然又來玩新遊戲的玩家來說,估計會度現在的遊戲畫質讚不絕口甚至驚呼「不可思議」。不過有一個現象我們不得不承認:遊戲畫質的設定選項越來越豐富了,同時玩家也對這些「亂花漸欲迷人眼」的遊戲畫質特效有點摸不著頭腦了。所以今天顯卡帝就來為您詳細解讀3D遊戲特效,讓玩家在體驗遊戲的時候玩得盡興玩得明白。
顯卡帝揭秘3D遊戲畫質特效
說到遊戲圖形特效,我們不得不說的是DirectX API,DirectX(Direct eXtension,簡稱DX)是由微軟公司創建的多媒體編程接口。DirectX由很多API組成的,按照性質分類,可以分為四大部分,顯示部分、聲音部分、輸入部分和網絡部分。DirectX中的顯示部分即擔任圖形處理的關鍵,分為DirectDraw(DDraw)和Direct3D(D3D),前者主要負責2D圖像加速。它包括很多方面:我們播放mpg、DVD電影、看圖、玩小遊戲等等都是用的DDraw,讀者可以把它理解成所有劃線的部分都是用DDraw實現的;後者Direct3D則主要負責3D效果的顯示,比如遊戲中的人物和場景畫面等,都是使用了DirectX中的Direct3D技術來實現的。而DirectX中的Shader Model指令集即實現了這些複雜而逼真的遊戲圖形特效。其實Shader(渲染或稱著色)就是一段能夠針對3D對象進行操作、並被GPU所執行的程序,Shader Model即是優化渲染引擎模式的意思,我們可以把它理解成是GPU的渲染指令集。歷代DirectX版本有重大升級時,其最主要的更新內容就包括在Shader Model之中:
ShaderModel 1.0 → DirectX 8.0
ShaderModel 2.0 → DirectX 9.0b
ShaderModel 3.0 → DirectX 9.0c
ShaderModel 4.0 → DirectX 10
ShaderModel 4.1 → DirectX 10.1
ShaderModel 5.0 → DirectX 11
我們玩家一般在玩遊戲的時候可能最多設定的就是畫質的AA(抗鋸齒)或解析度相關的選項,隨著DX API的不斷升級,遊戲的畫質設定選項也在不斷的改進和豐富,其實現在的大部分遊戲在畫質設定上相比之前的老遊戲而言都已經有了相當豐富的選項提供給玩家。所以玩家可以不再局限於之前的抗鋸齒這樣的基本畫質要求,也可以嘗試更為豐富多樣的遊戲畫質特效,盡享3D遊戲畫質特效為您帶來了全新畫質體驗。接下來,顯卡帝就為您詳細介紹3D遊戲中一些重要而新穎的遊戲畫質特效,希望各位以後在玩遊戲的時候對這些遊戲畫質特效有一個事先的了解,也方便玩家在遊戲過程中對遊戲的畫質進行更為優質的畫質調節。
高動態範圍光照(HDR)
首先我們所要介紹的是比較熟悉的HDR(High-Dynamic Range:高動態範圍光照)這個遊戲特效。HDR(High-Dynamic Range)特效是和Soft shadows(柔和陰影)/Parallax Mapping(視差映射貼圖)等並列的圖像渲染特效。想要實現HDR特效,首先,遊戲開發者要在遊戲開發過程中,利用遊戲引擎等開發工具將實際場景用HDR記錄下來,當然開發技術強的開發組會直接用小開發工具(比如3D MAX的某些特效插件)創造HDRI圖像;其次,我們的顯卡必須支持顯示HDR特效,nVIDIA的顯卡必須是GeForce 6系列或更高,ATI顯卡至少是Radeon 9550或以上。HDR特效最早是由NVIDIA提出的概念,也是最先在NVIDIA的顯卡中實現的,當時面對競爭壓力的ATI也效仿NVIDIA實現了RADEON顯卡的模擬HDR的支持,注意——僅是模擬而已,而且是通過Shader Model 2.0實現的。
高動態範圍光照(HDR)畫面示例
高動態範圍光照(HDR)畫面示例
DX9可以算得上是DirectX史上的一次革命性的改進,而DX9的第三個版本DirectX 9.0c(Shader Model 3.0)正是憑藉HDR技術名噪一時。因為採用HDR特效技術處理過後的遊戲在畫面上色彩對比鮮明和風格會呈現出超現實感。
遊戲中關於HDR的選項
但遺憾的是,雖然說HDR給玩家帶來了畫面上更加絢麗的色彩,但是HDR技術也有不少「頑疾」至今都沒有得到有效的解決。DX9.0C中的HDR和AA(抗鋸齒)互不相容,雖說ATI X1000系列和XBOX360主機都能支持HDR+AA僅是一個特例而已,但HDR+AA方案並非業界標準,ATI官方也不認可這種做法;還有就是HDR技術也導致了新一代的遊戲顯存消耗的成倍增加,因為HDR在設計之初的要求就是光照和紋理都必須保持高精度,而紋理貼圖不經過壓縮就放在顯存中,容量可想而知有多恐怖。為此,DX11在API設計的時候就專門為HDR設計了紋理壓縮格式:BC6H,壓縮比達到了6:1。正是進過了DirectX API設計的不斷改進,HDR技術才在實用性和效率上找到了平衡點,故而逐步被大部分的主流遊戲所採用。
最後我們用三句話簡潔的概括下HDR特效的畫質表現效果:
1.亮的地方可以非常亮
2.暗的地方可以非常暗
3.亮暗部的細節都很明顯
環境光遮蔽(Ambient Occlusion)
「AO」為Amblent Occlusion的縮寫,中文譯為環境光遮蔽。在DirectX 10.1 API推出後,Amblent Occlusion升級為SSAO(Screen-Space Ambient Occlusion:屏幕空間環境光遮蔽);而在微軟推出DirectX 11 API後,SSAO升級至HDAO(高解析度環境光遮蔽:High Definition Ambient Occlusion)。
無AO(左)和有AO(有)對比圖
我們有必要對AO(環境光遮蔽)的釋義進行一個簡單了解:AO是來描繪物體和物體相交或靠近的時候遮擋周圍漫反射光線的效果,可以解決或改善漏光、飄和陰影不實等問題,解決或改善場景中縫隙、褶皺與牆角、角線以及細小物體等的表現不清晰問題,綜合改善細節尤其是暗部陰影,增強空間的層次感、真實感,同時加強和改善畫面明暗對比,增強畫面的藝術性。可以說AO特效在直觀上給我們玩家的感受主要體現在畫面的明暗度上,未開啟AO特效的畫面光照稍亮一些;而開啟AO特效之後,局部的細節畫面尤其是暗部陰影會更加明顯一些。
塵埃2遊戲中的AO畫質特效設定
SSAO實現了較好的全局光照效果
《異形大戰鐵血戰士》HDAO開/關細節對比
SSAO和HDAO均為AO技術的變種或升級,其實目前採用統一渲染架構的圖形核心都能夠實現AO(環境光遮蔽)效果,而在SSAO在DX10.1中被引入之後,得到了更為優化的代碼支持從而實現了更為有效的環境光遮蔽效果。而伴隨DX11所一同進化而生的HDAO,相比SSAO和AO有了更進一步的效能提升。HDAO是SSAO的升級,主要更新了用於加速SSAO的函數指令Gather4(在DirectX 10.1中,Gather4允許一個2x2的未過濾紋理替代一個雙線過濾的紋理),從而實現更快更好的陰影效果。值得一提的是HDAO這個名稱咋一看比較貼近ATI HD系列顯卡的名稱內涵,再加上SSAO和HDAO都是ATI所力挺的圖形技術,故而HDAO也一同寫入了DirectX 11 API的函數庫中。
景深(Depth of Field)
關於景深這個遊戲特效的概念,我們首先可以先看一下下面這張照片的效果。由下面這張圖我們可以看到紅花所呈現出來的畫質最清晰,而遠處的綠葉則十分模糊。
景深效果
對攝影有所了解的朋友一定對景深這個概念不陌生。下面我再從攝影的角度來解析下什麼是景深效果。為理解景深,我們先來了解下彌散圓的概念。在焦點前後,光線開始聚集和擴散,點的影象變成模糊的,形成一個擴大的圓,這個圓就叫做彌散圓。
彌散圓(circle of confusion)
在焦點前後各有一個容許彌散圓,這兩個彌散圓之間的距離就叫景深,即:在被攝主體(對焦點)前後,其影像仍然有一段清晰範圍的,就是景深。景深的深淺取決於焦點的位置。
景深(depth of field)
遊戲為了達到擬真的效果,自然也將景深的概念引入到其中。然而問題是由於3D遊戲只是將圖像投影在了平面顯示器上,故而本身不會有景深效果,因此為使得遊戲畫面產生景深效果則必須在圖像輸出之前對其做預處理,把焦點之外的遠景全部虛化處理。
遊戲畫質設定中的景深選項
DX9和DX10關於景深效果的對比
DX10中的景深效果解析
DX9時代在景深特效的處理方面顯得有點「偷工減料」,因為其原理是將遠景物體的紋理、陰影和光照等效果進行大幅度縮水,再加之以模糊處理,而僅對近景做正常的渲染輸出。
DX10的景深處理則顯得相對務實一些,因為它藉助的是幾何著色器,遠景也完全符合的是正常虛化模式,且光影等特效細節也得到了保留。
而到了DX11時代,則是通過DirectCompute中新增的Gather4數據採集指令,使得計算著色器能夠以四倍的紋理採集速度,幫助減少GPU紋理單元和光柵單元的負擔,從而在進行景深處理時消除了瓶頸,提升渲染效率。
運動模糊(Motion Blur)
運動模糊是景物圖象中的移動效果。它比較明顯地出現在長時間暴光或場景內的物體快速移動的情形裡。其實我們在電影或電視裡面經常會看到些運動模糊的效果畫面,在我們用相機對準快速運動的物體拍照的時候,你也會偶爾拍出具有運動模糊的效果圖片。所以說具有運動模糊畫面的遊戲更加具備擬真的效果。
運動模糊效果
賽車遊戲裡面,運動模糊這一項往往是必須的
賽車類的遊戲,運動模糊效果是必須的
孤島危機遊戲中運動模糊效果
DX9時代的運動模糊效果顯得有些許誇張或不真實,因為遊戲畫面僅僅做了一個相對簡單的虛化背景處理,而對前景高速運行的物體則保留運動軌跡,再簡單的將前景和背景進行糅合,效果上會有些拖影或殘影的狀況。
憑藉全新的幾何著色技術,在DX10模式下即可使用流處理器資源來計算物體的幾何坐標變換,再配合高精度的頂點紋理拾取技術,從而對整體運動過程有一個相對完美的再現,並且在運動模糊效果的處理上也做到了「是非分明」。
體積雲/體積霧/體積光
體積雲/體積霧(Volumetric Clouds/Fog),簡而言之:在遊戲中的體積雲/霧效果就是使用圖像引擎來模擬雲霧半透明、無規則的表現效果。在早期遊戲中,實現雲霧煙火效果的慣用手法是使用貼圖,這在經典的CS遊戲中可以體現出來,至於效果則顯得很粗糙一般。
CS的煙霧彈效果,可以看到層狀的材質
體積雲/體積霧效果
體積雲效果
而事實上,體積雲本身的定義上也不是特別清楚,歐美業界的觀點是:通過3D引擎實時生成的、能夠隨時間流逝而自動改變的、能夠和物力引擎互動產生變化的(比如飛機飛過雲霧散開),才能稱為體積雲/體積霧。像《孤島危機》和《衝突世界》這樣的遊戲均大量運用了體積雲/體積霧的特效。
現實世界裡的光線圖
遊戲中的體積光特效
孤島危機遊戲中的體積光特效
體積光(Volumetric Light),可以說目前的大部分遊戲在DX10和DX11的API支持下都具備了體積光的特效,這一切都得益於DX API在渲染架構上的改進,才使得這些高級圖形特效被更多更好的運用於遊戲之中。
軟陰影(Soft Shadow)
Soft Shadow,字面上翻譯過來是軟陰影,其實叫作「柔和陰影」似乎更恰當。在生活中,我們知道陰影的過渡是漸變的,而軟陰影的作用就是要模擬這種陰影漸變且在陰影周邊製造虛化的效果。
StreetFighterIV遊戲中的軟陰影選項
一般來說在遊戲中陰影的生產方法有2種:Shadow Mapping(陰影映射)和Shadow Volumes(體積陰影)。對於在陰影映射下實現軟陰影效果,通常採用的方法是:在陰影邊界進行高精度超級採樣的方法,如虛幻3引擎就是進行16X的超級採樣,這就是軟陰影消耗系統資源大的原因。
對於在陰影映射下實現軟陰影,通常是在陰影邊界進行高精度超級採樣的方法,如虛幻3引擎就是進行16X的超級採樣,這就是軟陰影消耗系統資源大的原因。
《西部狂野》的Shadow Map Size高達2048*2048,生成的陰影效果非常好,對硬體要求也高
《塵埃》的Shadow Map Size更是前所未有地達到了4096*4096,陰影柔化效果也很到位
《孤島危機》的陰影效果當然是頂級的了
Shadow Volumes(體積陰影)
Shadow Volumes(體積陰影)是一種基於幾何形體的技術,它需要幾何體在一定方向的燈光下的輪廓去產生一個封閉的容積,然後通過光線的投射就可以決定場景的陰影部分(常常使用模板緩衝去模擬光線的投射)。Shadow Volumes(體積陰影)這項技術是像素精確的,不會產生任何的鋸齒現象,但是與其他的技術一樣,它也有缺點:其一、極度依賴幾何形體,其二、需要非常高的填充率,其三、相當耗費CPU資源。採用體積陰影來實現軟陰影效果的遊戲不多,《DOOM3》和《F.E.A.R.》就是採用的體積陰影技術的遊戲。
曲面細分(Tessellation)
曲面細分技術想必是大家相對比較熟悉的一個遊戲特效,在新近推出的DX11遊戲中,我們發覺曲面細分技術的應用越來越多,而且採用這項技術的遊戲在遊戲畫面的立體感方面顯的尤為突出。下面我們從天堂2.5 的畫面對比圖中就可以很清晰的體驗到曲面細分特效的魅力。
DX11曲面細分對比圖
DX11曲面細分對比圖
DX11曲面細分對比圖
DX11曲面細分對比圖
DX11曲面細分對比圖
DX11中的曲面細分技術
曲面細分技術演示
Tessellation(曲面細分)技術,是一種化繁為簡的手段,簡單的講,便是在一個簡單的多邊形模型中,利用專門的硬體,專門的算法鑲嵌入若干多邊形,以達到在不耗費CPU資源的情況下,真實的展現曲面的目的。N卡和A卡在曲面細分技術處理上的區別是:NVIDIA的DX11顯卡採用的是專用曲面細分處理單元的設計,而AMD則採用的是內部集成曲面細分處理單元的設計。
視差映射貼圖
視差映射貼圖技術又叫視差遮蔽貼圖技術,在這一技術中,會對紋理的坐標做變換,一些凸出的紋理會遮蔽到其他的紋理,這樣就會看起來具備更好的凹凸感。視差貼圖技術的實現原理,其實和法線貼圖是一樣的,都是根據法線貼圖進行的處理。視差貼圖比法線貼圖提供更好的視覺效果,而且跟法線貼圖有同一個目的:在保證模型細節的情況下,大幅度降低場景的多邊形數目。
法線貼圖在《孤島危機》裡的應用,立體感表現得非常好
《S.T.A.L.K.E.R.》中的視差貼圖效果,磚塊和石板上的凹痕表現十分生動
採用視差貼圖的鵝卵石給人以「以假亂真」的感覺
視差貼圖技術在早期並沒有得到廣泛的應用,因為視差貼圖技術相比法線貼圖技術要耗費更多的資源,而當時的計算機運行起來則顯的有些吃力。最早使用視差映射貼圖技術的遊戲叫做《狂野西部》,是首批DX10遊戲之一,而DX9版本不支持視差貼圖技術。由於DX10顯卡都採用了統一渲染架構,可以方便集中利用Shader資源來渲染出複雜的特效。再加上有全新的幾何著色器輔助,因此特效的運用方面可以更加靈活,遊戲開發商可以很容易的自定義一些特效渲染方式,所以將先進的技術都安置在DX10模式之中也是無可厚非。
物理加速效果
可以說物理加速技術第一次實現了真實而自然的水滴效果。物理加速是3D遊戲特效中的效果之一,它能令物體被破壞和移動,物體碰撞能產生物理上的反彈效果,使遊戲更接近真實,更趨近於物體在自然狀態下的物理運動等反應。這些特效在早期的3D遊戲中是不可想像的。
藉助物理加速技術,我們可以實現在遊戲中體驗到如下真實的物理效果:
1.塵土飛揚,碎渣四濺的大量粒子運動所形成的爆炸效果;
2.設計結構複雜的各種幾何模型,以完成更加逼真的物理運動和交互動作;
3.環繞在運動中的物體周圍的大量翻騰湧動的濃煙和塵霧效果;
4.逼真細膩的河水、泥石流、巖漿等流體運動模擬;
5.衣物、草叢、樹葉之類軟性物體能隨風自然飄動效果;
6.衣物,旗幟等軟性物體因外界各種影響做出不同的撕裂或變形效果;
7.剛性物體之間相互碰撞的運動計算,一定力度之下形成擬真的成千上萬個碎片運動。
進過物理加速的裙擺更顯自然逼真
採用物理技術的遊戲——《蝙蝠俠》
就工作原理上講,物理加速技術主要負責兩個工作:其一、如何近乎自然的操作物體的移動;其二、在周圍環境的影響作用下,物體如何更加真實地作出交互性的反應。
目前物理加速技術上主要分為「三大派別」,NVIDIA擁有自己的PhysX物理加速引擎技術,INTEL擁有自己的Havoc物理加速引擎技術,而AMD則選擇了基於OpenCL的第三方物理引擎技術的研發。
總結大會之3D遊戲特效作用
看完了前面所介紹的這些遊戲特效,可能不少玩家在之前玩遊戲的過程中已經不知不覺的體驗過這些遊戲特效所帶來的全新畫質效果。而這一次我們對這些遊戲特效進行了一個全面的總結過後,想必玩家會對遊戲畫質特效的設定有個更為清楚的認識。最後我們對這些遊戲特效的作用進行一句話的簡單小結來結束本次對3D遊戲特效的專文研討。
①高動態範圍光照(HDR)
亮部更亮,暗部更暗,明暗細節更明顯。
②環境光遮蔽(Ambient Occlusion)
使暗部陰影更明顯,明暗對比更強烈
③景深(Depth of Field)
突出重點,虛化背景
④運動模糊(Motion Blur)
對快速移動、爆炸和高速碰撞等畫面進行相關畫面的模糊處理
⑤體積雲/體積霧/體積光
讓雲就、霧和光照更加趨近於真實
⑥軟陰影(Soft Shadow)
模擬陰影漸變且在陰影周邊製造虛化的效果
⑦曲面細分(Tessellation)
用更多的多邊形來逐漸逼近真實物體的外表輪廓,從而實現圖形畫面的立體感和層次感
⑧視差映射貼圖(Parallax Mapping)
使3D畫面具備凹凸感和立體感
⑨物理加速效果
使物體在移動、碰撞之後產生交互式的真實物理反應