我听说过环境光遮挡,看起来不错,但是到底是什么呢?
我听说过环境光遮挡,看起来不错,但是到底是什么呢?
Answers:
环境光遮挡是一种根据光线及其环境来估算明亮的光应如何照射到表面的任何特定部分的方法。这用于增加真实感。
维基百科上有一段很好的段落,说明了完成的工作。
环境光遮挡通常是通过从表面向各个方向投射光线来计算的。到达背景或“天空”的光线会增加表面的亮度,而撞击任何其他对象的光线则不会产生照明。结果,被大量几何图形包围的点将变为黑暗,而在可见半球上几何图形很少的点将显示为亮。
环境光是计算机图形学中用于模拟全局照明的光类型。环境光遮挡只是对物体阻挡环境光而造成的阴影的模拟。因为环境光是环境光,所以与其他类型的照明不同,环境光遮挡不依赖于光的方向。这样,它可以为静态对象预先计算。
不使用AO(左)请注意,左图像中的阴影是由定向光引起的,而使用AO(右)。
在传统的光线跟踪中,环境光遮挡是通过从特定点采样光线来模拟的,该点呈半球形,然后检查是否与场景相交(也称为对象空间AO)。
注意如何使用射线样本模拟AO积分。
注意由环境光遮挡欠采样引起的混叠(点)。
由于光线跟踪采样技术太慢而无法在实时计算机图形中使用,因此出现了模拟这种行为的其他方法。一种值得注意的方法称为屏幕空间环境光遮挡(SSAO)。
SSAO是Crytek开发的屏幕空间技术。使用Z缓冲区作为唯一输入,以全屏方式计算环境光遮挡。
kA
通过测试在像素位置周围的半球中分布的一组点,可以估算每个像素的环境光吸收系数。这有效地模拟了屏幕空间中的传统光线跟踪方法。
的值kA
取决于Z缓冲区中值前面的样本。如果一半或更多样本通过了深度测试(也就是说,它们比中心像素更靠近相机),则kA
接收到的值为1。较少的样本结果kA
小于1。
典型游戏场景的SSAO组件
http://en.wikipedia.org/wiki/Ambient_occlusion
环境光遮挡通常意味着应用表示环境光照射到表面的数据。该数据通常是灰度纹理或顶点颜色,具体取决于实现方式。
要计算数据,最常见的方法是使用纯白色纹理和1个点光源多次渲染场景,每次将点光源移动到球体或半球的不同位置。对所有渲染的结果进行平均,从而为您提供有关场景中每个特定位置以及命中该位置的光量的数据。
例如,在场景中始终处于明亮状态的一个地方,无论您将灯光放置在什么地方,都将是明亮的;而在黑暗的地方,无论您放置在何处的灯光都会是黑暗的。结果是您得到的东西会在缝隙,裂缝和柔和的灯光中放置深色阴影,而物体通常会投射阴影。
环境光遮挡是一种计算对象表面上的照明的方法,该方法考虑了由于相对于光源的表面光遮挡而导致的光亮度。
即,环境光遮蔽是一种本质上全局的阴影方法,这意味着来自场景中每个点的光/照明会影响场景中的其他点。与诸如Phong / Blinn之类的局部着色方法相比,这意味着具有环境光遮挡的着色可以增加真实感。
这里是一些简化的解释。环境光遮挡是一种模拟全局照明的灵巧方法,比我们目前使用的其他方法要快。从相对于表面的表面点“向上”从各个方向投射光线。光线未到达其路径中的任何物体,即达到背景虚空阈值(“天空”),会增加表面的亮度。另一方面,从表面投射时撞击几何体的光线不会增加表面亮度。因此,被许多其他几何图形包围的表面点有点像阴影。
SSAO只是进行环境光遮挡的一种方法。
环境光遮挡是指光线无法到达的地方。折痕和缝隙不会在周围反射任何光线,因此通常不存在大多数光线,它们通常会根据大气而产生“最暗的黑暗”。