Files

63 lines
2.1 KiB
GLSL

#version 300 es
precision highp float;
in vec2 v_texcoord;
uniform sampler2D tex;
out vec4 fragColor;
float blur_channel_r(vec2 center) {
float o = 0.003;
float c = 0.0;
c += texture(tex, center + vec2(-o, -o)).r * 0.0625;
c += texture(tex, center + vec2( 0, -o)).r * 0.125;
c += texture(tex, center + vec2( o, -o)).r * 0.0625;
c += texture(tex, center + vec2(-o, 0)).r * 0.125;
c += texture(tex, center ).r * 0.25;
c += texture(tex, center + vec2( o, 0)).r * 0.125;
c += texture(tex, center + vec2(-o, o)).r * 0.0625;
c += texture(tex, center + vec2( 0, o)).r * 0.125;
c += texture(tex, center + vec2( o, o)).r * 0.0625;
return c;
}
float blur_channel_g(vec2 center) {
float o = 0.003;
float c = 0.0;
c += texture(tex, center + vec2(-o, -o)).g * 0.0625;
c += texture(tex, center + vec2( 0, -o)).g * 0.125;
c += texture(tex, center + vec2( o, -o)).g * 0.0625;
c += texture(tex, center + vec2(-o, 0)).g * 0.125;
c += texture(tex, center ).g * 0.25;
c += texture(tex, center + vec2( o, 0)).g * 0.125;
c += texture(tex, center + vec2(-o, o)).g * 0.0625;
c += texture(tex, center + vec2( 0, o)).g * 0.125;
c += texture(tex, center + vec2( o, o)).g * 0.0625;
return c;
}
float blur_channel_b(vec2 center) {
float o = 0.003;
float c = 0.0;
c += texture(tex, center + vec2(-o, -o)).b * 0.0625;
c += texture(tex, center + vec2( 0, -o)).b * 0.125;
c += texture(tex, center + vec2( o, -o)).b * 0.0625;
c += texture(tex, center + vec2(-o, 0)).b * 0.125;
c += texture(tex, center ).b * 0.25;
c += texture(tex, center + vec2( o, 0)).b * 0.125;
c += texture(tex, center + vec2(-o, o)).b * 0.0625;
c += texture(tex, center + vec2( 0, o)).b * 0.125;
c += texture(tex, center + vec2( o, o)).b * 0.0625;
return c;
}
void main() {
float chroma = 0.004;
float a = texture(tex, v_texcoord).a;
float r = blur_channel_r(v_texcoord + vec2( chroma, 0.0));
float g = blur_channel_g(v_texcoord);
float b = blur_channel_b(v_texcoord - vec2( chroma, 0.0));
fragColor = vec4(r, g, b, a);
}