#version 330 core in vert_t { vec2 tex_coords; } vert; out vec4 frag_color; uniform sampler2D colorbuffer; uniform vec2 offsets[9]; uniform int edge_kernel[9]; uniform float blur_kernel[9]; uniform bool chaos; uniform bool confuse; uniform bool shake; void main() { frag_color = vec4(0.0); vec3 sample[9]; if (chaos || shake) for (int i = 0; i < 9; i++) sample[i] = vec3(texture(colorbuffer, vert.tex_coords + offsets[i])); if (chaos) { for (int i = 0; i < 9; i++) frag_color += vec4(sample[i] * edge_kernel[i], 0.0); frag_color.a = 1.0; } else if (confuse) { frag_color = vec4(1.0 - texture(colorbuffer, vert.tex_coords).rgb, 1.0); } else if (shake) { for (int i = 0; i < 9; i++) frag_color += vec4(sample[i] * blur_kernel[i], 0.0); frag_color.a = 1.0; } else { frag_color = texture(colorbuffer, vert.tex_coords); } }