SSAO vs. HBAO vs. HDAO - 真正的区别是什么?

这个选项让我感到困惑,在《远征3》中我曾在SSAO、HBAO和HDAO之间进行选择。

点击谷歌并没有真正给我任何答案,也没有启用每个选项并比较结果。显然,我是个瞎子还是什么。

首先,哪一个是最好的质量?其次,这些选项之间的真正区别是什么?

解决办法

H*AO提供了更好的质量,但对性能的打击也增加了。

SSAO的精确度较低,但在提高图像质量的同时,对性能的影响要小得多。

如果你要使用H*AO,据我所知,如果你有ATI卡,你应该选择HDAO,如果你有nVIDIA卡,应该选择HBAO。

HBAO和HDAO本质上是同一件事,但供应商的具体实现方式不同。

这里有一些BF3的屏幕截图,可能会有帮助:http://www.reddit.com/r/gaming/comments/kwjtw/my_battlefield_3_screenshot_comparison_ssao_vs/

我建议使用他们在这里提供的链接:http://www.flickr.com/photos/bmorlok/6197863052/in/set-72157627662461565/lightbox/,并使用光标键在3张屏幕截图之间快速来回翻阅

你应该很快就能识别出阴影发生在无、SSAO和HBAO之间。

看一下物体相交的地方。例如,地板与墙的交接处,柱子与天花板的交接处,灌木丛,地面上的碎片。

我冒昧地攫取了其中一张照片,并在来回翻动时突出了你应该看的区域。

你会注意到,SSAO在这些相同的区域有阴影,但它没有那么明显。

评论(3)

首先,屏幕空间的环境遮蔽根本不是一个基于物理的效果,所以不存在*现实主义的说法。该效果的理论基本上是这样的

任何未被覆盖的表面(可选择在一定距离内)都被照亮

即使是光线跟踪,它也只是一种快速而肮脏的方法,可以突出模型上的小细节。

第二,所有这些技术都只是SSAO的迭代;所有这些技术都是在场景被渲染后作为后期处理工作的。这意味着着色器必须做一些神奇的事情,才能从栅格化后剩下的少量信息中产生准确的东西。

SSAO

这是最古老的技术。它假定在给定的屏幕空间半径内的任何像素都可能是遮挡者。这大致是通过计算模糊和原始Z(深度)缓冲区的差值,如果模糊版本的值更大,则将结果变暗。

这种方法的缺陷是,它既会错误地变暗,又不能检测到某些特征。你必须好好看看这根柱子,但你会注意到,虽然天花板在侧面有虚假的阴影,但在交界处却没有受到影响。

天花板和柱子的结合,一个SSAO的演示]1

本文有一些更多的图形例子。

HBAO

这种算法试图解决SSAO的问题。它通过使用更多的信息,即法线图来实现。它不是在屏幕空间中搜索像素周围的遮挡物,而是试图恢复场景中的一小部分,并对应该存在的亮度做一个更有依据的近似估计。

你可以注意到,天花板很明显是*朝下的,而且,柱子在顶部更暗。

柱子撑起了天花板,HBAO]3

英伟达的一篇论文有一些更多的细节。

结论

HBAO是一个较新的算法,它能产生更接近......的近似值。


图片是这些截图的片段。

评论(3)

HBAO还意味着使用眼睛图像平面技术来模拟从某些级别的光线看向其他级别的光线时的虹膜大小差异。

HDAO没有这样做。

评论(1)