Real-Time Global Illumination(screen space)

Screen Space Ambient Occlusion:屏幕空間環境光遮蔽,在屏幕空間中的全局光照的一種近似。

假設SSAO的着色點的光照是來源於次級光源或多次彈射,且都是diffuse的。但它和布林馮着色模型並不一樣。

 

 在這兩點上不一樣,考慮visibility,如果不考慮visibility,接收到的所有光就會一樣,看起來就會像是一個平面。考慮visibility後,某些着色點所接收到的光就會不一樣。這裏也假設材質都是diffuse的。

 

 

 從渲染方程開始

 

 

 間接光照是常數,着色點材質是diffu。所有BRDF是常數,把這兩項拿到積分外,這時就剩下visibility的加權求和

 

 

 計算visibility的加權求和,分在3D空間和屏幕空間下。

在3D空間下,要考慮在一定範圍內的環境光照遮擋情況,如果過小,就會忽略掉來自遠方向的環境光照,如果過大,就會沒有實際意義,因爲一般的環境光遮擋都是來自於近處的物體遮擋。

 

 

 在屏幕空間下,SSAO用了大膽的假設,以着色點爲圓心創建一個球,然後在這個球內隨機取點,如何判斷取得點能夠被着色點看到,通過camera視角下的z-buffer可以知道最淺深度,如果取到的點大於最淺深度,就會看不見,反之就能看見。當然這裏會有一點點的小問題,在下面中間的圖中,有一個點,可以被着色點看到,但它的深度大於z-buffer的最淺深度,就會被當作看不見。不過由於是工業界用法,所以忽略這個錯誤了。

 

 

 在以前的年代,shadow map記錄的內容中沒有法向量,所以要用一個球方式來判斷visibility的情況,但現在已經有了法向量,也就是隻需要用半球就可以了。

 

 

 在沒有法向量的情況下,以圖中爲列,如果紅色點沒有超過一辦,說明沒有被遮擋,在超過一半後開始計算visibility.

 

 

下圖說明SSAO的一個錯誤,在右圖的畫圈中,石凳對地面的環境光遮蔽提供了貢獻,是因爲在屏幕空間下,被石凳擋住的部分會是紅點。

 

 SSAO的球中採樣點,不能太多也不能太少,得到一個noise的AO

 

 

 然後進行dinoise,獲得一個模糊的效果,這樣AO就可以用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章