AO是干嗎的?
Ambient Occlusion,環境遮罩,可以類比陰影,前者算是環境光的陰影,后者是直接光照的陰影,描述了場景中
凹凸遮擋下的環境光表現,模擬的是大自然中間接光的不散射效果
AO效果怎么實現,在渲染中?
1. 最好的方式,就是以當前點出發,在其半球面上向各方向發射大量光線,計算其平均的可見性,來得出一個曝光
度,比如有一半的方向不可見,發出的光線被遮擋了,那么曝光度就是0.5,但是這樣計算量太大,適合離線處理
2. SSAO,Screen Space AO,基於屏幕空間的AO,跟后處理的普通原理一致,是基於屏幕像素的,這樣的話,就
與場景復雜度沒有關系了,而且可以實時計算
SSAO原理?
將深度緩存當成場景屏幕化的代表,用深度比較計算代替光線發射遮擋計算,如果有法向的緩存,以R為半徑,在當前點的半球空間
隨機采樣一些點,以這些點與當前點的深度關系,計算出當前點的曝光度
SSAO的問題
當采樣點較少時,會產生不平滑的問題,這時需要使用平滑濾波的方式來消除采樣不足產生的噪點