
在今年所舉辦的洛杉磯 Siggraph 會議上,由 Gerrilla Games 首席程式設計領導人 Giliam deCarpentier 與小島工作室的石山公平所主持的「Decima引擎:更加先進的光線與反鋸齒技術」發表會中,展示了他們用在 PS4 Pro Horizon: Zero Dawn《地平線:期待黎明》的反鋸齒處理與 2160p (4K)棋盤式畫面顯示,以及將被用在未來作品的光線技術。
區域性光源技術Decima 引擎算是製作團隊用來支援區域性光線表現的其中一項工具,然而最初的原型並未支援GGX(一種用來模擬真實情況下粗糙表面反射效果的陰影模組),也因此製作團隊最近開始針對區域性光源處理技術進行升級,將支援 GGX 的功能加入球體區域光源的工具中。
然而,將 GGX 整合入區域光源工具並不是一件容易的事,還需要事先估算結果。製作團隊利用 Brain Karis 所描述的光線彎折手法,這種作法不但成本低(從硬體的角度來看),過去也成功用於其它引擎上。
事實上,最後的結果相當不錯,只是這麼做將會導致畫面扭曲,特別是處於掠射角度的情況下,因此 Guerrilla 工作室必須自行針對估算系統進行優化。
透過下方模型的比較可以看出差異,左邊是由 Brain Karis 提出的作法,中間為對照組,右邊則為 Guerrilla 調整後的結果。

另外,下方是這套系統運用在《地平線:期待黎明》上的樣子,左邊為 Brain Karis 提出的模型,右邊則是 Guerrilla 優化後的結果。不過要注意的是,這套系統一直到《地平線:期待黎明》推出後才完成,不過製作團隊目前已經運用此技術來修正遊戲,也確定將套用於未來的作品當中。

反鋸齒技術
至於《地平線:期待黎明》所使用的反鋸齒技術,製作團隊表示他們已經試過好幾種方法。
首先是一開始選擇單獨使用「快速近似反鋸齒」(FXAA),接著又嘗試了「強化次像素型態反鋸齒」(SMAA),然而事後證明任何單純的後製處理都無法完全消除鋸齒,所以製作團隊決定直接從模型上移除鋸齒邊緣,然而無論在怎麼補足都無讓《地平線:期待黎明》達到理想效果。
其中像 SMAA 這種後製運算技術是非常昂貴的,當你在遊戲中凝視草地時,SMAA 會針對每一張畫面幀數在 2 毫秒內進行運算,而仰望天空時,時間則會縮短成三分之一。
製作團隊一度以 SMAA 作為臨時的反鋸齒解決方案,不過最後選擇混合 FXAA 以及 Guerrilla 自家的「暫時性反鋸齒」(TAA)改良版進行反鋸齒處理,在 PS4 主機 1080p 的情況下,畫面每幀的處理時間不超過 1 毫秒。
製作團隊透過下方這張主角 Alloy 拉弓的圖片由右至左分別在不做反鋸齒(no AA)、FXAA、SMAA 以及他們最後選擇的 FXAA+TAA 反鋸齒方式進行比較。

而這張圖表則是各種方案在仰望天空與注視草地時,畫面每幀所需的處理時間比較。

底下還有另一張圖是以 Alloy 的頭髮來做比較,從第一張到第四張分別是不做反鋸齒(處理時間0.31毫秒)、FXAA(0.55毫秒)、SMAA(1.26毫秒)、FXAA+TAA(0.86毫秒)。

根據 Guerrilla,透過 TAA 技術不僅能夠汲取更多細節,也具有暫時提升穩定性的效果。有興趣的玩家可以觀看下方這部影片來了解各個技術在動態畫面中的比較結果。
《地平線:期待黎明》各種反鋸齒處理比較影片
2160p(4K)技術Giliam de Carpentier 在發表會當中提到 Guerrilla 用於 PS4 Pro 的棋盤式 2160p 顯示技術。 下方兩張圖為同一把弓上的細節,左邊是以 60fps 為標準、1080p 並以 FXAA+TAA 反鋸齒處理的畫面;右邊則是 2160p、使用 16 倍超級採樣反鋸齒,在 1fps 下的畫面。儘管這種設定並非可行的辦法,不過卻讓我們了解 Guerrilla 最終極的目標,倘若畫面表現不再是問題的話。

下一張比較圖則說明一般 PS4 Pro 能夠跑出來的 30fps、1512p 加上 FXAA+TAA 反鋸齒畫面(右圖),儘管比起 1080p 呈現的結果(左圖)要銳利許多,然而和中間的 2160p 設定仍有段差距。

