38 lines
1.2 KiB
GLSL
Executable File
38 lines
1.2 KiB
GLSL
Executable File
#ifdef GL_ES
|
|
#define LOWP lowp
|
|
precision mediump float;
|
|
#else
|
|
#define LOWP
|
|
#endif
|
|
varying LOWP vec4 vColor;
|
|
varying vec2 vTexCoord;
|
|
|
|
uniform sampler2D u_texture;
|
|
uniform float resolution;
|
|
uniform float radius;
|
|
uniform vec2 dir;
|
|
|
|
void main() {
|
|
|
|
vec4 sum = vec4(0.0);
|
|
vec2 tc = vTexCoord;
|
|
float blur = radius/resolution;
|
|
|
|
float hstep = dir.x;
|
|
float vstep = dir.y;
|
|
|
|
sum += texture2D(u_texture, vec2(tc.x - 4.0*blur*hstep, tc.y - 4.0*blur*vstep)) * 0.05;
|
|
sum += texture2D(u_texture, vec2(tc.x - 3.0*blur*hstep, tc.y - 3.0*blur*vstep)) * 0.09;
|
|
sum += texture2D(u_texture, vec2(tc.x - 2.0*blur*hstep, tc.y - 2.0*blur*vstep)) * 0.12;
|
|
sum += texture2D(u_texture, vec2(tc.x - 1.0*blur*hstep, tc.y - 1.0*blur*vstep)) * 0.15;
|
|
|
|
sum += texture2D(u_texture, vec2(tc.x, tc.y)) * 0.16;
|
|
|
|
sum += texture2D(u_texture, vec2(tc.x + 1.0*blur*hstep, tc.y + 1.0*blur*vstep)) * 0.15;
|
|
sum += texture2D(u_texture, vec2(tc.x + 2.0*blur*hstep, tc.y + 2.0*blur*vstep)) * 0.12;
|
|
sum += texture2D(u_texture, vec2(tc.x + 3.0*blur*hstep, tc.y + 3.0*blur*vstep)) * 0.09;
|
|
sum += texture2D(u_texture, vec2(tc.x + 4.0*blur*hstep, tc.y + 4.0*blur*vstep)) * 0.05;
|
|
|
|
gl_FragColor = vColor * vec4(sum.rgb, 1.0);
|
|
}
|