zoukankan      html  css  js  c++  java
  • 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: https://files.cnblogs.com/atyuwen/SSDO.rar

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

  • 相关阅读:
    移动平台的meta标签-----神奇的功效
    JAVA工程命名规范
    linux 查看tomcat 实时日志
    linux 配置全局jdk环境
    AJAX 前后端交互 验证信息是否正确
    数据库更新DATE类型的时间
    jq 克隆 移除table
    eclipse 安装javaEE插件 和htmlxmljsp编辑器
    oracle 正序 逆序 排序查询
    JQ遍历 input 并修改name属性
  • 原文地址:https://www.cnblogs.com/atyuwen/p/ssdo.html
Copyright © 2011-2022 走看看