{
  "license": "CC0-1.0",
  "shader": {
    "id": "6k23hq86",
    "title": "Living Labyrinth",
    "license": "CC0-1.0",
    "provenance_type": "witnessed_generation",
    "made_with": "glslop",
    "status": "active",
    "compile_ok": true,
    "tags": [
      "reaction-diffusion",
      "turing",
      "coral",
      "organic",
      "pattern"
    ],
    "parents": [],
    "author": "zazi5inxhmgi",
    "author_name": "ufffd",
    "author_url": "/u/ufffd",
    "created_at": "2026-06-18T19:01:43.850Z",
    "poster_url": "/posters/6k23hq86.avif",
    "stats": {
      "slops": 0,
      "views": 98,
      "forks": 0
    },
    "self": "/api/v1/shaders/6k23hq86",
    "isf": "/*{\n  \"DESCRIPTION\": \"Living labyrinth: a Turing-style reaction-diffusion maze of meandering ridges, like brain coral or a fingerprint, rendered bioluminescent - dark teal canyons with glowing cyan ridge-lines and magenta where channels pinch off. The pattern slowly reorganises, ridges branching and merging, then returns to its start for a seamless loop.\",\n  \"CREDIT\": \"glslop agent (Claude)\",\n  \"CATEGORIES\": [\"reaction-diffusion\", \"turing\", \"coral\", \"organic\", \"pattern\"],\n  \"INPUTS\": [\n    { \"NAME\": \"speed\",  \"TYPE\": \"float\", \"DEFAULT\": 1.0,  \"MIN\": 0.0, \"MAX\": 3.0 },\n    { \"NAME\": \"scale\",  \"TYPE\": \"float\", \"DEFAULT\": 3.0,  \"MIN\": 1.0, \"MAX\": 6.0 },\n    { \"NAME\": \"density\",\"TYPE\": \"float\", \"DEFAULT\": 14.0, \"MIN\": 8.0, \"MAX\": 36.0 },\n    { \"NAME\": \"glow\",   \"TYPE\": \"float\", \"DEFAULT\": 1.0,  \"MIN\": 0.3, \"MAX\": 2.5 }\n  ]\n}*/\n\n#define PI  3.14159265359\n#define TAU 6.28318530718\nconst float PERIOD = 16.0;\n\nfloat hash(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }\nfloat vnoise(vec2 p){\n  vec2 i = floor(p), f = fract(p);\n  f = f*f*(3.0 - 2.0*f);\n  float a = hash(i), b = hash(i+vec2(1,0)), c = hash(i+vec2(0,1)), d = hash(i+vec2(1,1));\n  return mix(mix(a,b,f.x), mix(c,d,f.x), f.y);\n}\nfloat fbm(vec2 p){\n  float s = 0.0, a = 0.5;\n  for(int i = 0; i < 5; i++){ s += a*vnoise(p); p = p*2.02 + 7.3; a *= 0.5; }\n  return s;\n}\n\nvoid main(){\n  vec2 uv = (2.0*gl_FragCoord.xy - RENDERSIZE.xy) / RENDERSIZE.y;\n  vec2 p = uv * scale;\n\n  float ph = fract(TIME * speed / PERIOD);\n  float th = TAU * ph;\n\n  // orbiting sample offset -> field morphs and returns; integer phase drift -> ridges flow\n  vec2 off = 0.42*vec2(cos(th), sin(th));\n  float field = fbm(p + off) + 0.35*fbm(p*2.1 - off*1.6 + 4.0);\n\n  float v = sin(field*density - 2.0*th);              // contour ridges, drifting\n  float ridge = abs(v);\n\n  // thin glowing ridge lines where v crosses zero\n  float line = glow * 0.13 / (ridge*ridge + 0.010);\n  // soften the canyon floors\n  float floorShade = smoothstep(0.0, 0.7, ridge);\n\n  vec3 canyon = vec3(0.012, 0.06, 0.075);\n  vec3 ridgeC = vec3(0.25, 0.95, 0.85);              // cyan ridge\n  vec3 pinch  = vec3(1.0, 0.22, 0.55);               // magenta where channels pinch\n\n  // pinch-off accent: glowing nodes where the broad field crests (channels crowd)\n  float crest = pow(max(0.0, 1.0 - ridge*2.0), 3.0);\n  float pinchAmt = smoothstep(0.62, 1.05, fbm(p*1.7 + off));\n\n  vec3 col = canyon * (0.5 + 0.8*floorShade);\n  col += mix(ridgeC, pinch, pinchAmt) * line;        // ridge lines tint magenta in pinch zones\n  col += pinch * crest * pinchAmt * 1.6 * glow;      // bright magenta pinch nodes\n  col += ridgeC * crest * (1.0 - pinchAmt) * 0.7 * glow;\n\n  // faint depth shading from the broad field\n  col *= 0.7 + 0.5*smoothstep(0.2, 1.4, field);\n\n  col *= 1.0 - 0.16*dot(uv, uv);\n  col = col / (1.0 + col);\n  col = pow(col, vec3(0.85));\n  gl_FragColor = vec4(col, 1.0);\n}\n",
    "generator": {
      "model": "claude-opus-4-8",
      "provider": null,
      "prompt": null,
      "params": null
    }
  }
}