動態模糊(Motion Blur)
景深(Depth Of Field)
軟陰影(Soft Shadow)
高動態光照(High Dynamic Range)
貼圖技術
次表面散射(SubSurface Scattering)
體積云/霧(Volumetric Clouds/Fog)
體積光(Volumetric Light)
SpeedTree
延遲渲染(Deferred Rendering)
動態模糊(Motion Blur)
3D游戲玩家會問這么個問題:為什么每秒24幀的速度對于電影來說已經足以獲得很流暢的視覺效果,而對于電腦游戲來說卻非常不流暢?原因很簡單,攝像機在工作的時候并非一幀一幀絕對靜止地拍攝,它所攝下的每一幀圖像已經包含了1/24秒以內的所有視覺信息,包括物體在這1/24秒內的位移。如果在看電影的時候按下暫停鍵,我們得所到的并不是一幅清晰的靜止畫面,而是一張模糊的圖像。

傳統的電腦3D圖像做不到這一點,游戲里的每一幀就是一幅靜止畫面,如果你在運動的過程中抓一張圖片下來,得到的肯定是一幅清晰的靜態圖。所以,動態模糊技術的目的就在于增強快速移動場景的真實感,這一技術并不是在兩幀之間插入更多的位移信息,而是將當前幀同前一幀混合在一起所獲得的一種效果。
《極品飛車:卡本峽谷》采用的動態模糊,但效果不好,表現太夸張,時間長很容易讓人感到不適。


《孤島危機》的動態模糊改善了很多,表現效果也好了很多,據稱是得益于DX10引入了幾何渲染器。

景深(Depth Of Field)
有攝影基礎的朋友一定都熟悉“景深”這個詞。如果非要解釋這個詞的話就是“在攝影機鏡頭或其他成像器前,沿著能夠取得清晰圖像的成像器軸線所測定的物體距離范圍”。說得再簡單一些,就是距離不同的景物,呈現出有些地方清楚有些地方模糊的效果。這種效果能夠更加突出需要反應的焦點,讓畫面的主題更加鮮明。
我們觀察下面的兩張圖片,就能非常明顯的看出景深的效果。在第一張圖片中,手持長棍的忍者是清楚的,后面的景物時模糊的。而在第二張圖片中,焦點移到了后面的景物上,前景的忍者反而變成了模糊的效果了。這樣的效果更符合人肉眼對自然環境觀察的結果,也就因此令玩家的感受更真實。


《使命召喚4》使用的景深效果

在FPS游戲中景深效果往往用在槍械的瞄具上。在游戲中使用機械瞄具的時候,人的注意力必然高度集中,準心以外的區域都模糊。
《孤島危機》中景深效果大放異彩



軟陰影(Soft Shadow)
從字面上直譯過來就是“軟陰影”,不過叫“柔和陰影”似乎更合適。我們知道生活中很多陰影的過渡都是有漸變,而軟陰影的作用就是要模擬這種效果,在陰影周邊制造虛化的效果。軟陰影本身并不是指一種技術,而是指通過采用某種技術達到的效果。
在說軟陰影前先說說陰影的生成方法。一般在游戲中采用的陰影生成方法有兩種:Shadow Mapping(陰影映射)和Shadow Volumes(體積陰影)。
Shadow Mapping(陰影映射)是一種圖像空間的技術,它是在以光源位置作為視點的情況下渲染整個場景的深度信息,然后再使用這些深度信息去決定場景的哪一部分是處于陰影之中。它有鋸齒并且依賴z-緩沖技術。由于可以在不減少幀率的情況下達到真實感光照和陰影效果,編輯器允許在場景中放置任意數目的靜態光源,它會為每個面預計算光流量(light flow)和靜態陰影,因此現代商業3D游戲中多數都會使用到陰影映射。陰影映射效果的一個影響因素是Shadow Map Size,如果size(尺寸)小,會導致陰影邊緣模糊不清、閃爍、出現大型鋸齒。增大size能提高陰影質量,但幀速會受到影響。
Shadow Map Size太小(上圖),增大Size之后(下圖)

對于在陰影映射下實現軟陰影,通常是在陰影邊界進行高精度超級采樣的方法,如虛幻3引擎就是進行16X的超級采樣,這就是軟陰影消耗系統資源大的原因。
《生化沖擊》使用陰影映射,表現出色。

《西部狂野》的Shadow Map Size高達2048*2048,生成的陰影效果非常好,當然對硬件要求也高。

《塵埃》的Shadow Map Size更是前所未有地達到了4096*4096,陰影柔化效果也很到位,它的硬件要求大家也是清楚的。

