Revision 0d81d0fb
Added by Leszek Koltunski over 7 years ago
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
Separable Box blur (almost) works.