簡介
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在很多遊戲中不會有專門的開關選項,其最終的表現結果可能是與其它技術共同作用的結果。