【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

笔记

SSAO介绍

AO

环境光遮蔽,AmbientOcclusion。一种模拟光线到达物体的能力和粗略的全局方法。

SSAO

屏幕环境光遮蔽,Screen Space Ambient Occlusion, 一种实现环境光遮蔽遮蔽效果的渲染技术。通过获取像素的深度缓冲、法线缓冲来计算实现,来近似的表现物体在间接光下产生的阴影

历史

AO在Siggraph 2002年会由ILM展示
2007年,Crytek将SSAO应用于孤岛危机

原理

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
tangent其实是半球面上 随机的一个向量(随机的方法参考下文)
【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
第二步:
_SampleKeneralRadius : 采样半球的半径长度
第三步:
因为都是在观察空间下进行的计算,所以得到randomPos后,乘以投影矩阵,再视图映射即可得到相应的屏幕坐标
rclipPos :即是球面上的点

SSAO优化

1. 随机正交基

应用于求法向半球的正交基时,其第二步生成随机变量。

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

如果从天空盒的位置产生半球,采样到深度差很大的球体遮挡会产生ao,导致天空的像素上有阴影

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

改成:

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

4. AO累加平滑优化——AO权重

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

烘培AO

三维建模软件烘培

烘培AO到纹理

优点:

  1. 单一物体可控性强(通过单一物体的材质球上的AO纹理贴图),可以控制单一物体的AO的强弱;
  2. 弥补场景烘焙的细节,整体场景的烘焙(包含AO信息),并不能完全包含单一物体细节上的AO,而通过三维建模软件烘焙到纹理的方式,增加物体的AO细节。
  3. 不影响其(Unity场景中)静态或者动态。

缺点:

  1. 操作较其它方式繁琐,需要对模型进行UW处理,再进行烘焙到纹理。
  2. 不利于整体场景的整合(如3DMax烘焙到纹理,只能选择单一物体,针对整体场景的处理工作量巨大);
  3. 增加AO纹理贴图,不利于资源优化(后期可通过其它纹理通道整合资源);
  4. 只有物体本身具有AO信息,获取物体之间的AO信息工作量巨大

游戏引擎烘培AO

优点:

  1. 操作简易,整体场景的烘焙,包含AO的选择。
  2. 不受物体本身的UW影响,Unity通过Generate Lightmap UVs生成模型第二个纹理坐标数据。(TODO!!!不懂)
  3. 可以生成物体与物体之间的AO信息
    缺点:
  4. 缺少单一物体的细节(可调整参数提高烘焙细节,但换之将增加烘焙纹理数量和尺寸,以及烘焙时间);
  5. 受物体是否静态影响,动态物体无法进行烘焙而获得AO信息。

SSAO优缺点

优点:

  1. 不依赖场景的复杂度,其效果质量依赖于最终图片像素大小。
  2. 实时计算,可用于动态场景。
  3. 可控性强,灵活性强,操作简单。
    缺点:
  4. 性能消耗较之上述2种方式更多,计算非常昂贵
  5. AO质量上要比离线渲染烘焙(上述2种)不佳(理论上)。

SSAO性能消耗

主要在两个方面

AO法向半球的随机采样

  1. For结构代码
  2. 采样数:64 x 长 x 宽次AO核心计算
  3. 每个像素需要采样64次屏幕深度值、法线值
    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

    作业

    实现SSAO效果

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    AO图
    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
  4. 对于其中一个方向。再RayMarching过程中,得到一个最大的horizon angle(水平角)

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
  5. 通过horizon angle 和 tangent angle,计算得出AO。(注意这里角度的范围,是实现的细节)

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

    补充函数

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    之前的SSAO

    对比HBAO、SSAO

    1. HBAO性能是有较大提升的,更适用于移动端。HBAO采样数大量减少,如果一个像素采样4个方向,4个RayMarching的话,也即16个采样点。而SSAO 要64个采样点,相当于4倍。其实可以理解为HBAO的通过角度的大小,节约了一部分的采样点。
    2. 效果上看,HBAO近处的细节相比于SSAO,是会差一截的。原因是步进(RayMarching)是基于屏幕的,越近,像素点之间的信息就越少。

    HBAO优化

    1. 基础阈值

    当sin(H)大于一个bias时,才有ao

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

    2. 非连续问题

    只有在半球区域内的遮挡才有效,与避免从天空盒采样到遮挡同理。

    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    原HBAO
    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    公式曲线
    Per-Sample Attenuation: 逐采样衰减。考虑阈值内的各个采样点,分别乘以权重给出贡献。
    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    原HBAO
    【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
    添加衰减后的HBAO
    加入了衰减后,可以发现阴影的扩散变小了,更紧凑了。

    其它AO

    GTAO,Bent Normal,AAO,TSSAO,VXAO,UE4的Distance Filed Ambient Occlusion

    参考资料

    https://www.bilibili.com/video/BV16q4y1U7S3=2
    https://developer.download.nvidia.cn/presentations/2008/SIGGRAPH/HBAO_SIG08b.pdf
    https://blog.csdn.net/puppet_master/article/details/82929708

    文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34296 人正在系统学习中

    来源:ybyrz

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月1日
下一篇 2021年10月1日

相关推荐