Screen Space Ambient Occlusion


AO ​

Assumption: incident indirect lighting.

different visibilty

近似 渲染方程中的间接光项同时包含可见性函数 V(p,ωi)、入射光强 Liindir 与 BRDF fr。

∫Ωf(x)g(x)dx≈∫Ωf(x)dx∫Ωdx∫Ωg(x)dx
  1. RTR近似:
Loindir(p,ωo)≈∫Ω+V(p,ωi)cos⁡θidωi∫Ω+cos⁡θidωi⋅∫Ω+Liindir(p,ωi)fr(p,ωi,ωo)cos⁡θidωiLo(p,ωo)=ρπ⋅Li(p)⋅∫Ω+V(p,ωi)cos⁡θidωi⏟这就是 AO 项 (环境光遮蔽)
  1. Ambient Occlusion, kA定义:
kA=V―=∫Ω+V(p,ωi)cos⁡θidωiπ
  • 点 p 在法线半球 Ω+ 内的余弦加权平均可见度 V―。
  • ∫Ω+cos⁡θidωi=π
  • kA∈[0,1],用以表示该点吸收环境光照的能力(1 表示完全无遮挡,0 表示完全被遮挡)。

平均V * 数


SS ​

在屏幕空间环境光遮蔽(SSAO)中,对上述半球积分 kA 的求解通过屏幕空间几何采样实现:

  1. 观察空间采样核构建 (Kernel Sampling): 在视图空间(View Space)中,以着色点 p 为原点、沿法线 n 构建半球坐标系,在采样半径 R 内随机生成若干 3D 采样点 psample。
  2. 投影与深度测试 (Projection & Depth Comparison):
  • 使用透视投影矩阵将 3D 采样点 psample 映射至屏幕空间坐标 (u,v)。
  • 查询深度缓冲区(Depth Buffer)在 (u,v) 处的几何深度值 Zbuffer(u,v)。
  • 比较采样点的视图深度 z(psample) 与 Zbuffer(u,v):若 z(psample)>Zbuffer(u,v),判定采样点位于几何体内部,即发生遮挡(V=0);反之未被遮挡(V=1)。