ssao

ssao

SSAO全稱“Screen-Space Ambient Occlusion” (螢幕空間環境光遮蔽)。其最先運用於Crysis(孤島危機)遊戲中,通過GPU的shader實現。

簡介

SSAO通過採樣象素周圍的信息,利用“逐象素場景深度計算”技術計算得出的深度值直接參與運算。

效果確實錯誤還比較大,應該先進行簡單的空間劃分(或類似處理)然後計算。

不過這種方法只是近似地模擬,效果並不正確,但確實能增強場景的層次感,讓畫面更細膩,讓場景細節更加明顯。

不同於顯示卡驅動中普通的AO選項,burnout的SSAO是全動態的,無需預處理,無loading時間,無需消耗記憶體,不使用CPU,全由GPU處理,對GPU有較大的消耗

SSAO默認是關閉的,可以在遊戲視頻選項中打開。

評測

在7950GT下跑,加了ssao後,下降了15%。而且,顯示卡性能越低,下降的越厲害。效率消耗主要是在於要多渲染一遍場景到深度以及之後進行的ssao處理。這遍可以進行最佳化,如果物體的紋理不帶alpha,則可以把他們都合在一批或幾批渲染。至於深度圖的尺寸 ,我採用了與視窗一樣的尺寸,這樣精度高。也可以採用低解析度,但效果會有鋸齒,還需要進行模糊處理才比較自然。當然,如果本來就用了延遲渲染技術,本來就有深度圖了,那就可以直接拿來用了。

PRT對比

PRT用於靜態場景確實是個比較好的方案,畢竟可以預計算。但是對於動態的場景,還需要動態更新。另外,PRT的質量依賴於格線的細分程度,要是模型太簡,則效果也糟糕。

因此,PRT對於虛擬現實項目里的高樓大廈等場景(這些模型都是很精簡的)來說,就顯得不合適了。

已發行的遊戲中,運用SSAO的遊戲有:

Battlefield 3(戰地3)

Crysis(孤島危機)

Fallout 4(輻射4)

Burnout(TM): Paradise The Ultimate Box(火爆狂飆5:天堂)

Company Of Heroes 2(英雄連2)

Empire: Total War(帝國:全面戰爭)

World of Warcraft(魔獸世界)

Lost Planet 2(失落星球2)

Tomb Raider 9(古墓麗影9)

Amnesia: The Dark Descent(失憶症:黑暗後裔)

StarCraft 2(星際爭霸2)

Watch Dogs(看門狗)

The Elder Scrolls V:Skyrim(上古捲軸5:天際)

DIABLO Ⅲ(暗黑破壞神Ⅲ)

名詞定義

從HL2開始,眾多遊戲公司開始對於如何表現“間接光照”進行研究,這些曇花一現的技術有:

運用於HL2的radiosity Normal Maps技術,效果比較垃圾

運用於Stalker的GI(?)技術,算法不好,開銷巨大。

初期Crytek準備運用在Crysis上的Photon Mapping(光子映射)技術,開銷同樣比較垃圾,被拋棄。

隨後Crytek又準備運用在Crysis上的Real-Time Ambient Map(實時環境光照貼圖,簡稱RAM),這個是與之前Stalker使用的技術比較類似的,也是最接近SSAO的一個技術。

不過Crytek不愧為“間接光照”研究上的先鋒,其技術員對於RAM進行了改進,新的算法成為了如今的SSAO

SSAO開與關的區別所在

SSAO(Screen-Space Ambient Occlusion)是一個純粹的渲染技術,或者說,是一個算法。雖然從上文知道是為了實現“間接光照”的效果,不過從技術上講,就是一個對於AO(Ambient Occlusion環境光吸收,也就是NV 185.20驅動加入的那個,一個渲染技術,我們可以在Maya等3D軟體中可以見到)的一個逼近函式,並且以此為據進行實時渲染。

SSAO比起185.20驅動中AO的優點:

與場景複雜性無關

無數據預處理,無loading時間,無系統記憶體分配

動態渲染

每個像素工作方式始終一致

無CPU占用,完全通過GPU執行

與流行顯示卡的管線整合相當容易

缺點也是有的:

由於採樣全部在可見點上進行的,對於不可見點的遮擋影響會有錯誤的估算。

顆粒感比較重,需要與動態模糊緊密配合才能取得較好效果。

運作方式

SSAO螢幕空間環境光遮蔽的運作方式

其實了解了AO環境光遮蔽的原理,SSAO(螢幕空間環境光遮蔽)已經可以融會貫通,SSAO通過採樣像素周圍的信息,並進行簡單的深度值對比來計算物體身上環境光照無法到達的範圍,從而可以近似地表現出物體身上在環境光照下產生的輪廓陰影。

具體的運作方式上,SSAO會利用GPU計算出指定像素的空間坐標,然後以此坐標為基點,在周圍選擇數個採樣點進行採樣,然後將採樣點的空間坐標投影回螢幕坐標,對深度緩衝進行採樣,最後得到採樣點的深度值,再進行後續計算,最終得到一個遮擋值。

SSAO實現了較好的全局光照效果 SSAO實現了較好的全局光照效果

SSAO螢幕空間環境光遮蔽實現了較好的全局光照效果

因為是基於指定空間的全局計算模式,因此SSAO實現效果的優劣取決於算法,包括空間的指定範圍和採樣點的選取等等。需要指明的是,不同遊戲(引擎)在SSAO的細節算法方面可能不盡相同,另外SSAO還會結合其它光照技術共同達成遊戲畫面的渲染,所以SSAO在很多遊戲中不會有專門的開關選項,其最終的表現結果可能是與其它技術共同作用的結果。

相關詞條

相關搜尋

熱門詞條

聯絡我們