32 lines
1.1 KiB
GLSL
32 lines
1.1 KiB
GLSL
// "deadly_halftones"
|
|
// by Julien Vergnaud @duvengar-2018
|
|
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void mainImage(out vec4 C, in vec2 U)
|
|
{
|
|
|
|
// sound amplitude
|
|
float amp = .0;
|
|
amp += .5 - texelFetch(iChannel1,ivec2(20,0),0).x + .5
|
|
*texelFetch(iChannel1,ivec2(400,0),0).x;
|
|
|
|
|
|
// glitch offset
|
|
vec2 V = 1. - 2. * U / R;
|
|
vec2 off = vec2(S(.0, amp * CEL * .5, cos(T + U.y / R.y *5.0 )), .0) - vec2(.5, .0);
|
|
|
|
// colorize
|
|
float r = texture(iChannel0, .03 * off + U/ R).x;
|
|
float g = texture(iChannel0, .04 * off + U/ R).x;
|
|
float b = texture(iChannel0, .05 * off + U/ R).x;
|
|
C = vec4(.0,.1,.2,1.);
|
|
|
|
C += .06 * hash2(T + V * vec2(1462.439, 297.185)); // animated grain (hash2 function in common tab)
|
|
C += vec4(r, g, b, 1.);
|
|
C *= 1.25 *vec4(1. - S(.1, 1.8, length(V * V))); // vigneting
|
|
|
|
U = mod(U, CEL);
|
|
C *= .4+sign(S(.99, 1., U.y));
|
|
C += .14 * vec4(pow(1. - length(V*vec2(.5, .35)), 3.), .0,.0,1.);
|
|
} |