最後,PS4 Pro 所使用的棋盤顯示技術(左圖)在 30fps 情況下十分接近原生的 1520p 畫面(右圖),卻多了許多細節,更接近 2160p 畫面(中間),可惜兩者的銳利程度依舊有差別。

這就是 Guerrilla 運用棋盤顯示技術的方式,透過增加細節來彌補銳利度不足的缺陷。銳利度在近距離查看畫面細節時非常明顯,然而棋盤式顯示技術卻允許常態觀看距離下顯示出物件細節(或者至少是點出細節),此外這套系統更常被運用於針對普遍 HD 顯示器 1080p 設定時,最終呈現的畫面品質。
透過下方這支影片便能看出 Guerrilla 所使用的畫面解決方式同樣具備暫性的穩定效果。
《地平線:期待黎明》棋盤式 1080p VS 2160p 比較影片
簡單來說,棋盤式運算方式僅針加深每一張畫面裡頭 50% 的像素,而剩下的 50% 則在下一張畫面上進行,如此便會產生每兩張畫面接近原生畫質的理想結果。當然,動態畫面理論上會讓處理程序更加複雜,所以會像是在每一張原生畫面中進行運算。此外首次測試與混和的物件也需要從原生的每張一畫面幀數進行採樣與處理。
事實上,製作團隊可以選擇以棋盤式畫面處裡呈現 1800p 解析度,結果可能會擁有更佳的銳利度,只是畫面上的細節恐怕會變少,並且更像經過濾鏡渲染後的效果。因此,他們最後決定採取能夠達到 2160p 畫面細節而犧牲部分銳利度的方式。
Guerrilla 所採行的方法是移除所有原生畫質上的節點,僅利用其來強化使用者介面與最終的背景渲染,剩下的所有東西全都透過棋盤式運算進行,包含最初測試與混合的物件,以及後製效果。
他們解決了畫面表現的問題,然而仍然必須想出讓所有東西在少了原生畫質節點的前提下運作,而最後製作團隊是從他們在 1080p 畫質下加上 TAA 反鋸齒技術的過程獲得靈感。
正常情況下,你只會加深每張畫面裡 50% 的像素中心,剩下的 50% 則是由原生畫質節點去判斷,而 Guerrilla 所做的便是重新加深 50% 像素位於角落的部分。
這麼做會使每一個像素產生兩組而非一組樣本,如同 TAA 在 1080p 進行反鋸齒處理時所產生的穩定效果,唯一的差別在於 TAA 是以像素的「邊緣」作為對象,而上述作法則是針對像素的角落。
這麼做還有一個問題,那就是畫面斜線的部分需要額外處理,不過將 FXAA 反鋸齒套用在棋盤式畫面運算便能夠解決這個問題,配合一種稱為「七巧板」的方法,此手法使用起來有點像是在玩解謎遊戲。
Giliam de Carpentier 最後也對整套系統的程序進行總結,當然,這些步驟非常具有專業性。
- 我們成功在不需要原生畫質節點的情況下進行棋盤式運算,這包含所有後製特效,我們進行了高動態畫質上色,並將結果編碼成 sRGB 或 QP,並以10-bit 形式儲存。
- 我們將最後結果轉化成一個七巧板形式存放在 YCoCg 色彩模組化空間當中。
- 這個 YCoCg 當中的七巧板接著透過FAXX 匯出成一組新的七巧板。
- 我們之所以選擇 YCoCg 是因為 FAXX 大部分的工作都是在透明化的數據下完成,這允許我們每蒐集一個質點就可以完成四次採樣。
- 至於 FAXX 所產生出的結果則儲存於一個兵乓式的增幅器當中,提供我們近期以及先前的架構作為解決方案。
- 在最後步驟中,我們將當前以及上一個七巧板轉化回 RGB 當中,再參考基本標準決定要丟棄或重新輸入。
- 倘若之前的七巧板經過判定後必須丟棄,那麼我們只會針對當前的這一個進行採樣,提供我們每個像素至少獲取兩個有效樣本。
- 倘若之前的七巧板經過判定後不必丟棄,那麼我們便會將其結合至當前這一個以 50/50 的方式平均,讓我們從每個像素獲取 4 個有效樣本。
- 從概念的角度去看,最後這個步驟與 TAA 在 1080p 畫質上的解決方式十分相像,不過少了銳化的過程。
- 以上過程就是我們如何透過棋盤式畫面運算在 2 毫秒內完成。



