反射 (计算机图形学)
计算机图形中的反射用于模拟反射物体,如镜子和光亮的表面。
可以实现准确的反射,例如 通过光线跟踪渲染器跟踪从眼睛到镜子的光线,然后计算它从何处反弹,并继续该过程,直到找不到表面或找到非反射表面。 通常可以使用环境映射等方法更快地计算近似反射。 在木材或瓷砖等光亮表面上的反射可以增加 3D 渲染的照片级真实感效果。
反射渲染的方法
对于渲染环境反射,存在许多在精度、计算和实现复杂性方面不同的技术。 这些技术的组合也是可能的。
基于追踪光线的图像顺序渲染算法,例如光线追踪或路径追踪,通常计算一般表面上的准确反射,包括多次反射和自反射。 然而,这些算法对于实时渲染来说通常计算成本太高(即使存在专门的硬件,例如 Nvidia RTX)并且需要与通常使用的光栅化不同的渲染方法。
平面反射,例如平面镜或水面,可以通过两次渲染简单而准确地实时计算——一次用于观察者,一次用于镜子中的视图,通常在模板缓冲区的帮助下。 一些较旧的视频游戏使用了一种技巧,通过将整个镜像场景放在代表镜子的透明平面后面,通过一次渲染来实现这种效果。
非平面(弯曲)表面上的反射对于实时渲染更具挑战性。 使用的主要方法包括:
- 环境映射(例如立方体映射):一种已被广泛使用的技术,例如 在视频游戏中,提供对眼睛来说基本足够的反射近似,但缺乏自我反射并且需要预渲染环境贴图。 通过使用环境贴图的空间阵列而不是仅使用一个,可以提高精度。
- 屏幕空间反射 (SSR):一种更昂贵的技术,可在屏幕空间(与光线追踪等世界空间相对)中追踪反射光线。 这是为反射表面的每个渲染像素完成的,使用表面法线和场景深度。 缺点是未在渲染帧中捕获的对象无法出现在反射中,这导致未解决的交叉点和不完整的反射图像随后导致反射边缘出现伪影。 SSR 最初是作为实时局部反射引入的,后来发生了变化。
反射类型
– 抛光反射是一种不受干扰的反射,如镜子或镀铬表面。
模糊
– 模糊反射意味着材料表面上的微小随机凸起导致反射模糊。
金属的
– 如果高光和反射保留反射物体的颜色,则反射是金属的。
光滑
– 这个术语可能被误用:有时,它是一种与模糊相反的设置(例如,当光泽度值较低时,反射是模糊的)。 有时该术语用作模糊反射的同义词。 在此上下文中使用的光泽意味着反射实际上是模糊的。
反射的例子
湿地板反射
湿地板效果是一种与 Web 2.0 样式页面结合使用的图形效果技术,特别是在徽标中。 效果可以手动完成,也可以使用可以安装的辅助工具来自动创建效果。 与标准的计算机反射(以及xxx代网络图形中流行的 Java 水效果)不同,湿地板效果涉及渐变,并且通常在反射中倾斜,因此镜像图像看起来像是悬停在湿地上或停留在湿地上 地面。