From dc72b50b5a46b5a167f9ed5fa7405725ccb4b29f Mon Sep 17 00:00:00 2001 From: Greg Shuflin Date: Sat, 15 Feb 2025 03:30:50 -0800 Subject: [PATCH] Cool pixelation effect --- .../psychadelicColors.frag.glsl | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/psychadelic-graphics/psychadelicColors.frag.glsl b/src/psychadelic-graphics/psychadelicColors.frag.glsl index 6e45f4e..77c2cf4 100644 --- a/src/psychadelic-graphics/psychadelicColors.frag.glsl +++ b/src/psychadelic-graphics/psychadelicColors.frag.glsl @@ -22,24 +22,34 @@ vec4 boxFade(vec4 inputColor, float boxSize, float period) { uv.y = floor(uv.y / boxSize) * boxSize; float rand = random(uv); - float mask = mod(u_time / period, 1.4); + float mask = mod(u_time / period, 2.4); return rand < mask ? inputColor : vec4(0.0, 0.0, 0.0, 1.0); } +vec2 pixellate(vec2 inputVec, float size) { + return vec2( + floor(inputVec.x / size) * size, + floor(inputVec.y / size) * size + ); +} + void main() { - float canvasSize = max(u_canvasWidth, u_canvasHeight); - vec2 uv = gl_FragCoord.xy/vec2(canvasSize, canvasSize); + vec2 uv = gl_FragCoord.xy/vec2(u_canvasWidth, u_canvasHeight); - vec3 red = vec3(1.0, 0.0, 0.0); - vec3 green = vec3(0.0, 1.0, 0.0); - vec3 blue = vec3(0.0, 0.0, 1.0); + float amount = 1.0/(u_time * 5.0); + + uv = pixellate(uv, amount); + + //vec4 outputColor = vec4(uv.x, 0., uv.y, 1.0); + float dist = distance(uv, vec2(0.5, 0.5)); + float curve = sin(dist * 60.0); + vec4 outputColor = vec4(0.5, 0.1, curve, 1.0); - vec4 o = vec4(uv.x, 0., uv.y, 1.0); float size = 0.01; - float period = 5.0; + float period = 1.0; - fragColor = boxFade(o, size, period); + fragColor = boxFade(outputColor, size, period); }