Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #version 330 core
  2.  
  3. uniform sampler2D tex;
  4. in vec2 texCoord;
  5. layout(location = 0) out vec4 FragColor;
  6.  
  7. float normpdf(float x, float sigma)
  8. {
  9.   return 0.39894*exp(-0.5*x*x / (sigma*sigma)) / sigma;
  10. }
  11.  
  12. void main()
  13. {
  14.   vec3 c = texture(tex, texCoord.xy).rgb;
  15.  
  16.   const int mSize = 11;
  17.   const int kSize = int((float(mSize) - 1.0) / 2.0);
  18.   float kernel[mSize];
  19.   vec3 final_color = vec3(0.0);
  20.  
  21.   // Create the kernel
  22.   float sigma = 7.0;
  23.   float Z = 0.0;
  24.   for (int j = 0; j <= kSize; ++j)
  25.   {
  26.     kernel[kSize + j] = kernel[kSize - j] = normpdf(float(j), sigma);
  27.   }
  28.  
  29.   //get the normalization factor (as the gaussian has been clamped)
  30.   for (int j = 0; j < mSize; ++j)
  31.   {
  32.     Z += kernel[j];
  33.   }
  34.  
  35.   //read out the texels
  36.   for (int i = -kSize; i <= kSize; ++i)
  37.   {
  38.     for (int j = -kSize; j <= kSize; ++j)
  39.     {
  40.       final_color += kernel[kSize + j] * kernel[kSize + i] * texture(tex, (texCoord.xy + vec2(float(i), float(j))/textureSize(tex, 0).xy)).rgb;
  41.     }
  42.   }
  43.  
  44.   FragColor = vec4(final_color / (Z*Z), 1.0);
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement