《星際爭(zhēng)霸2》游戲引擎技術(shù)解析
著色方面,在使用原型的基礎(chǔ)上利用3D Studio MAX讓程序員對(duì)整體效果做最大的優(yōu)化,反復(fù)的提煉使得整個(gè)作品就像被藝術(shù)家精心雕琢一樣,配合上8000個(gè)獨(dú)特的、不重復(fù)的線性著色渲染代碼,使得Starcraft II與早期的游戲代碼相比增加了N倍。
在游戲制作初期,暴雪就認(rèn)識(shí)到GPU的強(qiáng)大性能,因此在設(shè)計(jì)的時(shí)候就采用了以GPU為主的優(yōu)化和大幅度圖像質(zhì)量增加。
由于使用大量像素渲染操作,如果在游戲中當(dāng)你選擇了控制成百上千的zerglings或者marines等作戰(zhàn)單位集體行動(dòng),勢(shì)必造成CPU超負(fù)荷,即便是強(qiáng)大的GPU這也是一個(gè)考驗(yàn)。
大量的視覺(jué)特效(Based Effects)
包括FP16 HDR、光線散射/反射效果(Diffuse and specular for lighting)、景深效果(depth of field)、體積霧(fog volumes)、動(dòng)態(tài)環(huán)境遮蔽(dynamic ambient occlusion)、智能貼圖置換(smart displacement)等等,這些都是Starcraft II的“BT”之處。
然而,作為一個(gè)即時(shí)戰(zhàn)略游戲,暴雪依然在“故事情節(jié)”的設(shè)定上下足了功夫,在游戲引擎的影響下,延遲緩沖器的深度和平均值,包括著色組建都完全為了效果而服務(wù)。而照明管道和陰影的利用也讓深景效果等一些特效表現(xiàn)得淋漓盡致。不過(guò),這些特效都還在討論中。
在早期的開(kāi)發(fā)過(guò)程中,圖形引擎也作為一個(gè)重點(diǎn)中的重點(diǎn)進(jìn)行設(shè)計(jì):
可擴(kuò)展性第一
對(duì)于游戲引擎來(lái)說(shuō),一個(gè)主要的設(shè)計(jì)目標(biāo)是擴(kuò)展的引擎。暴雪的游戲質(zhì)量是人所共知的,不光是他們的能力,更重要的是經(jīng)驗(yàn),從以前的一系列游戲開(kāi)發(fā)經(jīng)驗(yàn)來(lái)說(shuō),整個(gè)游戲各種族之間能力的平衡問(wèn)題非常重要,而且圖像效果之間的兼容性也必須考慮到,這樣也是為了各種不同平臺(tái)硬件之間搭配的玩家都能體驗(yàn)這個(gè)游戲的魅力所在,以確保游戲有足夠的競(jìng)爭(zhēng)力,因而從ATI Radeon 9800/NVIDIA GeForce FXs系列到ATI Radeon HD 4800s和NVIDIA GeForce G200s都可以輕松的進(jìn)行游戲。
相比之下,GPU的負(fù)載才是重點(diǎn),像素著色單元往往會(huì)因?yàn)榇罅康膯挝煌瑫r(shí)出現(xiàn)而使得GPU難以承受,頂點(diǎn)著色單元的運(yùn)用也必須合理,而先進(jìn)的GPU才能體驗(yàn)到最大限度的特效,而對(duì)于普通的GPU只能盡量減少使用率來(lái)保證游戲的流暢度。
一個(gè)引擎,兩個(gè)“世界”(Dual Nature of the Engine)
這個(gè)雙重性質(zhì)的引擎使得整個(gè)游戲有更完美的體驗(yàn),其實(shí)就是說(shuō)SC2具有兩個(gè)視角模式,一個(gè)是普通的RTS視角、一個(gè)是單人模式的RPG視角,當(dāng)然在這兩個(gè)模式下呈現(xiàn)的畫(huà)面效果是有所不同的。具備兩個(gè)視覺(jué)模式的原因正是我們之前提到的故事模式,當(dāng)切換到單人模式的RPG視角時(shí),玩家將會(huì)體驗(yàn)到暴雪對(duì)于整個(gè)游戲設(shè)定的精妙之處,通過(guò)一系列互動(dòng),包括對(duì)話等手段,其實(shí)從某種感覺(jué)上來(lái)說(shuō)更像是第一人稱射擊游戲(FPS)。
暴雪還將對(duì)這些不同的設(shè)定做更為細(xì)致的討論,這樣才能讓玩家體驗(yàn)到不同的技術(shù)效果的運(yùn)用。
屏幕基礎(chǔ)效果
作為Starcraft II的另一個(gè)設(shè)計(jì)目標(biāo),照明環(huán)境模式讓游戲的互動(dòng)更多,之前在魔獸爭(zhēng)霸三中,每個(gè)單位有一個(gè)硬性限制,有多少亮度,可能會(huì)影響它在任何特定時(shí)間。出于這個(gè)原因,使用動(dòng)態(tài)照明是相當(dāng)微不足道的,但是在Starcraft II中每個(gè)單位有一個(gè)照明設(shè)備,當(dāng)其中一個(gè)開(kāi)啟之后其他也會(huì)開(kāi)啟,這樣效果非常好,但是由此帶來(lái)的地圖的設(shè)計(jì)和繪制,包括地圖地形切片就成了相當(dāng)復(fù)雜的問(wèn)題。而即便是解決了這些,給GPU帶來(lái)的負(fù)荷也是巨大的。
針對(duì)于此,暴雪也做了很多限定 :
◆ 顏色組成部分,并不受當(dāng)?shù)卣彰鳎绨l(fā)射、環(huán)境地圖和點(diǎn)燃前期的彩色組成部分;
◆ 深度;
◆ 每像素正常;
◆ 如果使用靜止環(huán)境閉塞,出口的環(huán)境閉塞的紋理被忽略,如果屏幕空間環(huán)境閉塞啟用; #p#page_title#e#
◆ 亮燈的彌漫物質(zhì)的顏色;
◆ 亮燈的鏡面材料的顏色。
解碼緩沖器
所有的緩沖器應(yīng)該都使用相同的深度,不幸的是似乎這些緩沖器遠(yuǎn)遠(yuǎn)不能滿足暴雪的需要,這些緩沖器以24字節(jié)每像素推動(dòng)輸出帶寬,這樣使得整個(gè)帶寬明顯不足,因此在安置光源的時(shí)候必須犧牲一些。
為了向MRTs提供每像素值以保證用于各種的效果,因而以下必不可少:
◆ 深度值為照明、霧卷、動(dòng)態(tài)環(huán)境閉塞和智能景深,預(yù)測(cè),邊緣檢測(cè)和厚度測(cè)量;
◆ 平均值為動(dòng)態(tài)環(huán)境閉塞;
◆ 彌漫性及鏡面照明。
延遲渲染
在Starcraft II中延遲渲染只適用與當(dāng)前的渲染,包括燈光的點(diǎn)和散射出去的面都要再渲染,但是由于游戲中會(huì)出現(xiàn)很多的照明設(shè)備,如果都使用這樣的方法渲染的話一定會(huì)造成畫(huà)面過(guò)于緩慢,因此延遲緩沖器的出現(xiàn)也解決了這一難題。在延遲渲染和著色方程式的幫助下計(jì)算機(jī)能很快的繪制出不同形式或者更為復(fù)雜的光源,這樣也為其他的計(jì)算提供了一個(gè)后處理的過(guò)程。
像素坐標(biāo)重建
受益于早期的樣板,暴雪在設(shè)計(jì)新的形狀和色彩的時(shí)候輕松了不少,而且同時(shí)還釋放了CPU。
相機(jī)原理我們都知道了,就通過(guò)這樣的模式使得暴雪在視覺(jué)上更了解該如何設(shè)計(jì)。
屏幕空間環(huán)境光遮蔽
屏幕空間環(huán)境光遮蔽(Space Ambient Occlusion,簡(jiǎn)稱SSAO)。如果對(duì)這個(gè)名詞感到陌生,那提及到讓大家記憶猶深的《Crysis》逼真的光照效果時(shí),一切就很簡(jiǎn)單了,這就是SSAO技術(shù)的獨(dú)到之處。
暴雪在這使用這方案的時(shí)候考慮到了整個(gè)空間的效果和質(zhì)感,也許從某寫(xiě)方面上來(lái)看,沒(méi)這個(gè)必要,但是基于暴雪的理念,一點(diǎn)點(diǎn)瑕疵都是不被允許的。
在任何可見(jiàn)的點(diǎn)和表面在屏幕上,采取多個(gè)樣本(8至32),這些樣本,表現(xiàn)了在三維空間中從目前的點(diǎn)計(jì)算,到預(yù)計(jì)回屏幕空間所需的時(shí)間和深度。
現(xiàn)在的目的是檢查是否深入采樣點(diǎn),如果接近這個(gè)更遠(yuǎn)的采樣點(diǎn)本身能獲取信息的話就這么做下去,這是一個(gè)函數(shù)問(wèn)題,因此需要復(fù)雜的計(jì)算。
不過(guò)在對(duì)地圖的計(jì)算時(shí)不會(huì)采用這樣的方法,這僅僅是為了形成一個(gè)空間的效果而已。
模糊效果
前面的一切都是為了更加細(xì)致的描繪出所有的場(chǎng)景,但是,有時(shí)候游戲還是需要一些模糊的圖形圖像,如果一直使用SSAO技術(shù)的話,必然導(dǎo)致不真實(shí)。
對(duì)于SSAO來(lái)說(shuō),雖然是一種優(yōu)勢(shì),但是高智能的判斷在這時(shí)也顯得尤為重要,何時(shí)需要高精度的細(xì)致圖像,何時(shí)需要?jiǎng)討B(tài)模糊效果,無(wú)論是著色還是渲染都需要大量的資源的計(jì)算才能顯現(xiàn)這些復(fù)雜的效果。
自我閉塞
這也是一個(gè)相當(dāng)復(fù)雜的效果,就像一個(gè)圍繞著一個(gè)半球體產(chǎn)生偏移向量,這一點(diǎn)上在屏幕上(這意味著需要使用大量的延遲緩沖器),由一個(gè)矩陣轉(zhuǎn)化每個(gè)偏移向量和正常向量來(lái)抵銷(xiāo)矢量。
邊緣處理
偏移向量在空間中并不像在屏幕空間中一樣,由于鏡頭的不斷移動(dòng)使得SSAO不斷變化,這樣就需要在移動(dòng)的過(guò)程中對(duì)鏡頭的邊緣進(jìn)行處理,以保證完美的視覺(jué)效果,但是紋處理包裝上并不是一件簡(jiǎn)單的事。
SSAO的表現(xiàn)SSAO提供的效果是讓人相當(dāng)滿意的,視覺(jué)圖像質(zhì)量的處理近乎完美,但是成本過(guò)高,而且大量使用還是會(huì)造成系統(tǒng)性能瓶頸,這樣得不償失,因此合理的使用這個(gè)技術(shù)也是討論的問(wèn)題之一。
SSAO和整體光線效果
從圖中很明顯的發(fā)現(xiàn)了SSAO的精妙之處,如此逼真的效果讓人贊嘆不已,其實(shí)更多的還是其后面的技術(shù)支撐。
我們可以把一切制約因素一起使用以下過(guò)程表示:
◆為每個(gè)像素在源的形象和存儲(chǔ)執(zhí)行一個(gè)全屏幕通過(guò)計(jì)算混亂循環(huán)結(jié)果,在Alpha通道的每邊縮減一個(gè)CoC圖像緩沖區(qū)的四分之一大??;
◆產(chǎn)生中等模糊圖像通過(guò)應(yīng)用的RGB高斯模糊與每個(gè)樣本對(duì)源圖像加權(quán)CoC;
◆產(chǎn)生的最大模糊圖像只有縮小的RGB的圖像緩沖區(qū)源圖像的四分之一,每一個(gè)CoC和大型模糊緩沖器可以同時(shí)使用不同的通道; #p#page_title#e#
◆最高模糊圖像與RGB樣本加權(quán)由縮減CoC執(zhí)行,Alpha通道中載有CoC,也有模糊,但其樣本不加權(quán)本身;
◆縮小和模糊一張深度地圖成為一個(gè)縮減深度圖像,重用深入SSAO縮減(SSAO不模糊深度 );
◆然后開(kāi)始最后的景深著色,有一定的形象來(lái)源,中等和大型模糊、模糊CoC的形象,非模糊深入地圖和縮減深入形象的渲染。
景深渲染包括:
◇計(jì)算小模糊價(jià)值,直接使用小樣本著色四近鄰像素;
◇計(jì)算CoC的像素(縮減CoC將不匹配);
◇樣本非模糊,使用模糊的深入比較——計(jì)算機(jī)CoC,如果是模糊的深入,比非模糊的深入更遠(yuǎn),否則使用CoC價(jià)值樣本,模糊CoC的形象;
◇計(jì)算貢獻(xiàn),從每一個(gè)可能的模糊圖象,計(jì)算小模糊的顏色,中型和大型的圖像模糊的基礎(chǔ)上,CoC的因素;
◇小型,中型和大型模糊;
◇輸出Alpha包括的源(無(wú)模糊)形象。
處理透明物體渲染
透明度是一個(gè)值得深入研究的問(wèn)題,當(dāng)涉及到開(kāi)發(fā)時(shí)暴雪的董事會(huì)認(rèn)為延遲渲染技術(shù)不支持透明度的話就應(yīng)該在其他地方加上這個(gè)功能,而事實(shí)證明這是一個(gè)正確的選擇。
作為是典型的就是延遲繪制技術(shù),透明度的問(wèn)題還設(shè)計(jì)到樹(shù)蔭等一系列問(wèn)題,因此必須選擇一些有代表性的物體來(lái)標(biāo)記之后再做探討。光線的問(wèn)題在透明度的談?wù)撝性僖淮伪惶峒?,因?yàn)檫@是個(gè)相輔相成的東西,因此暴雪在制作這一切的時(shí)候都努力的尋找解決方案。
半透明陰影(Translucent Shadows)
這種技術(shù)能令煙霧、爆炸也能投射出陰影效果。
早期在建模的時(shí)候影子系統(tǒng)都是成功地利用屏幕空間信息解決跟蹤問(wèn)題,否則將會(huì)困難很多,但這次暴雪將顯示如何延長(zhǎng)陰影地圖的每像素信息與一些額外的信息通道,可以用來(lái)容易的充實(shí)陰影,地圖上實(shí)現(xiàn)半透明的陰影支持。
陰影地圖算法是延長(zhǎng)與第二地圖的陰影信息形成半透明的陰影,大部分地圖的影子仍然會(huì)包含不透明信息的陰影,此外還需要做到在顏色的緩沖區(qū)發(fā)現(xiàn)顏色半透明的陰影。不過(guò),這一切都需要硬件的支持,如果硬件不支持將會(huì)有一個(gè)空的顏色,因此在考慮到深景等特效的時(shí)候暴雪依然在處理陰影效果。
首先是清理,以白色調(diào)和,然后填補(bǔ)渲染透明物體的陰影,就這樣形成一個(gè)透明的陰影色彩緩沖區(qū),再加上測(cè)試,處理這些透明光過(guò)濾器,最后形成需要的效果。
光過(guò)濾處理器
總結(jié):
從上面簡(jiǎn)短的一份官方技術(shù)文檔(因?yàn)锳MD只放出這一部分),我們已經(jīng)可以了解到暴雪在SC2這個(gè)游戲上所付出的努力和貢獻(xiàn)了,其效果之華麗恐怕也是驚人的。作為暴雪十多年磨一劍的大作,《星際爭(zhēng)霸II》可是包含了現(xiàn)在最尖端的技術(shù)和效果,無(wú)論是暴雪的質(zhì)量還是技術(shù)相信都是世界頂級(jí)的水平,這樣的游戲公司確實(shí)在為自己的的作品留芳百世而努力!不過(guò),至于還要等多久,至今仍是一個(gè)謎。