《孤島危機》的陰影效果當然是頂級的了,除了使用陰影映射,還使用了大量高級技術(如高精度采樣、屏幕空間環境光遮蔽等)
Shadow Volumes(體積陰影)是一種基于幾何形體的技術,它需要幾何體在一定方向的燈光下的輪廓去產生一個封閉的容積,然后通過光線的投射就可以決定場景的陰影部分(常常使用模板緩沖去模擬光線的投射)。這項技術是像素精確的,不會產生任何的鋸齒現象,但是與其他的技術一樣,它也有缺點。最主要的兩個問題一是極度依賴幾何形體,二是需要非常高的填充率。同時,體積陰影也相當依賴CPU,視覺效果方面是產生的陰影比較“硬”。


目前使用體積陰影的游戲不多,《DOOM3》和《F.E.A.R.》就是典型,在游戲中仔細觀察你會發現它們的陰影和其他游戲的明顯不同


《F.E.A.R.》是第一個采用了軟陰影的游戲,它的軟陰影實現方法是在光源在自身附近進行自我復制,產生多個不同亮度的陰影再混合起來,這種軟陰影效果似乎不怎么理想,邊緣看起來有層狀感,系統資源開銷也大。

高動態光照(High Dynamic Range)
很多人對HDR的第一感覺就是“太亮了、好刺眼、受不了”。其實HDR并不是像許多玩家理解的那樣就是簡單的“高亮”,不是讓畫面有更大的亮度或是對比度。大家都知道,當人從黑暗的地方走到陽光下時,我們的眼睛會不由自主的瞇起來,那是因為在黑暗的地方,人為了更好的分辨物體,瞳孔張開很大,以便吸收光線;而突然到了光亮處瞳孔來不及收縮,視網膜上的視神經無法承受如此多的光線,人自然會瞇上眼睛阻止大量光線沖擊視神經。
我們的眼睛非常敏感,而電腦就不具備這種功能,因此就通過HDR技術在一瞬間將光線渲染得非常亮,然后亮度逐漸降低。所以,HDR的最終效果應該是亮處的效果是鮮亮的,而黑暗處你也可以清晰的分辨物體的輪廓,位置和深度,而不是以前的一團黑。動態、趨近真實的物理環境是HDR的特效表現原則。
高亮的部分仍保持了相當豐富的細節

HDR并不僅僅是反射的光強度要高。在游戲中,如果你盯著一個面向陽光直射的物體,物體表面會出現豐富的光反射;如果盯著不放,物體表面的泛光會漸漸淡出,還原出更多的細節。HDR特效是變化的,因此稱做高動態光照。
HDR是分種類的,一般按可精度分為:Int16(整數)、FP16(浮點)、FP32等等,數字越大精度越高,運算量當然也越大。其中Int格式的HDR在SM2.0下即可實現(如半條命2:失落的海岸線、第一章、第二章),FP格式要SM3.0或以上才能實現(目前有HDR的游戲基本都是FP格式),在DX10中HDR的精度已經提升到FP128。
說到HDR不得不提另外一個特效:BLOOM。BLOOM也能實現和HDR類似的效果,但BLOOM的是靜態的,HDR是動態漸變的,BLOOM在細節表現、明暗對比不如HDR,這是BLOOM與HDR的重要區別。實現HDR效果的系統資源開銷也比BLOOM大。
3Dmark06中絢麗的HDR效果


這樣的HDR效果未免有點倒胃口,太夸張了。(半條命2:失落的海岸線)

《無限試駕》的HDR效果我是比較認同的。


《彩虹6號:維加斯》、《生化沖擊》的都不錯。


《孤島危機》的HDR使用已經非常成熟

虛幻3引擎演示的HDR效果:

游戲中貼圖是2D的,如果在游戲中換個角度看的話,很容易就會發現墻面沒有任何立體感,磚紋看上去非常假!為了讓2D貼圖看上去也有3D立體效果,就誕生了多種貼圖技術,比如凹凸貼圖、法線貼圖、位移貼圖、視察映射貼圖等。
凹凸貼圖(Bump Mapping)
凹凸貼圖技術簡單說起來是一種在3D場景中模擬粗糙表面的技術,將帶有深度變化的凹凸材質貼圖賦予3D物體,經過光線渲染處理后,這個物體的表面就會呈現出凹凸不平的感覺,而無需改變物體的幾何結構或增加額外的點面。例如,把一張碎石的貼圖賦予一個平面,經過處理后這個平面就會變成一片鋪滿碎石、高低不平的荒原。當然,使用凹凸貼圖產生的凹凸效果其光影的方向角度是不會改變的,而且不可能產生物理上的起伏效果。
凹凸貼圖在今天看來已經是老的不能再老的一種技術了,雖然能夠獲得凹凸的效果,但是凹凸的程度非常受限制,基本上只能做出一些簡單的浮雕效果來。這種技術通常用在一些觀察視角變化很小的情況上,例如地面,墻壁,遠處的一些模型等等,如果角度稍微一大,你就會發現那些凹坑其實是根本不存在的。
凹凸貼圖渲染出的墻壁,注意看邊緣其實沒有任何凹槽

