Unreal | SSAO的升级HBAO+
UE4AO虚幻引擎技术Thepoly 14407 0
实名

通过了实名认证的内容创造者

发布于 2022-3-25 13:40:23

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 Thepoly 于 2022-3-25 13:43 编辑

             640.jpg
174551k9r66ex7z719e99h.jpg


Hello . 大家好
今天是AO续作HBAO+
我是木偶心没



接上一篇文章说到SSAO存在一些阴影清晰度和画质问题Unreal | AO那些事,所以在2008年的SIGGRAPH技术会议上,NVIDIA推出了升级的SSAO,基于水平的环境光遮罩HBAO。与以前的SSAO不一样的是,HBAO基于物理的算法,能生成更高质量的SSAO,同时增加AO阴影的清晰度质量和可见性。

然而处于性能的原因,一般游戏都以半分辨率渲染HBAO,比如《战地3》,将AO像素的数量减少了四分之三,但是以较低的分辨率渲染的HBAO会导致一些闪烁。所以为了解决这个问题,NVIDIA又重新开发并改造了SSAO,得到了最先进的HBAO+,这是SSAO渲染领域的典型转变。而且与HBAO相比,HBAO+将AO效果的细节级别提高了一倍,运行速度提高了三倍,并使用了最新的DirectX11技术。




而对于原来的SSAO,HBAO+修复了下面这个bug。
首先是一个空场景


往里面加一个动态的角色


如果角色离墙很近,那他周围的确会有一圈墙面的AO效果。但是如果角色是远离墙面的话,按照SSAO本身的计算方法,取物体上面的一个点,然后在采样球里面取随机采样点


根据深度判断采样点和中心点的遮挡关系,并将最后的结果相加,得到的结果就会让远离墙面的角色本身也受到错误的AO效果。

所以为了得到正确的结果,HBAO+使用了双pass AO去计算。比如对于下面的场景


第一个pass只计算静态物体的AO。


第二个pass计算静态物体以及角色的AO。


然后抠出场景中的角色。


然后把这些动态的角色加载到第一个pass计算出来的AO图中。


但是这样子角色和地面的AO就完全消失了。


所以我们还需要在角色和地面接触的部分增加AO效果,在反转动态物体mask后得到的新mask区域,与地面进行最小深度混合,最后就只会得到正确的角色与地面接触的AO值。


由于在Ultra预设中double-pass HBAO+被设为默认,所以也可以称为HBAO+Ultra,并且添加了高级的混合函数到HBAO+中。


当然除此以外还有比HBAO+慢3-4倍但是效果很好的VXAO,HDAO以及PBAO等。有兴趣可以了解一下。

以上纯属个人见解,详见参考:
https://archive.org/details/GDC2016Panteleev
https://www.nvidia.cn/geforce/technologies/hbao-plus/technology/


- End -


   
ABOUT US
关于我们


喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。公众号是我们最为官方的窗口,更多内容都必须关注公众号后才能获取。另外现已开通网站:www.thepoly.cn更多精彩请关注我们。
         

本帖被以下画板推荐:

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表