Crytek在2004年推出Farcry之後,成為遊戲業界備受矚目的黑馬,技術力被視為和一線大廠如id Software、Valve、Epic、DICE等有相同的水準,而2007年的Crysis,更是超越巔峰之作。Crysis從開發階段就備受矚目,推出之後一如所料佳評如潮,特別是在3D特效方面的表現,筆者幾敢斷言,未來兩年內大概很難有遊戲可以超越,絕對可以佔住「史上最炫的3D遊戲」這個寶座好一陣子!

但很不幸的,九成的玩家都看不到Crysis真正的畫面實力,因為Crysis需要超高級的配備才跑的動,筆者說「超高」是很認真的,我們裝上Intel Core 2 Duo QX6850四核心CPU(約台幣三萬)和GeForce 8800GTX高階顯示卡(約台幣兩萬),終於在「1024x768」的低解析度,跑出DX10特效全開的畫面,勉強以20 fps的張數來玩。說九成的人看不到特效全開應該不為過,因為根本沒多少人買的起這種鬼裝備。

DX10特效全開的Crysis,根本就是海島觀光局指定遊戲,畫面已達相片擬真的地步。Crysis用了大量的全新特效,是下一代遊戲的標竿,雖然現在大家都跑不動,但未來這些特效會慢慢出現在其他遊戲上。所以,這篇就讓我們來看看Crysis的繪圖引擎CryEngine2,究竟做到了哪些成就,這是深入了解遊戲3D特效(即時繪圖)的絕佳機會,沒興趣的,看看Crysis的風景也不錯!


超遠的可視距離

CryEngine2使用最佳化的LOD(Level of Detail)管理來描繪景物,遊戲中的可視距離相當於真實世界八公里!



超高水準的3D模型

Crysis遊戲裡面的3D模型水準,絕對是業界屬一屬二,特別是動起來的時候,流暢的動作不會產生絲毫僵硬的感覺。





動態模糊(Motion Blur)


Crysis廣泛的運用動態模糊來創造出類似人眼的效果,這類的特效自從DirectX 9之後就大量被應用在遊戲上,例如暈眩、高速表現等。在Crysis遊戲裡面,將後製處理設成高品質就可以得到動態模糊的效果。動態模糊屬於像素渲染PS(Pixel-Shader)的特效技巧。


景深特效(Depth of Field)


景深特效也是PS特效的一種,原理上就是由觀察視野看過去,超過一定的z值(紀錄畫面遠近的數值)就模糊處理,便可以創造出前景清晰而背景模糊的戲劇性效果。記得Nvidia早在FX系列宣布時就已經提出DoF、Motion Blur等概念技巧,但是一直到這兩年(Gears of War, 2006),DoF及Motion Blur才真正邁入實用階段。


耶穌光(God Ray)


我不知道God Ray翻成神光對不對(經版友指正應翻為耶穌光),反正就是一種可以看到光線軌跡的效果,例如下雨過後雲層散開,陽光從雲間縫隙中射出,或是陽光穿越枝葉的感覺,都可以用God Ray來做到。早期這類效果多半是固定方向的投射,如窗外投射進室內的陽光,是美工在事先就已經處理好,並非動態產生,但在Crysis中,God Ray是不固定的而且會隨著觀看者的視線角度而改變,可以說是繼HDR之後,另外一個實現真實世界現象的特效應用。God Ray也是運用Pixel-Shader的特效技巧。


幾何模板生成(Geometry Instancing)


Geometry Instancing有人翻成”幾何座標引用”,我覺得這樣翻譯怪怪的,所以我自己翻成”幾何模板生成”,簡單說就是重複利用同樣的3D模型程式化產生畫面中的物件,主要應用在葉片、樹木、花草等數量大但是性質相同的物件產生上,否則光靠美工人員來畫出上圖中的物件,恐怕會被操死吧!同時為了避免過於單調的重複使用,”幾何模板生成”可以支援參數設定,如顏色、大小、方向變化等,讓遊戲畫面更加生動。


水面效果(Water)