法線貼圖(Normal Mapping)
法線貼圖技術通過計算高細節度模型的法線信息并將其保存在一張高壓縮比(3DC/DC5)的法線貼圖之中,然后將這張法線貼圖貼用于低細節模型上代替原型的多邊形曲面的光照計算,從而等到一個低多邊形、高細節的3D模型。這樣做就能在保證模型細節的情況下,大幅度降低場景的多邊形數目。法線貼圖目前已經廣泛應用于3D游戲中。
視覺效果達到1億多邊形的場景,通過線框顯示發現只用了50萬多邊形。(虛幻3引擎場景)



在3D Max中渲染一個相同的高精度模型需要200萬多邊形,而采用Normal Map后的效果. 模型本身只有5287面。(虛幻3引擎的怪物模型,蘭姆將軍?)

法線貼圖在《孤島危機》里的應用,立體感表現得非常好

視差貼圖(Parallax Mapping)
視差貼圖技術我們其實應該稱之為視差遮蔽貼圖技術,因為在這一技術中,會對紋理的坐標做變換,一些凸出的紋理會遮蔽到其他的紋理,這樣就會看起來具備更好的凹凸的感覺了。視差貼圖技術的實現原理,其實和法線貼圖是一樣的,都是根據法線貼圖進行的處理。視差貼圖比法線貼圖提供更好的視覺效果,而且跟法線貼圖有同一個目的:在保證模型細節的情況下,大幅度降低場景的多邊形數目。
《S.T.A.L.K.E.R.》中的視差貼圖效果,磚塊和石板上的凹痕表現十分生動

《孤島危機》中使用的視差消隱貼圖,堪稱目前Bump mapping技術的極致!逼真的鵝卵石讓人留下深刻的印象!

《西部狂野》DX10版也能開啟視差貼圖(留意右下角的磚塊)

次表面散射(SubSurface Scattering,簡稱3S)
目前使用次表面散射效果的游戲極少,似乎就只有《孤島危機》。它主要用于模擬不完全透明材質內部表現出的一種真實光影特效。當燈光照射到玻璃或清澈的液體表面時,燈光會穿透這些介質,3S效果可用來模擬燈光進入介質內部后發生的散射。
《孤島危機》中樹葉的透光性:

3S的另一個重要用處在于表現光源照射下的人物皮膚,換句話說,要想表現真實的皮膚材質,3S效果必不可少。目前的許多游戲在人物皮膚的渲染上就因為缺乏3S效果而顯得塑料化、橡膠化。
《F.E.A.R.》人物缺乏3S效果,塑膠感較大。


CryEngine 2使用3S效果生成的人物臉部。


《孤島危機》的人物臉部效果非常出色!

照片級的CG圖,同樣采用了3S,效果驚人!

體積云/體積霧(Volumetric Clouds/Fog)
簡單地說,在游戲中的體積云就是使用圖像引擎來模擬真實云霧半透明、無規則的表現效果。
在早期游戲中,實現云霧煙火效果的方式常常使用貼圖的方法。CS中可以很清楚的看到這一點。將煙霧品質改為“低”時,CS中煙霧的表現如同灰白色的墻壁一般。采用云霧煙火貼圖的游戲經常會降低透過云霧貼圖之后遠景效果,甚至替換遠景貼圖,仔細觀察就會發現,而體積云則不會。
CS的煙霧彈效果,可以看到層狀的材質


《使命召喚4》在關閉煙霧柔化后,也表現出同樣效果。

事實上,體積云本身的定義就比較模糊,歐美業界的觀點是:通過3D引擎實時生成的、能夠隨時間流逝而自動改變的、能夠和物力引擎互動產生變化的(比如飛機飛過云霧散開),才能稱為體積云/體積霧。
《孤島危機》中采用的就是體積云效果



《沖突世界》也大量使用了體積云



《生化沖擊》在DX10才能開啟體積云效果

體積光(Volumetric Light)
先來看下面一個現實世界的光線圖,在3D圖形中要實現這種效果就是體積光(Volumetric Light)。目前的游戲都是在DX10下才有體積光效果,看來是得益于DX10的渲染架構的改進,使體積光這種高級特效得以更容易地在游戲中實現。



《沖突世界》的招牌DX10效果-體積光


《孤島危機》作為DX10的招牌游戲當然少不了體積光效果。

CryEngine 2演示視頻,可以注意到,當主角經過時,槍支會被透射的光線照耀到


《孤島驚魂》《半條命2:失落的海岸線》的光束效果似乎比較生硬、呆板,光照強度一成不變,也不會留下恰當的陰影,顯然是預先安排好的,并非真正的體積光效果。



