我在glsl中有一个着色器,它使用3D纹理创建一些着色效果。
我目前正在使用texelFetch(),但现在需要使用插值LOD级别来达到最终效果。
纹理声明如下:
uniform layout(binding=0) sampler3D diffuse_map;
然后我使用texelfetch()这样采样:
vec4 val = texelFetch(normal_map, ivec3(((r)*0.5/cube_dim+vec3(0.5))*(voxel_resolution-1)),0);
上面的作品。
然后我尝试使用textureLod采样相同的纹理,如下所示:
vec4 val = textureLod(normal_map, ivec3(((r)*0.5/cube_dim+vec3(0.5))*(voxel_resolution-1)),0);
我猜想这失败了,因为textureLod的坐标系不同,但是此函数的坐标范围是多少?
documentation没有明确声明它,因此坐标系是纹理的坐标系,soemtimes为0到1,soemtimes为-1到1