相對於固態的物體表現,水面表現一向是3D程式設計師絞盡腦汁的部份,而自從GLQuake(1996, Quake的OpenGL版)第一次出現透明水(translucent water), Unreal(1998)使用程序性貼圖(procedure texture)模擬隨機亂數的水面表現,SplashDown(2001)以多邊型模擬波浪效果代替貼圖,或是Pixel-Shader時代的水面表現如Half-Life 2(2004), The Elder Scrolls IV: Oblivion(2006),十年來水的表現有了長足的進步,而Crysis又將水的表現提高到另外一個層次。Crysis先使用模擬波浪演算法算出波浪的位置,再利用鑲嵌(tessellation:產生碎小的多邊型)的技巧描繪出水面細微的擾動,產生出幾近真實般的效果。



海水



溪水



瀑布


日夜轉化(Day-Night Cycle)


Crysis支援即時的日夜轉化,隨著遊戲時間流逝,遊戲中會由黑夜慢慢變為清晨,接著黎明時刻到來旭日東昇,將大地染上一層金黃,然後開始一天,日光逐漸高升,中午過後,陽光逐漸西斜,最後在薄霧中落下,進入到夜的世界。日夜轉化雖然早已出現在許多MMORPG中,但是Crysis中所呈現的是一個更順暢,且更自然的時間轉變。


體積光(Volumetric Light)

印象中體積光第一次出現在遊戲上是Nocturne(1999)這個遊戲,八年後的Crysis當然也要支援!



表面光源擴散(Subsurface Scattering)
傳統即時繪圖在打光時,只有處理表面反射的部份,但是自然界的物體並不是完全只有表面反射,有些半透明的材質會讓光線進入,被部分吸收或產生擴散、折射等現象,以人的皮膚來說,只有6%的部份來自反射,而有94%來自表面光源擴散。表面光源擴散可以應用在半透明材質的成像如冰、皮膚及樹葉等,這也就是為什麼Crysis遊戲中的人物看起來這麼自然的原因。



計算皮膚的表面光源,會讓人有一種皮膚比較自然的感覺,而不像一些遊戲的皮膚接近橡膠皮。



注意葉子會稍微透過一點陽光,就跟真實世界一樣。



牆壁也有做表面光源擴散。


視差遮蔽貼圖(Parallax Occlusion Mapping)


這個石子路看來凹凸不平,其實這些石頭根本就沒有凸出來,若去掉貼圖,這是完全平坦的表面,所有凹凸的效果都是運算出來的假效果,稱為凹凸貼圖。

凹凸貼圖(Bump-Mapping)可以讓遊戲以較少的多邊型數目表達出極高多邊型的假象,是即時成像(Real-Time Rendering)的重要技巧之一,Crysis支援視差遮蔽貼圖(Parallax Occlusion Mapping),是視差貼圖(Parallax Mapping)的一種延伸技術,而Parallex Mapping則可以看成是法向量貼圖(Normal Mapping)的類似技術。

簡單說,多邊型的方向可以用法向量(normal)來表示,而遊戲將原本高多邊型數目模型的多邊型法向量資訊取出成為法向量貼圖(Normal map),在實際成像時,使用原模型的較低多邊型數目版本,透過法向量與光源的角度計算該有的明暗位置,就可以還原成類似原本高多邊型數目的模型,最早應用Normal Mapping技術的遊戲是Farcry和Doom 3。

然而Normal Mapping有一個缺點,即當目標平面與觀察者視線平行時則很容易露陷,當Normal Mapping應用在怪物或物體上時問題不大,因為怪物本身的多邊型就有一定的數量,再加上沒人會把臉貼到怪物身上觀察(呃...可能有一些怪胎會這樣做),所以這個缺點不會造成問題。但當應用在牆壁或地面上問題就來了,一來觀察者視線會與這些平面平行,而來這些面原本的多邊型數量就不高,所以這時候就需要加入觀察者視角的計算,產生更明顯的陰影效果,Parallax Mapping首度被應用在Splinter Cell: Chaos Theory(2005)上。而Crysis中的Parallax Occlusion Mapping可以產生比Parallax Mapping更精確的自體陰影效果。


戰鬥煙塵(Battle Dust)


