本文仅记述SSDO学习笔记!
概述
SSDO Screen-space Direction Occlusion 是对AO的扩充,在AO的基础上,假设没有遮蔽的方向有直接入射光,有遮蔽的方向,可能有间接光的反射。
SSAO理论分析
AO:在计算点的周围进行采样,如果采样点的深度大于采样点所对应的屏幕空间的深度,则认为是没有光照进入,否则我们则认为有间接光照,这样我们就可以对所有采样方向进行积分,计算这一点的光照。
让我们来看一下如何进行计算的:
一切起源于渲染方程,在渲染方程中我们有三项值得注意,入射光,BRDF以及可见度。
然而在实时渲染中,我们有一个伟大的近似公式:
- 这里需要f(x) 必须要比较光滑。
- 或者average f(x) in the support of G
那么我们可以依据这个公式将可见度分离出来,并进行积分,注意在AO里面是间接光照,并且是个常数。
对 c o s θ i d ω i cos\theta_{i}\mathrm{d}\omega_{i} cosθidωi的积分是什么呢? 对,其实就是算一个投影立体角,即 π \pi π。
由此,我们的渲染方程就转变为:
实则,在这里我们就可以看出来,这还是求解渲染方程,那么就可以理解为屏幕空间的光线追踪。
在object space进行光线追踪是非常慢的,并且依赖于屏幕的分辨率以及难以理解和计算麻烦。
在屏幕空间计算则非常简单,不依赖于屏幕分辨率,但不符合物理。
结果呢:
- 产生的结果依赖于采样,因为我们还是在求解积分,采样越多,质量越好。
- 需要采样的位置必须随机,指定半径。
- 噪点,会产生噪声,那么我们还需要后期的降噪过滤。
但总之增加了图像的细节,效果还不错。左边AO,右边 no AO。
感谢闫老师的课程。
那么我们在此基础上来看一看DO吧!
SSDO理论分析
一切来源于渲染方程,讨论过AO之后,我们知道了AO假设未被遮挡的方向有间接光照,那么DO则进行大胆假设:
- 未被遮挡的地方有直接光照
- 遮挡住的地方存在间接光照
很重要的一副图,其中 C C C点是直接光照, A , B , D A,B,D A,B,D点都表示会有间接光照, B , D B,D B,D点会有间接光照。
直接光照
是不是很眼熟,对,这时对AO方程的离散化形式,并用作直接光照的计算,让我们分析一下:
- P P