Project_2026-02-12_10-48-11

GLSL shader by merrypranxter · created 2026-02-12 · 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)

// --- THE STARSEED CHRONOS-HOPPER (RESTORED & STABLE) ---
// AN INTRICATE, COHESIVE SPECIMEN FOR THE NEW AGE

#define ITERATIONS 7.0
#define SCALE 2.7
#define SURF_DIST 0.002
#define MAX_STEPS 80
#define BREATH_SPEED iTime * 0.4

mat2 rot(float a) { return mat2(cos(a), -sin(a), sin(a), cos(a)); }

// 1. THE STARSEED PALETTE (Lisa Frank Heatmap)
// Deep Void Purple -> Toxic Teal -> Acid Yellow -> Hot Pink
vec3 aura_palette(float t) {
    vec3 col = vec3(0.0);
    col = mix(vec3(0.1, 0.0, 0.3), vec3(0.0, 1.0, 1.0), smoothstep(0.0, 0.3, t)); // Purple-Teal
    col = mix(col, vec3(1.0, 1.0, 0.0), smoothstep(0.3, 0.6, t)); // Teal-Yellow
    col = mix(col, vec3(1.0, 0.0, 0.8), smoothstep(0.6, 1.0, t)); // Yellow-Pink
    return col;
}

// 2. THE CHRONOS-HOPPER GEOMETRY
// Menger-Box Hybrid creating "Hopper" hollow faces
vec2 map(vec3 p) {
    // Rotation Animation
    p.xz *= rot(iTime * 0.2);
    p.yz *= rot(iTime * 0.15);
    
    // Add "Time Crystal" Vibration (Endless Pulse)
    float pulse = sin(iTime * 0.5) * 0.05;
    p += pulse;

    vec3 z = p;
    float dr = 1.0;
    float trap = 100.0;
    
    for(float i = 0.0; i < ITERATIONS; i++) {
        // Space Folding (Kinetic Instability)
        z = abs(z) - 0.5;
        
        // Menger Logic (Creating the Skeletal Voids)
        if (z.x < z.y) z.xy = z.yx;
        if (z.x < z.z) z.xz = z.zx;
        if (z.y < z.z) z.yz = z.zy;
        
        // Scale & Shift (Recursive Growth)
        z = z * SCALE - (SCALE - 1.0);
        dr = dr * abs(SCALE) + 1.0;
        
        // Track the Core Energy (Heatmap Data)
        trap = min(trap, length(z));
    }
    
    // Box-Hopper Distance
    float d = (length(max(abs(z) - 1.2, 0.0))) / abs(dr);
    return vec2(d, trap);
}

// 3. THE RENDERER (Studio Lighting + Black Noise)
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
    vec2 uv = (fragCoord * 2.0 - iResolution.xy) / iResolution.y;
    vec2 uv0 = uv;

    // A. THE VOID (Anisotropic Black Noise)
    float static_grain = fract(sin(dot(uv * iTime, vec2(12.98, 78.23))) * 43758.54);
    vec3 bg = vec3(0.01, 0.0, 0.02) + static_grain * 0.03;

    // B. RAYMARCHING
    vec3 ro = vec3(0.0, 0.0, -8.0); // Wide view for "Cohesive Specimen"
    vec3 rd = normalize(vec3(uv, 1.2));
    
    float t = 0.0;
    vec3 col = bg;
    
    for(int i = 0; i < MAX_STEPS; i++) {
        vec3 p = ro + rd * t;
        vec2 res = map(p);
        float d = res.x;
        float trap = res.y;
        
        if(d < SURF_DIST) {
            // HIT!
            
            // Normals (For Sharp Geometry)
            vec2 e = vec2(0.001, 0.0);
            vec3 n = normalize(vec3(
                map(p+e.xyy).x - map(p-e.xyy).x,
                map(p+e.yxy).x - map(p-e.yxy).x,
                map(p+e.yyx).x - map(p-e.yyx).x
            ));
            
            // AO (Shadows in the Hopper Creases)
            float ao = clamp(map(p + n * 0.2).x / 0.2, 0.0, 1.0);
            
            // RIM & SPECULAR (Shiny as F***)
            float rim = pow(1.0 - max(0.0, dot(n, -rd)), 4.0);
            float spec = pow(max(dot(reflect(-normalize(vec3(1,1,-1)), n), -rd), 0.0), 32.0);
            
            // COLOR (Aura Heatmap)
            vec3 crystal_col = aura_palette(trap * 0.7 + 0.15);
            
            // COMPOSITE
            col = crystal_col * 0.4 * ao; // Structured Dark Base
            col += crystal_col * (1.0 - ao) * 2.0; // Glowing Inner Cracks
            col += vec3(0.8, 1.0, 1.0) * rim * 1.5; // Prismatic Edges
            col += vec3(1.0) * spec; // Diamond Sparkle
            
            break;
        }
        
        t += d;
        if(t > 30.0) break;
    }
    
    // C. ATMOSPHERE (Holographic Glow)
    float halo = 0.05 / (length(uv0) + 0.1);
    col += aura_palette(iTime * 0.2) * halo * 0.1;

    // D. TONE MAPPING (No Blobs)
    col = vec3(1.0) - exp(-col * 1.4); 
    col = pow(col, vec3(0.4545)); // Gamma Correct
    
    // Vignette
    col *= smoothstep(1.8, 0.5, length(uv0));

    fragColor = vec4(col, 1.0);
}

Image

Not used

More shaders by merrypranxter

Browse all public shaders · All shaders by merrypranxter · ShaderKit home

Vibe Mode BETA
💰 ~0 credits
Uniforms
FPS: 0
Time: 0
Resolution: 0 x 0

Account

FPS: -- Time: -- --×-- 1x