Unity AO SSAO
AO是干吗的?
Ambient Occlusion,环境遮罩,可以类比阴影,前者算是环境光的阴影,后者是直接光照的阴影,描述了场景中
凹凸遮挡下的环境光表现,模拟的是大自然中间接光的不散射效果
AO效果怎么实现,在渲染中?
1. 最好的方式,就是以当前点出发,在其半球面上向各方向发射大量光线,计算其平均的可见性,来得出一个曝光
度,比如有一半的方向不可见,发出的光线被遮挡了,那么曝光度就是0.5,但是这样计算量太大,适合离线处理
2. SSAO,Screen Space AO,基于屏幕空间的AO,跟后处理的普通原理一致,是基于屏幕像素的,这样的话,就
与场景复杂度没有关系了,而且可以实时计算
SSAO原理?
将深度缓存当成场景屏幕化的代表,用深度比较计算代替光线发射遮挡计算,如果有法向的缓存,以R为半径,在当前点的半球空间
随机采样一些点,以这些点与当前点的深度关系,计算出当前点的曝光度
SSAO的问题
当采样点较少时,会产生不平滑的问题,这时需要使用平滑滤波的方式来消除采样不足产生的噪点