2008年11月16日 星期日

Screen Space Ambient Occlusion

已經調整到不是針對某些模組,

而是整個遊戲場景的物件,

不管是極大的物件和極小的物件,都有相當棒的AO效果。

為了調這個參數,還複習一下微積分的東西。對了,只有sample 8次而已。

但是還少一些因素還沒實作出來。針對Crysis的SSAO作實驗性的測試,

也讓我察覺到Crysis的SSAO運算的可怕之處!。

那個部分就是加強物體與物體之間距離的AO比例,

並不是單純只算物體與物體之間的連接縫!這點是一般人所忽略的。

因為那部分必須在run-time的過程中,才發覺到此變化的。

假設第一張圖那樣,那個茶壺和「甜甜圈」之間的會有相當深的Occlusion。

但是我這邊並沒有表現的相當亮眼。

別小看這個因素,因為這個因素會讓人覺得說:喔!這是SSAO耶~









最後一張,我加強Occlusion的強度



08/12/29:

更新了一些算式,

並且新增blur效果,是8*8的blur,範圍1.5的pixel size。

最後影片為:

雖然只是擺放幾個物件而已,

不過這效果已經很逼近StarCraftII所呈現的SSAO,

會這樣說是基於在遊戲上有實際去執行過並且所呈現出的結果。




video

09/01/05:

只計算SSAO

8 * 1 的sample,blur為 15 * 15

先看看nvidia的一個範例影片:Dynamic Ambient Occlusion

再來看看我的部分:

感覺上跟真正的AO還是有一段距離XD。




video

因為低模組的關係,計算AO的結果無法相當有smooth,

所以可以利用NormalMap來解決此問題:



video


寫過normalmap的人都瞭解,當geometry是處於「背光」的話,

所呈現出來的凹凸平面相當不明顯,

那我利用SSAO特性來將此缺點給改進過來。

在我寫的Render Engine中,

都可以同時呈現「非normalmap」和「normalmap」的geometry。


09/2/14

最近終於把Terrain的normal給它「正確」運算到,

所以把自己寫的SSAO給放上去。這次的SSAO有點一不一樣,

從上面的影片和圖片看來,只要沒有Occlusion到都是白色,

現在為了在視覺效應上,所以不會是全白色的。這樣的對比不會太強烈,

因為太強烈的話,會讓人覺得說這邊太黑了。

有玩過crysis的編輯器的話,他的terrain跟我運算的結果差不多,

有興趣者,去下載crysis的demo,裡面有附編輯器。

運算上還是一樣,sample 8,1/2 render target,15 * 15 blur,

並且打霧和fake HDR。
第一張:只是單純的diffuse color。




第二章:diffuse color 和 SSAO。


我算的SSAO,其實運算量很少,沒雙迴圈,沒flow control,

在nvida 8400去跑,也沒什麼拖到,主要還是cpu的瓶頸。

所以在scene manage上,我必須要多多做優化。

我有一個測試報告,請看此文章:優化pre-pass和post-pass

最後,此文章不再次更新了,因為有一些原因的關係,

所以就期待產品的推出XD。