#version 330 core #ifdef GL_ES #define LOWP lowp precision mediump float; #else #define LOWP #endif varying LOWP vec4 vColor; varying vec2 vTexCoord; uniform int horizontal; uniform sampler2D u_texture; uniform float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216); void main() { vec2 tex_offset = 1.0 / textureSize(u_texture, 0); vec4 color = texture(u_texture, vTexCoord); vec3 result = color.rgb * weight[0]; if (horizontal == 1) { for (int i = 1; i < 5; ++i) { result += texture(u_texture, vTexCoord + vec2(tex_offset.x * i, 0.0)).rgb * weight[i]; result += texture(u_texture, vTexCoord - vec2(tex_offset.x * i, 0.0)).rgb * weight[i]; } } else { for (int i = 1; i < 5; ++i) { result += texture(u_texture, vTexCoord + vec2(0.0, tex_offset.y * i)).rgb * weight[i]; result += texture(u_texture, vTexCoord - vec2(0.0, tex_offset.y * i)).rgb * weight[i]; } } gl_FragColor = vec4(result, color.a); }