I stored a 1D Gaussian filter in a sampler1D texture and send it to a fragment shader. When doing the vertical and horizontal blur, I use texelFetch() to get the weights in samlper1D map but didn't work. How is the data stored in the sampler1D ?
in vec2 texCoord;
uniform int BlurFilterWidth;
uniform sampler1D BlurFilterTex;
uniform sampler2D OriginalImageTex;
uniform sampler2D ThresholdImageTex;
uniform sampler2D HorizBlurImageTex;
uniform sampler2D VertBlurImageTex;
layout (location = 0) out vec4 FragColor;
void HorizBlurImage()
{
ivec2 pix = ivec2(gl_FragCoord.xy);
int TexSize = textureSize(BlurFilterTex,0);
vec4 sum = texelFetch(ThresholdImageTex,pix,0) * texelFetch(BlurFilterTex, 0, 0).r;
for( int i = 1; i < BlurFilterWidth; i++){
sum += texelFetchOffset(ThresholdImageTex, pix, 0, ivec2(i,0)) * texelFetch(BlurFilterTex, i*TexSize, 0).r;
sum += texelFetchOffset(ThresholdImageTex, pix, 0, ivec2(-i,0)) * texelFetch(BlurFilterTex, i*TexSize, 0).r;
}
FragColor = sum;
}