Epic 談論「撒瑪利亞人」宣傳影片& 顯示卡的未來

2011年5月10日

作者Andrew Burnes

在今年的遊戲開發者大會(Game Developers Conference),與會者無不對於 Epic Games的「撒瑪利亞人」宣傳影片讚嘆不已,此試映會採用 Unreal Engine 3,以三張 NVIDIA GeForce GTX 580 顯示卡 呈現超擬真的視覺饗宴。 Epic 的「撒瑪利亞人」宣傳影片率先向全世界展示由DirectX 11即時建構的畫面,不僅引發玩家熱列討論,亦敲醒仍深受 DirectX 9 黑暗時代所苦的遊戲業。

示範影片的開場畫面即展現,目前受到最熱烈討論的進展之一。 Bokeh 景深(Bokeh Depth of Field)雖然是目前近幾年遊戲中失焦模糊標準效果的升級,但事實上此特效已出現十幾年了,早在 1999 年由現今已不復在的 3dfx 公司,使用其著名的 Voodoo T-Buffer 展示過此特效。新技術的 Bokeh 元件與可在電視與影片中可見到的可定義失焦形狀有關,而這些形狀通常用於增進場景的氛圍或視覺品質。 此特效係從日本字「Boke」引申出來,字面上的意義為「模糊」;Epic Games 的 Martin Mittring 認為此特效不僅僅只是會產生模糊效果,還可以吸引觀眾的注意,營造出對於現今遊戲所不可或缺之「說故事功力」的深度。 Epic Games 資深圖形架構工程師(Senior Graphics Architect)Mittring 亦認為:「此特效雖然會分散注意力,但在某類情況下,可提升美感,例如用武器進行瞄準時。」


「撒瑪利亞人」宣傳影片的開場畫面即在 Epic Games 商標左方展示出 Bokeh 景深特效。

Bokeh 景深主要用於過場動畫,讓開發人員預先定義虛擬攝影機鏡頭的形狀,指定如以下範例中所見到的模糊物體形狀。 Mittring 很榮幸表示:Epic 全新的 Bokeh 方法雖然「可透過現代的顯示卡快速執行」,但在達到好萊塢數十年來最佳、最亮眼的電影特效水準之前,尚有一段路要走。 為能「結合如半透明、正確遮蔽及動態模糊等其他功能,做更好的運用」,Mittring 及其同事將需要更強大的硬體與更好的軟體開發工具,但此時還不成氣候。


三個由美術設計師創造的 Bokeh 特效,Unreal Engine 3 可運用此特性。


Bokeh 特效範例,如 「撒瑪利亞人」宣傳影片所示。

「撒瑪利亞人」宣傳影片的技術自2010年6月開始進行,總共費時八個月開發及實作,而在開發之初,NVIDIA 開發者技術工程師 Bryan Dudash 及其團隊啟動了 Epic 的 Unreal Engine 3 DirectX 11 RHI 圖形包裝函式程式碼的開發工作。講白話點,此程式碼可讓 Unreal Engine 作到任何運用 DirectX 11 先進功能的。Epic 的引擎團隊已事先規劃並實作 DirectX 11 功能,接著開始開發實際的 「撒瑪利亞人」宣傳影片,因此該影片就事先就已完成分鏡腳本,經過縝密的前置準備工作。 Dudash 補述:「進入宣傳影片的最後開發階段時,NVIDIA 工程師遂進行效能分析與偵錯,確定該影片以最有效率的方式運用可用的GPU能力」,並持續加緊完成各方面的工作,一直到 2011 年 3 月 2 日 「撒瑪利亞人」宣傳影片發表前一刻。


初期的分鏡腳本詳細規劃「撒瑪利亞人」場景及應透過這些場景所強調的技術。

如之前所述,此宣傳影片以 3-Way SLI GeForce GTX 580 系統即時算圖,但即便原始的運算能力負荷得了,技術限制仍是個問題。基於此,Epic 的圖形程式設計師 Daniel Wright 認為,「必須請 NVIDIA 開發援助中心內極具天賦的工程師協助 Epic 更進一步掌握 NVIDIA 顯示卡博大精深之處,盡可能發揮顯示卡的最佳效能。」 「撒瑪利亞人」為經過精密掌控的宣傳影影片,因此並未加入實際市售遊戲所會採用的人工智慧,以及其他額外負荷,但若投入足夠的時間與精力,是否足以讓 「撒瑪利亞人」宣傳影片用遊戲電腦所最常見的配置「一張顯示卡」就能執行? Epic 的 Mittring 認為這沒問題,但「在撒瑪利亞人宣傳影片身上,我們想要探索自己可以將 DirectX 11 發揮到何種境界,因此才使用 SLI 節省時間。」


僅管確實可在最終的宣傳影片中看見美術元素的影子,但初期的撒瑪利亞人美術概念所呈現的視覺風格並未獲採用。 請注意飄動的外套、陰影的運用,以及在最終宣傳影片中,預示著龐大腐敗警察勢力的黑暗。

雖然肯定要使用下世代的顯示卡才能達到同樣栩栩如生的遊戲畫面,但這是個雞生蛋、蛋生雞的問題,要如何為其程式尚待開發的下世代顯示技術開發硬體? 就「撒瑪利亞人」宣傳影片而言,SLI 能夠為每個人解決此困境,使用三張顯卡的原始運算能力,提供大量的資源協助。 Dudash 表示,對 NVIDIA 而言,與 Epic 的合作為「雙贏」下了最好的定義。 「與 Epic 合作是件很好的經驗。 其工程師的顯卡知識在業界內可說數一數二,而且還有頂尖的美術人才提供協助。」

