离开透明(玻璃)物体后的折射

Refraction after leaving a transparent (glass) object

我目前正在编写一个片段着色器,它(除其他外)模仿玻璃球体上的折射效果。

因此,当光线进入球体时,光线会改变方向。到目前为止,一切都很好。现在,当折射光线离开玻璃物体时,它会再次改变方向吗?我很确定它确实如此,但我一直在互联网上闲逛,我发现了不同的意见(例如,在 this 网站的底部,它清楚地表明方向没有变化)。

提前致谢。

是的,它发生了变化...从空气到玻璃的折射角与从玻璃到空气的折射角相同。

你可以很容易地实现它。首先,您必须在以球体为中心的立方体贴图中渲染您的场景。 第二个渲染步骤使用法向量和相机位置指向向量,你可以使用函数 refract() 来计算折射向量。 您必须计算光线从球体中射出的位置,您还可以再次使用折射函数。你只需要再次计算输出位置的法向量。 第三步是使用立方体贴图的 texture() 函数,并将输出向量作为坐标放入函数中。