29 lines
815 B
Plaintext
29 lines
815 B
Plaintext
highp float rand(highp float co) {
|
|
return fract(sin(co * (91.3458)) * 47453.5453);
|
|
}
|
|
|
|
void fragment()
|
|
{
|
|
highp vec2 uv = UV;
|
|
highp vec2 texel = 1.0 * SCREEN_PIXEL_SIZE.xy;
|
|
|
|
highp vec4 img = texture(TEXTURE, uv);
|
|
|
|
// modulate offset
|
|
highp float step_y = texel.y * (rand(uv.x) * 80) * (sin(sin(TIME * 0.5)) * 2.0 + 1.3);
|
|
// offset without modulation
|
|
//highp float step_y = texel.y*(rand(uv.x)*100.0);
|
|
// shake offset and modulate it
|
|
step_y += rand(uv.x * uv.y * TIME) * 0.025 * sin(TIME);
|
|
// more noisy spikes
|
|
step_y = mix(step_y, step_y * rand(uv.x * TIME) * 0.5, sin(TIME));
|
|
|
|
if (dot(img, vec4(0.299, 0.587, 0.114, 0.0)) > 1.2*(sin(TIME) * 0.325 + 0.50)) {
|
|
uv.y += step_y;
|
|
} else {
|
|
uv.y -= step_y;
|
|
}
|
|
|
|
COLOR = texture(TEXTURE, uv);
|
|
}
|