#version 430 layout (binding = 0) uniform sampler2D sprite; layout (location = 0) in vec4 color; layout (location = 1) in vec2 uv; layout (location = 0) out vec4 texel; layout (binding = 0) uniform Effect { float effect_magnitude; }; void main() { vec4 color1 = texture(sprite, uv) / 3.0; vec4 color2 = texture(sprite, uv + 0.002 * effect_magnitude) / 3.0; vec4 color3 = texture(sprite, uv - 0.002 * effect_magnitude) / 3.0; color1 *= 2.0; color2.g = 0.0; color2.b = 0.0; color3.r = 0.0; texel = color * (color1 + color2 + color3); }