Advertisement
Guest User

gaussx.fsh

a guest
Feb 5th, 2011
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uniform sampler2D mpass_texture;
  2. uniform vec2      screen_texture_pow2_sz; // pow2 tex size
  3.  
  4.  
  5. #define lutTex2D(v) pow(texture2D(mpass_texture, (v)),2.2)
  6.  
  7. void main()
  8. {
  9.     vec4 sum   = vec4(0.0);
  10.  
  11.     float wid=2.0;
  12.     float c1 = exp(-1.0/wid/wid);
  13.     float c2 = exp(-4.0/wid/wid);
  14.     float c3 = exp(-9.0/wid/wid);
  15.     float c4 = exp(-16.0/wid/wid);
  16.  
  17.     sum += lutTex2D(gl_TexCoord[0].st + vec2(-4.0,  0.0)/screen_texture_pow2_sz) * c4;
  18.     sum += lutTex2D(gl_TexCoord[0].st + vec2(-3.0,  0.0)/screen_texture_pow2_sz) * c3;
  19.     sum += lutTex2D(gl_TexCoord[0].st + vec2(-2.0,  0.0)/screen_texture_pow2_sz) * c2;
  20.     sum += lutTex2D(gl_TexCoord[0].st + vec2(-1.0,  0.0)/screen_texture_pow2_sz) * c1;
  21.     sum += lutTex2D(gl_TexCoord[0].st + vec2( 0.0,  0.0)/screen_texture_pow2_sz);
  22.     sum += lutTex2D(gl_TexCoord[0].st + vec2(+1.0,  0.0)/screen_texture_pow2_sz) * c1;
  23.     sum += lutTex2D(gl_TexCoord[0].st + vec2(+2.0,  0.0)/screen_texture_pow2_sz) * c2;
  24.     sum += lutTex2D(gl_TexCoord[0].st + vec2(+3.0,  0.0)/screen_texture_pow2_sz) * c3;
  25.     sum += lutTex2D(gl_TexCoord[0].st + vec2(+4.0,  0.0)/screen_texture_pow2_sz) * c4;
  26.  
  27.     gl_FragColor = pow(sum/(1+2*(c1+c2+c3+c4)),1.0/2.2);
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement