Project_2026-02-10_21-16-19
GLSL shader by merrypranxter · created 2026-02-11 · 10s loop · 2 passes
This page opens the shader in the ShaderKit browser GLSL editor: edit it live, fork it, or render it to video, GIF or images up to 8K. Also available as a full-screen view and an embeddable player.
Shader source (GLSL)
Common
#define pi acos(-1.)
#define deg pi/180. //1 degree
#define time iTime*2.*pi/10. //sin(time) loops 10 seconds
#define R iResolution.xy //shorthand
#define ar R.x/R.y //aspect ratio
#define M iMouse //shorthand
#define xm (M.xy/R) //normalized mouse
#define nm ((xm.xy-0.5)*vec2(ar,1.)+0.5) //aspect ratio correction
vec3 cs = vec3(1.,2.,3.);
mat2 r2d(float a) {
return mat2(cos(a),sin(a),-sin(a),cos(a));
}
Buffer A (iChannel0)
// --- 1. THE DEFINES (TWEAK THE CORRUPTION) ---
#define DENSITY 40.0
#define GLITCH_STRENGTH 0.15
#define COLOR_SHIFT iTime * 0.2
#define RADIANCE 1.4
// --- 2. THE MATH ENGINE (THE CHAOS KERNEL) ---
float hash11(float p) {
p = fract(p * .1031);
p *= p + 33.33;
p *= p + p;
return fract(p);
}
float hash21(vec2 p) {
vec3 p3 = fract(vec3(p.xyx) * .1031);
p3 += dot(p3, p3.yzx + 33.33);
return fract((p3.x + p3.y) * p3.z);
}
// --- 3. THE RENDERER (VERTICAL DATA SMASH) ---
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
// NORMALIZE
vec2 uv = fragCoord / iResolution.xy;
vec2 original_uv = uv;
// 1. VERTICAL SLICING (ASYMMETRY)
float col_id = floor(uv.x * DENSITY);
float col_noise = hash11(col_id);
// 2. TIME DRIFT (MAKES COLUMNS MOVE AT DIFFERENT SPEEDS)
float speed = (col_noise - 0.5) * 2.0;
uv.y += iTime * speed * 0.5;
// 3. THE "JITTER" (SUDDEN DATA LEAPS)
if (hash11(col_id + floor(iTime * 10.0)) > 0.96) {
uv.y += 0.2; // GLITCH JUMP!!
}
// 4. BLOCKY TEXTURE (THE "BIT-CRUSH")
vec2 grid_uv = fract(uv * vec2(1.0, 10.0)); // VERTICAL BANDS
float row_id = floor(uv.y * 10.0);
float cell_noise = hash21(vec2(col_id, row_id));
// 5. COLOR SMUGGLING (MAMA MUSHIE'S REVENGE)
// We use different math for R, G, and B to ensure NO SYMMETRY
float r = hash21(vec2(col_id, floor(uv.y * 15.0 + iTime)));
float g = hash21(vec2(col_id + 1.0, floor(uv.y * 22.0 - iTime * 0.5)));
float b = hash21(vec2(col_id - 1.0, floor(uv.y * 18.0 + sin(iTime))));
vec3 col = vec3(r, g, b);
// 6. DENSE OVERLAYS (THE "SHIPWREKT" MEMORY)
// Add horizontal "tears" that ignore the columns
float tear = step(0.98, hash11(original_uv.y + iTime * 5.0));
col += tear * vec3(1.0, 1.0, 1.0);
// 7. SATURATE & RADIATE
col = smoothstep(0.1, 0.9, col); // SHARPEN THE DATA
col *= vec3(1.2, 0.9, 1.5); // TINT IT VIOLET/CYAN (VOID COLORS)
// MASK OUT THE SIDES WITH NOISE DARKNESS
col *= step(0.05, hash11(col_id + 0.1));
fragColor = vec4(col * RADIANCE, 1.0);
}
Image
Not used
More shaders by merrypranxter
- PRISMACORE_003 — Retina Banquet
- PRISMACORE_002 — After Work Sky
- PRISMACORE_001 — Liquid Crystal Fever Dream
- Hopf Vibratiok in pink
- Void Geode
- Project_2026-02-14_04-53-13
- Chromatic Plexus
- Signal Death
- Deep fried math
- Candy Interference
- Project_2026-02-12_21-16-32
- Project_2026-02-12_17-00-28
Browse all public shaders · All shaders by merrypranxter · ShaderKit home
Unread comments
×Projects with new comments. Click to open and read.