在Crysis之前的遊戲,激戰時不管再怎麼激烈,碎片、煙塵齊發,一但交戰結束,除了四散的肉塊或血漿外,空氣立刻變得乾乾淨淨,嗅不到一點煙硝味。而在Crysis中,戰鬥中所揚起的煙塵在戰鬥後仍會瀰漫在空氣中,持續一段時間才逐漸散去,十分貼近真實。


體積霧(Volumetric Fog)、體積雲(Volumetric Cloud)
早期遊戲中的霧主要是為了遮蔽遠處的景物減少計算需求而產生(distance fog),一直到Unreal(1998),霧才被當作是一個用來增加遊戲氣氛的效果來認真看待。Crysis中的雲霧具有實際的存在感,從外觀上就可以看出不同的形狀及濃度,佔有一定的體積,而進入其中可以感受到明顯的層次感覺,遊戲中甚至有一個關卡就是專門用來展示Crysis在體積雲霧上面的成就!



體積雲



體積霧


即時環場貼圖(Real-Time Ambient Maps)

一直以來,即時繪圖在處理光源時,在意的只有直接光源(Direct Light)的部份,對於非直接光源(In-direct Light),由於運算資源太大,且人眼對於非直接光源的辨識度沒有那麼高,所以通常便宜行事處理,例如給予整體環境同樣的背景亮度值,或是利用事先產生的光貼圖(Light Map)來製造出明暗的假象。Light Map有個缺點就是必須事先產生,不適合用在光源會即時改變的狀況,也因此Doom 3(2004)捨棄了Light Map的作法,僅利用Stencil Shadow + Normal Mapping來產生畫面的明暗效果,雖然所有的光影都是動態產生,但是這種作法也有缺點,就是同時間的光源數受到效能限制,且當光源沒有照射到的地方,呈現出的就是一片黑。

為了解決這個問題,各大廠選擇不同的作法,例如Valve提出”Radiosity Normal Mapping”這樣的技術,將環境光源值依據三個基準向量各自儲存至獨立的Light Map,最後透過Normal Mapping還原,理論上可以處理任意數目的光源,達到環境光源的目的。而Crysis採用的作法則是事先計算每個圖素(texel)被環境遮蔽的程度(每個點可以被”天空”看到的程度),存到一環場貼圖(Ambient Map)中,然後在實際繪製時則依據多邊形的法向量、光源的顏色與和多邊形的相對位置、以及圖素的遮蔽值來還原出環境光源值,Crytek將這個做法稱為即時環場貼圖(Real-Time Ambient Maps),其實指的就是Ambient Occlusion(環場遮蔽)這個技術,可以看成是全域照明(Global Illumination)的一種便宜作法。


34
Doom3的抓圖,注意畫面陰影處,是完全看不到東西的。



Crysis中的即時環場貼圖效果。



Crysis中的即時環場貼圖效果。



光源即時改變的效果(1)



光源即時改變的效果(2),注意左邊沒被光源照射到的地方仍然可見。


天氣系統(Weather System)

天氣系統讓環境不再呆板,相信大家在遊戲裡已經看很多了,年初的STALKER: Shadow of Chernobyl及Gears of War等遊戲在這方面都做了很好的演繹,雨天效果方面Crysis並沒有特別出色,但是下雪效果絕對是遊戲史上的經典,片片雪花從眼前飛過,每片的大小皆不同,落下的速度呈現出非常生動自然的感覺,這樣的效果就連強調雪地景色的Lost Planet: Extreme Condition都難以望其項背,從下雪的效果就可以看出CryEngine2的粒子系統的威力。



下雨效果



下雪效果


螢幕特效(Screen Effect)

這類的特效用途在於增加臨場感,特別是對於像Crysis這樣的第一人稱射擊遊戲,善加利用螢幕效果可以讓玩者更有融入的感覺,例如齒印,爪痕等。筆者認為FPS遊戲史上最早將Screen Effect發揮得淋漓盡致的,應該是Gamecube上的Metroid Prime (2003)。Crysis在這方面的應用則有血漬、泥漬、水紋(模擬面罩剛出水面的效果),結冰等特效,尤其是結冰特效,幾乎會讓人以為螢幕被冰凍了呢。這類特效屬於Post-Effect後製處理,因為和畫面中的Geometry無關,因此在繪圖管線的最後才加上去。



