GLSL imageLoad / imageStore&立方体贴图

时间:2012-05-12 13:29:32

标签: opengl reflection glsl

在GLSL中执行textureCube()texturelookup会将reflectionray作为查找坐标。

GLSL 4.2引入了imageLoad / imageStore,它几乎也适用于立方体贴图。

但加载/存储功能

imageStore(gimagecube image, ivec3 p, vec4 data) 

取整数坐标来访问相应的纹素。

如何解释这些坐标以及如何根据反射射线的方向计算它们?

1 个答案:

答案 0 :(得分:2)

基本上,带有图像加载/存储的立方体贴图就像6元素数组纹理一样工作。纹理坐标的z分量指定要查看的面。面的顺序与立方体贴图面的枚举器的顺序相同,与layered rendering的顺序相同。

至于如何计算方向,可以使用规范中详述的算法来实现。 GL 4.2核心的3.9.10节解释了OpenGL如何获取方向并将其转换为特定的面和纹理坐标。它比我想要在帖子中解释的要复杂得多,它实际上只是一些文本的复制和粘贴。

一般的想法是,最大的组件根据表3.17定义要使用的面。然后从该表中获取S和T纹理坐标,并对它们应用一些小数学,将它们转换为[0,1]纹理坐标。