Dudash 繼續表示:「從製作有如撒瑪利亞人等高難度並具先進技術的宣傳影片中,我們學到許多實用與難以發揮的功能。 此外,我們發現到硬體與軟體內目前 API 與功能集的限制。」 此新學到的知識「將應用於未來的硬體設計與驅動程式更新內。」 NVIDIA 的開發者技術工程師最後讚美了 Epic 一下: 「真的很高興能與 Epic 的人共同製作此宣傳影片。 我等不及看看Epic的下一個點子了。」

隨著「撒瑪利亞人」宣傳影片轉至街道場景,俯瞰著華盛頓DC的美國國會大廈,數個 DirectX 11 功能巧妙地搭配運用,營造出前所未見的細節部分與深邃的場景。 率先吸引目光的元素為濕漉漉的街道與人行道,由無數的貼圖材質、高度變化及光源組成。


「撒瑪利亞人」宣傳影片一開場便呈現點光源反射(Point Light Reflection)、廣告看板及許多其他技術。

避免使用傳統無法呈現所需的反射外觀的 Phong 與 Blinn-Phong 技術,Epic 全新的獨家點光源反射技術接近目前科技所能呈現的「真實」感受,如下圖及引擎內的比較所示。


前述技術的真實世界範例。 即時結果 (下圖) 呈現更順暢的街道表面,以具美感的方式反映背景細節,若完全仿造真實世界的例子,便無法呈現如此美感。


遊戲內的結果。 請注意不一致表面反光內的裂縫。

技術標題內提及的點光源為汽車頭燈與街燈,而且為模擬參考圖片內的街道場景,採用許多不同的貼圖材質,正如不平的路面、水泥及人行道鋪設所示,無論靜態及動態物體是否為街道家具或移動中的車輛,皆可打斷、操縱及遮蔽反射。 如 Epic 的 Mittring 指出,「在濕漉漉的街道場景中,反射光源是最搶眼的主角,到處都反射出明亮的物體。」 為達成此目的,場景內亦採用其他技術,統稱為影像式反射(Image Based Reflections)。

此外,「撒瑪利亞人」宣傳影片亦導入廣告看板反射(Billboard Reflections)技術,以貼上材質的廣告看板與準確的光源照明重現廣告看板的設計。 這些廣告看板可如同 Unreal Engine 編輯器內的任何物件一樣放置,並以較簡易的方式,在任何表面上,準確反射其所發出的光。 之後能夠詳細或呈現這些反射,或模糊呈現,求得額外的動態特效,而且還可導入多個廣告看板,準確結合其照明,或以更明亮的光源遮蔽。 儘管廣告看板技術似乎微不足道,但此項技術卻是現有反射技術的一大躍進,並在未來以其採用的方法作為基礎,用於照明與反射整個場景。


廣告看板的光可以準確的透過多個表面反射,或由設計師調整,創造出顯著的特效。 光澤感取決材質的反射能力及其與光源的距離,在此例子,濕漉漉的地板變得比鄰近的牆壁還亮。


以同一個場景,用等向反射與不同程度的模糊所製作的三個範例。

為確保此先進的光源照明技術不會出現不符真實世界的情況,削去場景內的物體及幾何形狀或漏光,開發人員會在編譯與著色其圖層時,建立靜態反射陰影(Static Reflection Shadows),同時為確保在移動的物體中亦能獲得相同的結果,例如「撒瑪利亞人」宣傳影片中出現的警車,便從攝影機或角色視點的位置即時產生動態反射陰影(Dynamic Reflection Shadows)。


靜態反射陰影的範例,用於避免如最左側圖中所示的漏光現象。


動態反射陰影範例,讓機器人與車子貼在地上,而在未使用DRS的右圖中,機器人與車子似乎浮在空中似的。

上述即是影像式反射技術的重要性,以及其對於場景逼真度的影響,Mittring 肯定表示,「宣傳影片最貴的部分就是這些技術」一點都不讓您驚訝。 在特效組合中,廣告看板反射及其遮蔽與陰影為整部「撒瑪利亞人」宣傳影片中最昂貴,最耗費效能的特效 – 重大技術升級所需的一小部分成本。


Epic 常用的「Powered by Unreal Technology」主題與標語在「撒瑪利亞人」宣傳影片中亦以廣告看板的方式呈現。 注意右側表面及物體上的反射。

為平衡影像式反射技術所耗費的成本,便採用 DirectX 11 的延遲著色(Deferred Shading)照明技術。 在使用 DirectX 9 與 DirectX 10 開發的 Unreal Engine 3 遊戲中,因場景內其他元素同時著色,而事先擠壓到動態照明計算進行的緣故,便採用事先著色(Forward Shading)照明方法。 採用延遲著色技術後,便分開處理幾何著色,並將照明計算細分為寫入顯卡緩衝區的較小元件,然後在需要時,於「延遲階段」中結合,而非立即將結果寫入框架緩衝區。 因此可減少照明場景所需的運算能力與記憶體頻寬,而且透過遮蔽可見部分與未被建築物或其他物體擋住的方式,減少場景的複雜度,提升畫面播放速率。

Epic 的 Mittring 指出,延遲著色「雖然在簡單的場景中,需耗費較高的效能成本,但若採用複雜的幾何圖形與許多光源,此方法將顯現其價值。 由於我們在不到一秒內可以作的事情有限,因此我們可以用更多光源獲得更多幾何圖形細節。」 在「撒瑪利亞人」宣傳影片的開場的街道場景內,可以看見一百二十三盞動態光源,而與 DirectX 9 舊有的事先著色技術方法,效能加快十倍之多。


「撒瑪利亞人」宣傳影片的開場場景採用一百二十三盞延遲著色的光源。 請注意將馬路右線上的警車拿去,僅留下其動態的紅藍光源。

第二頁

回應