血漬特效



水紋特效



結冰特效


爆炸效果

CryEngine2利用高動態範圍成像、粒子系統及高品質的貼圖創造出令人驚心動魄的爆炸效果。





DX10 v.s DX9
Crysis支援DirectX 9及DirectX 10兩種繪圖模式,但是在Direct X 10之下才能夠將所有特效設成”超高”,而也唯有”超高”的設定才能夠發揮Crysis繪圖引擎全部的威力!


像素品質比較


超高像素品質



高像素品質



超高像素品質



高像素品質

圖片乍看之下似乎差異不大,但實際在遊戲裡就會感受到明顯不同,超高像素品質比高像素品質來得真實許多。


陰影品質比較


超高陰影品質



高陰影品質


超高陰影品質做到了柔和陰影(Soft Shadow),當然也就更真實。


物件品質比較


超高物件品質



高物件品質


這不是大家來找碴…雖然高物件品質設定下的畫面複雜度就已經非常驚人了,然而超高物件品質又多出了一些細節。


水面品質比較


超高水面品質



高水面品質


超高水面品質多出了一些水面波紋,高水面品質看起來比較平。


貼圖比較


超高/高貼圖品質



中/低貼圖品質


Crysis裡面只有兩套貼圖,超高品質和高品質共用一套,中品質和低品質用另外一套。


所有預設設定比較


所有設定超高品質



所有設定高品質



所有設定中品質



所有設定低品質


結語

Crysis堪稱是2007年最具指標性的遊戲,撇開遊戲性不談,單單畫面部分就已經為整個遊戲業界立下了一個標竿,讓世人得以一窺未來兩年內遊戲界的畫面水準。在2007年末,僅以此文獻給01的版友,並期待2008年的到來。

P.S:內文中若有謬誤之處,敬請不吝指教。



===========[最後附上Crysis製作人的專訪]============

訪問Crysis 總裁Cevat Yerli



Cevat Yerli, Co-founder, President Crytek
Cevat是一位非常年輕的總裁,1978年出生,他的第一個遊戲開發經驗,可以把時光回溯到80年代, Commdodore 64個人電腦與Schneider CPC 6128的專案,當時, 他就是負責模擬遊戲開發的部分, 因此自此之後,他就開始熱衷專注於遊戲開發.
他把他的熱情全部投注在他所熱愛的事業上, 因此, 1997年他創立了Crytek這家公司, Cevat負責規劃Crytek在遊戲上的願景以及技術方向, 與Avni與Faruk Yerli 共同經營Crytek的策略發展.
問題如下
.在Crysis的Render Engine上,什麼技術耗費你們最多時間或人力,什麼技術又是你們最自豪的?
A: 在開發引擎上,最困難的部分就是如何擅用現有的技術水準而讓呈現逼近擬真的世界,畫面當然就要盡可能的接近真實世界原貌,而AI互動、人物動態行為、模擬、物理破壞我們都希望可以設計到接近真實,,《末日之戰》果然沒讓我們失望,在遊戲中無論是畫面、AI互動、人物動態行為、模擬、破壞性都同步達到很好的水準,這是我們整個研發小組最驕傲的地方。

.在開發Crysis時,有原本計畫要做的特效,但最後卻放棄的嗎?是什麼原因而放棄?
A:讓我想一下,幾乎開出的技術特效研發團隊都有做到,所以並沒有放棄什麼技術特效,而是有些跟遊戲環境相關的設計,我們覺得如果要再增加設計,又需要花費很久的時間,而且取消的決定是在1年半前就達成共識了,因此,基本上,《末日之戰》讓我們非常興奮,充分達到了研發團隊所有的要求。

.Crysis是少數運用大量DX10特效的遊戲,你覺得Crysis已經發揮DX10的所有能力了嗎?如果不是,你認為三年或五年後的DX10遊戲會有什麼樣的畫面?

