最近,我想改善游戏引擎中的照明,自然而然地我将目光投向了环境光遮蔽。我当时正在考虑使用SSAO,但是还有更好的技术吗?也许有些是基于身体的?是否有其他技术可以完全替代SSAO或HBAO +?

我知道VXAO,但这基本上是吗?

评论

computergraphics.stackexchange.com/questions/2161/…中的答案之一链接到有用的论文:frederikaalund.com/…它详细介绍了几种不同的AO技术。

#1 楼

无论使用哪种算法来计算,环境光遮挡都不能基于物理。这是对全局照明的简化,它假定所有遮挡物都只能阻挡光线并且自身是完全黑色的,这是不正确的,并且通常会使拐角处的阴影变暗。全局照明方法,但它们通常没有足够的分辨率来捕捉环境光遮蔽模拟的效果,并且屏幕空间的全局照明往往过于昂贵。即使这在物理上并不完全正确。屏幕空间环境光遮挡方法是最快的,但是受其访问的信息有限的困扰,这可能导致伪像,例如前景和屏幕边缘的对象周围出现光晕。像VXAO一样,拥有更多有关场景的信息以计算AO,可以消除这些伪像,但这又要付出性能代价。您可以花费更多的时间来计算全局照明和环境光遮挡,结果看起来会更好。特别是这似乎是有关屏幕空间环境光遮挡算法的可靠资源。我个人使用Alchemy AO加速了大半径,并具有类似于可伸缩环境模糊纸的深度mip链的良好效果。

作为传统AO的替代方法,我听说过很多,Screen-Space中有弯曲的法线和圆锥。据我了解,关键的区别在于,它不只是计算空间点被遮挡的数量,而且还捕获有关特定方向被遮挡的信息。然后,此信息随后用于照明,其中仅考虑来自不受遮挡方向的光。它仍然不是您基于物理的称呼,但我认为它比通常的环境光遮挡更近。