镜面环境光遮蔽
镜面环境光遮蔽技术的引入是为了解决在复杂的基于物理渲染(PBR)光照系统中,镜面反射光在实际上不应存在的区域(如凹陷几何体内部或墙面接缝处)仍然显现的问题。与传统环境光遮蔽(AO)主要应用于漫反射光不同,镜面反射光若不加处理则会保持不切实际的亮度,从而破坏视觉一致性。
为解决这一问题,提出了镜面环境光遮蔽(Specular Ambient Occlusion)的概念,即针对镜面反射的环境光遮蔽。该技术在2014年至2015年间由Crytek、Guerrilla Games、Epic Games等多家渲染团队通过论文及GDC演讲以不同方式探索后逐渐成为主流。最广为人知的论文包括Activision发布的《Physically Based Shading at Disney》和《Moving Frostbite to PBR》,这些文献详细提出了镜面反射遮蔽的数学处理方法。
观察[图34]可见,最左侧为未应用镜面遮蔽的基础渲染效果,中间为应用了镜面遮蔽的着色状态,最右侧为最终渲染效果。若不使用光线追踪等技术,在没有镜面遮蔽的情况下,很难避免光线泄漏等渲染问题。
核心理念是基于反射方向向量(R)与周围几何体的空间关系,以及视线方向与法线向量(normalWS)的点积值,对镜面光照应用权重。使用的校正参数类似于"地平线褪减"(Horizon Fade)方式,间接预测表面上可能产生反射光的方向是否实际被遮挡。某些实现方式选择基于法线向量与视线方向的余弦值来扩展朗伯遮蔽。
在现代渲染管线中,此技术以多种名称存在。Unity HDRP将其实现为"弯曲法线AO"(Bent Normal AO)或"多次反弹AO"(Multi-Bounce AO),而Unreal Engine 5系列则将其集成为反射遮蔽(Reflection Occlusion)、镜面遮蔽强度(Specular Occlusion Intensity)、弯曲锥体AO(Bent Cone AO)等多种形式。基于NVIDIA RTX的光线追踪通路虽能通过实际光线碰撞结果计算镜面遮蔽,但由于性能考量,基于视图向量的近似镜面AO仍被广泛采用。
应用案例包括《最后生还者第二部》、《地平线:零之黎明》等。尤其在人物渲染中,这一技术在眉毛、鼻孔、嘴唇内部等几何遮蔽深的区域有效衰减镜面光照。若缺少此技术,现实中不应存在的高光会降低整体真实感。镜面环境光遮蔽超越了简单的漫反射遮蔽,是为PBR镜面反射模型增添真实感的高级校正技术,目前已成为大多数AAA级渲染引擎的标准配置。它通过法线、视线方向与反射向量间的关系实时计算,在提升真实着色与光照质量方面发挥重要作用。
'(출간예정) 모두의 셰이더 프로그래밍' 카테고리의 다른 글
쳅터11 커스텀 셰이더 GUI 와 셰이더 (0) | 2025.07.02 |
---|---|
10장.... 끝은 어딜까... 하지만 곧 끝난다. (0) | 2025.06.18 |
我们的着色器编程“技术艺术家的是正道“ (0) | 2025.06.13 |
'모두의 셰이더 프로그래밍' 베타 리더 모집. (3) | 2025.06.12 |
중국에서 컴퓨터 그래픽 기술 서적을 출판하는 방법 (9) | 2025.06.11 |