Screen Space Directional Occlusion

1.  Screen Space Directional Occlusion

Screen Space Directional Occlusion (SSDO) 是对 Screen Space Ambient Occlusion (SSAO) 的一个改良,其中心思想非常简单,即在对每个 fragment 做半球采样的时候同时累积各个采样方向的 irradiance。假设在半球采样空间中,取均匀分布的N个采样点,每个采样点所占有的 solid angle 2PI / N,那么对于任意采样点 s_i ,其贡献的 irradiance 为:

其中L是来自s_i 所在方向的 radianceV visibility function,按照SSAO的方式来获得; cos(theta)fragment的法线与s_i采样方向的夹角余弦。

将每个采样点贡献的 irradiance 累加起来,乘上漫反射系数 Cdiff 再除以 PI,即得到当前fragment radiance.

2.  Indirect Bounces

SSDO中,那些被遮挡(即 visibility function 的值为0)的采样点是不参与 irradiance的累积的。如果将这些采样点也考虑进来,可以近似的模拟 Indirect Bounces,得到漂亮的 Color Bleeding效果。比如若某采样点s_j,被p点所遮挡,那么根据下面的公式算出p 对当前 fragment贡献的 irradiance,并进行累积即可。

其中 Lp p 点的 radiance, V 的意义同上,后面的一长串类似于 radiosity 中的 form factor.

3.  Implementation

下面提供一个很囧的实现。虽然效果不是很理想,但大体上的特征应该还是体现出来了。因为所使用的参数并没有采用正确的物理量纲,结果在实现中不得已添加了很多丑陋的Scaling 系数,看来以后还是不能偷懒啊。

1.       Variance Shadow Map (VSM)

 

2.       VSM + SSAO

 

 

3.       VSM + SSDO

 

 

4.       VSM + SSDO + First indirect bounce

 

 

RM Project: http://files.cnblogs.com/atyuwen/SSDO.rar

 

增加GPU Pro中的ssdo实现:http://files.cnblogs.com/atyuwen/gpu_pro_ssdo.7z

 

转载于:https://www.cnblogs.com/atyuwen/archive/2010/03/31/ssdo.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值