屏幕空间环境光遮挡(SSAO)是一种近似计算因遮蔽而造成的光线衰减的效果。通常是在标准全局光照的基础上增添细微效果,例如让角落、裂缝或其他生物变暗,以形成一种更加自然真实的视觉效果。
![]() |
![]() |
![]() |
---|---|---|
没有环境光遮蔽的场景 | 仅有环境光遮蔽 | 有环境光遮蔽的场景 |
这种效果是通过SSAO方法实现的,也就是AO量是在屏幕空间中的延迟通道中计算的。 我们的方法使用景深缓冲和GBuffer法线(请参阅“延迟着色”)。这意味着,法线贴图细节会影响最终结果。在UE4中,这种效果已经应用到了环境光立方体贴图(AmbientCubemap)。它不影响直接光线,因为我们在这里使用了阴影贴图。
您可以直接使用“呈现GBuffer(Visualize GBuffer)”视图模式(请参阅“视图模式”)或使用显示标志“呈现环境光遮蔽(Visualize Ambient Occlusion)”来查看AO值。
由于AO是GBuffer的一部分,因此也可以由材质输出。SSAO和材质AO组合起来,可以产生更暗的AO。
属性 | 说明 | ||||||
---|---|---|---|---|---|---|---|
强度(Intensity) | 全局控制环境光遮蔽数量。值0.0表示没有环境光遮蔽,1.0表示完全环境光遮蔽。
|
||||||
半径(Radius) | 用虚幻单位定义半径。半径越大,运行速度越慢(纹理缓冲崩溃),并且会因有限的样本计数而出现更多瑕疵。
|
||||||
场景空间中的半径(Radius in WorldSpace) | 如果启用,则假设 AO半径(AO Radius) 属性位于场景空间中。否则,假设位于视图空间中。 | ||||||
距离(Distance) | 这是一个调整参数,用于避免对象周围出现黑暗光晕。由于SSAO方法只有zbuffer,因此无法知晓对象的厚度。
请注意上方右侧示例中形象角处的光晕。距离设置值较大,会使角对表面遮蔽的计算显得不真实。 |
||||||
幂(Power) | 控制所计算的增深效果强度。
|
||||||
偏差(Bias) | 允许调整AO细节。需要设置一定的偏差来避免远处精准度失真。采用虚幻单位大于0的值,默认值(3.0)非常适用于平坦表面,但会减少细节。 |