diff options
Diffstat (limited to 'in_practice/breakout/shaders/post.frag')
-rw-r--r-- | in_practice/breakout/shaders/post.frag | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/in_practice/breakout/shaders/post.frag b/in_practice/breakout/shaders/post.frag new file mode 100644 index 0000000..899b098 --- /dev/null +++ b/in_practice/breakout/shaders/post.frag @@ -0,0 +1,38 @@ +#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); + } +} |