在 GLSL 中执行 textureCube() texturelookup 将反射射线作为查找坐标。
GLSL 4.2 引入了显然也适用于立方体贴图的 imageLoad/imageStore。
但是加载/存储功能
imageStore(gimagecube image, ivec3 p, vec4 data)
取整数坐标来访问相应的纹素。
这些坐标是如何解释的,如何根据反射光线的方向计算它们?
在 GLSL 中执行 textureCube() texturelookup 将反射射线作为查找坐标。
GLSL 4.2 引入了显然也适用于立方体贴图的 imageLoad/imageStore。
但是加载/存储功能
imageStore(gimagecube image, ivec3 p, vec4 data)
取整数坐标来访问相应的纹素。
这些坐标是如何解释的,如何根据反射光线的方向计算它们?
基本上,带有图像加载/存储的立方体贴图就像 6 元素阵列纹理一样工作。纹理坐标的 z 分量指定要查看的面。面的顺序与立方体贴图面的枚举器顺序相同,与分层渲染相同。
至于如何计算它们的方向,您可以使用规范中详述的算法来做到这一点。GL 4.2 核心的第 3.9.10 节解释了 OpenGL 如何获取方向并将其转换为特定的面和纹理坐标。它比我想在帖子中解释的要复杂一些,而且它实际上只是一些文本的复制和粘贴。
总体思路是,最大的组件根据表 3.17 定义要使用的面。然后从该表中获取 S 和 T 纹理坐标,并对它们进行一些数学运算以将它们转换为 [0, 1] 纹理坐标。