A: 我絕對相信《末日之戰》將會是這兩三年內畫面最漂亮華麗的遊戲了,《末日之戰》絕對是用來衡量這兩三年內新遊戲的基準,因為它讓遊戲視覺上的呈現達到一個使用暨有科技頂尖的水準,我不相信未來二三年內有其他新遊戲可以超過《末日之戰》的水準,也許三年後吧會有遊戲超過《末日之戰》的表現,但是三年內《末日之戰》絕對是當前畫面最棒的遊戲。看之前《極地戰嚎》(Far Cry)達到的里程碑就可以知道,技術絕對是超過現有遊戲水準3-4年的。


.Crysis如果要推序列作,那會有怎樣的畫面呢?
A: (笑)這問題還蠻難回答的,我們一直在討論中,不過都還沒有決定序列作要有哪些設計,我們其實也希望看遊戲玩家玩《末日之戰》的反應如何,相信等到《末日之戰》上市之後11月底前,一定會有許多玩過的玩家們發表她們對遊戲的感想,會給我們許多靈感,我們是為玩家製作好玩的遊戲,所以玩家們的意見對我們相當重要。

.Crysis的特效有什麼是「只有」DX10才做得到,而DX9是「不可能」做到的?
A: 基本上,DX9與DX10相比,應該還是達得到動態mapping對應、畫質等功能,但是DX9相對效果以及效率表現上都會比較差一些,會讓硬體效能比較吃力,DX10則在光線、陰影、畫面強化柔和都明顯強過於DX9,因此我們會比較著重在DX10表現上。

Crysis是NVIDIA TWIMTBP programe的一個,NVIDIA給你們哪方面的支援,你們的合作方式是什麼?為什麼和NVIDIA合作而非ATI?

A: 我們之所以選擇與Nvidia合作,起因是我們之前在使用DirectX9技術時當時與Nvidia 合作的十分愉快,我們對雙方的方向與目標都相當認可,當時Nvidia非常積極推廣DirectX9的技術,而中間一段時間感覺Nvidia好像有點睡著了一樣,直到後來才又專注在遊戲這部分,事實上與Nvidia合作,Nvidia願意提供的協助很多,Nvidia也擁有很好的技術能力,同時Crytek已經跟Nvidia已經合作六年了,我們也有許多朋友都在Nvidia工作,朋友在之前睡著了,自從我們加入,這個朋友才醒過來,因此這個時間點,我們有義務也非常願意與Nvidia合作。

.Crysis有很棒的物理引擎,為什麼沒有透過GPU加速,而是CPU呢?
我們使用CPU來控制AI、模擬情境以及物理效果,GPU主要是用來表現精緻的畫面,《末日之戰》這套遊戲基本上對AI要求、情境模擬很嚴格,希望達到很好的效果,其實可以說玩家必須準備好的CPU與好的GPU才能達到遊戲呈現出來的效果。CPU以及GPU可說是同等重要,因為我們不希望有好的AI但是畫面效果不好,我們也不希望看到好的畫面但是AI很差,希望兩個硬體都有一定的水準,如果一定要說要選擇哪樣硬體去更新來享受遊戲會比較棒,我會建議是CPU囉!


.現在DX10的GPU都是unified shader architecture,以遊戲開發的觀點來看,會比dedicated vertex/pixel shader來的簡單或是困難?

A: Unified shader architecture顯然比dedicated vertex/pixel shader來的簡單,因為它以DirectX10為主,對遊戲開發者而言比較容易,dedicated代表有許多限制在。Unified簡單許多,當然也需要特別注意就是了。

.Far Cry有支援OpenGL和DirectX,為什麼Crysis只支援DirectX了?是因為OpenGL沒辦法達到你們想要的效果嗎?

A: OpenGL已經是舊的技術了,所以當然我們選擇Direct X


.我們常看到遊戲在Vista下跑的比Windows XP還慢,你覺得Vista是適合開發的遊戲平台嗎?是什麼拖慢了DX10/Vista下的遊戲效能?硬體、Driver或是尚未完全掌握API?

A: 我認為Vista 對目前硬體而言算是比較困難的環境,其實真的是取決於你的硬體,如果你硬體不夠強,你玩遊戲會非常吃力,所以要等硬體升級到下一世代,無疑地,Vista絕對可以讓DirectX10發揮的更好,只是要等到環境更成熟一些,更多的硬體都升級之後。對我們而言,vista跟XP一樣並不會比較難開發囉!