2011 年的 GDC,是第 25 屆,不過也好像沒有特別盛大什麼的。反而是讓人感覺規模越來越小,就連報名參加所給的一個資料袋,質感都越來越糟...
依照慣例,前兩天是 Tutorial 課程跟一些 Summit 演講。
今天還是參加了一整天的 Tutorial,題目是 – "Advanced Visual Effects with DirectX 11"
--------------------------------------------------------------------------------------------------------
早上第一堂課,介紹的是 DX 11 裡的 Device Context & Command List,多緒繪製的架構。
接下來,是 Deferred Shading 的最佳化策略。包括 Light Pre-pass, Light Geometry Optimization 幾個方法。不過,Light Pre-pass 馬上在下午的課程裡被打槍...
接著是 Civilization V 。
他們用了一個稱為 "Packetized Rendering" 的設計策略,將所有的 API call 包裝成一個 packet,送到 engine 去處理,每個獨立的 render job 可以降低彼此之間的關聯性,甚至沒有關聯。然後可以很自豪的說,"No threading bugs"。
展示了一個很壯觀的 Screen Shot -- 滿滿畫面的兵,底下還秀了CPU 效能,12個核心同時在跑!!
然後是 Dragon Age II ,介紹他們所使用的 DX11相關技術。
他們主要用在 Dynamic Lighting ( Light Pre-pass method ), Tessellation, Diffusion Depth of Field (DDOF), Contact Hardening Shadows 上。
從這裡開始,DDOF 就一直出現了...
根據他們所說, Tessellation 是一個效能殺手。所以,只用在看得到的、很靠近攝影機的地形上。
也就是,這技術並不是什麼都適用的好物...
Contact Hardening Shadows 做出來的 Soft-shadow 效果,比過去用的 PCF Filtering 好非常多。DX11 SDK 上有 Sample,不過,我的電腦還是 DX10的顯卡,跑不起來,只能看靜態的圖...
下午第一堂課,就由 DICE 介紹他們的大作 Battle Field 3。
這遊戲,只支援 DX11,拋棄 DX9。
他們說,BF3 是大作,所以可以推動 OS 以及硬體的更新。
我們在旁邊,表示 .. "一切樂觀其成"...
太樂觀了...
BF3 的 Deferred Shading 並沒有使用 Light Pre-pass 方法,因為 Light Pre-pass 要對 Geometry render 兩個 pass,對 BF3 而言,Geometry 太多,不適用。
BF3 用了一個特殊的想法。
將 Screen Image 切分成幾十個 Tile,每個 Tile 用 Compute Shader 計算相關的 Light Info,這樣,據說可以計算場景裡高達 1000 個點光源...
BF3 的場景裡的物件也是很多的,所以依舊存在著 Draw Call 的 Bottleneck。所以, BF3 將 Instancing 發揮到最大極限,從一個 Object 一個 Draw Call ,變成 "一種" Object 一個 Draw Call...
效能大提升。
最後,BF3 呼籲 : Drop DX9!!
(我們還是繼續在旁邊... "樂觀其成"...)
接下來是一個日本人的介紹。
精神不濟加上日式發音很難懂,以致這半個多小時全部不知道什麼是什麼...
然後,又來 DDOF 了。
主題是 DDOF Solver,不太懂在做什麼,回去要開始找資料開始瞭解。
接下來的主題是 Separable Filters。
是用 Compute Shader 取代 Pixel Shader 做 Image Base Filter 的想法。
舉例就舉例嘛,不知道為什麼,又拿 DDOF 來舉例...
DDOF 看起來好像真的很重要...
然後談到 Tessellation, Displacement Shading, 重點 : 請用在 "Key Assets" 上...
最後,再經過一段冗長的 Post-Processing Performance Optimizing 演講,好不容易,下課休息。