63 lines
2.1 KiB
GLSL
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);
|
|
}
|