动态立方体贴图 - opengl

dynamic cubemaps - opengl

当使用静态立方体贴图时,假定天空盒纹理处的物体距离较远,因此摄像机移动时视图不发生变化不是问题。

但是,当使用动态立方体贴图时,我们包括相机附近的对象。因此,例如;我们在相机前面有巨大的玻璃,我们在玻璃前面有物体,我们需要计算折射。因为,我们在 glsl 中只给纹理函数一个 vec3,玻璃上的坐标被忽略了。例如;玻璃中间的折射矢量是vec3(0, -0.2, -0.6),玻璃右下角的折射也是vec3(0, -0.2, -0.6)。因此,两个坐标的颜色将相同,但不应该。我们如何处理这个问题?

要解决此问题,您可以使用经过视差校正的立方体贴图,这样您就可以创建 "local cubemaps"(带有参考边界框)而不是 "infinite cubemaps"。

Seb Lagarde 有一个非常好的 article 详细解释了这一切(参见 "Parallax correction for local cubemaps" 章节)。