Project

General

Profile

« Previous | Next » 

Revision 0d81d0fb

Added by Leszek Koltunski over 7 years ago

Separable Box blur (almost) works.

View differences:

src/main/res/raw/blur_fragment_shader.glsl
21 21

  
22 22
varying vec2 v_TexCoordinate;
23 23
uniform sampler2D u_Texture;
24
uniform vec2 one_over_objD;
25
uniform float u_Radius;
24
uniform float u_Step;
25
uniform float u_Weights[MAX_BLUR];
26
uniform int u_Radius;
26 27

  
27 28
//////////////////////////////////////////////////////////////////////////////////////////////
28 29

  
29 30
void main()
30 31
  {
31
  vec2 tex;
32
  vec4 pixel = vec4(0.0);
33
  float denom = 1.0 / ((2.0*u_Radius+1.0)*(2.0*u_Radius+1.0));
32
  float lCoord = v_TexCoordinate.x;
33
  float rCoord = lCoord;
34
  float yCoord = v_TexCoordinate.y;
34 35

  
35
  for (float x = -u_Radius; x <= u_Radius; x+=1.0)
36
    for (float y = -u_Radius; y <= u_Radius; y+=1.0)
37
      {
38
      tex = vec2(v_TexCoordinate.x + x*one_over_objD.x, v_TexCoordinate.y + y*one_over_objD.y);
39
      pixel += texture2D(u_Texture,tex)*denom;
40
      }
36
  vec4  pixel  = texture2D(u_Texture,vec2(lCoord,yCoord)) * u_Weights[0];
37

  
38
  for (int x = 1; x <= u_Radius; x+=1)
39
    {
40
    rCoord+= u_Step;
41
    lCoord-= u_Step;
42
    pixel += ( texture2D(u_Texture,vec2(rCoord,yCoord)) +
43
               texture2D(u_Texture,vec2(lCoord,yCoord)) ) * u_Weights[x];
44
    }
41 45

  
42 46
  gl_FragColor = pixel;
43 47
  }

Also available in: Unified diff