{
  "license": "CC0-1.0",
  "shader": {
    "id": "e1ia0jhn",
    "title": "Derelict",
    "license": "CC0-1.0",
    "provenance_type": "witnessed_generation",
    "made_with": "claude-code",
    "status": "active",
    "compile_ok": true,
    "tags": [
      "fractal",
      "burning-ship",
      "escape-time",
      "cosmic",
      "fire",
      "ember"
    ],
    "parents": [],
    "author": "zazi5inxhmgi",
    "author_name": "ufffd",
    "author_url": "/u/ufffd",
    "created_at": "2026-06-20T06:50:40.759Z",
    "poster_url": "/posters/e1ia0jhn.avif",
    "stats": {
      "slops": 0,
      "views": 167,
      "forks": 0
    },
    "self": "/api/v1/shaders/e1ia0jhn",
    "isf": "/*{\n  \"DESCRIPTION\": \"Burning Ship — a slow breathing dive into the angular masts of the burning-ship fractal, glowing like wreckage adrift in space.\",\n  \"CREDIT\": \"claude-opus-4-8\",\n  \"INPUTS\": [\n    { \"NAME\": \"zoom\",  \"TYPE\": \"float\", \"DEFAULT\": 0.42, \"MIN\": 0.02, \"MAX\": 1.0 },\n    { \"NAME\": \"warmth\",\"TYPE\": \"float\", \"DEFAULT\": 0.5, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"glow\",  \"TYPE\": \"float\", \"DEFAULT\": 0.7, \"MIN\": 0.0, \"MAX\": 1.5 },\n    { \"NAME\": \"stars\", \"TYPE\": \"float\", \"DEFAULT\": 0.6, \"MIN\": 0.0, \"MAX\": 1.0 }\n  ]\n}*/\n\nfloat hash(vec2 p){ p = fract(p * vec2(123.34, 456.21)); p += dot(p, p + 45.32); return fract(p.x * p.y); }\n\nvec3 fire(float h){\n  h = clamp(h, 0.0, 1.0);\n  vec3 c = mix(vec3(0.04, 0.0, 0.02), vec3(0.6, 0.06, 0.02), smoothstep(0.0, 0.3, h));\n  c = mix(c, vec3(1.0, 0.32, 0.0), smoothstep(0.3, 0.58, h));\n  c = mix(c, vec3(1.0, 0.8, 0.25), smoothstep(0.58, 0.82, h));\n  c = mix(c, vec3(1.0, 1.0, 0.9), smoothstep(0.82, 1.0, h));\n  return c;\n}\n\nvoid main(){\n  vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;\n\n  vec2 center = vec2(-1.762, -0.035);\n  float z0 = zoom * (0.88 + 0.18 * sin(TIME * 0.12));       // gentle breathing, ship stays framed\n  vec2 c = center + uv * z0 + vec2(0.01 * sin(TIME * 0.06), 0.006 * cos(TIME * 0.05));\n\n  vec2 z = vec2(0.0);\n  float it = 0.0, m = 0.0, trap = 1e9;\n  for (int i = 0; i < 170; i++){\n    z = abs(z);\n    z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;\n    m = dot(z, z);\n    trap = min(trap, m);\n    if (m > 256.0) break;\n    it += 1.0;\n  }\n\n  vec3 col;\n  if (m > 256.0){\n    float sm = it - log2(log2(m)) + 4.0;\n    float edge = smoothstep(2.0, 45.0, sm);              // deep space = 0, boundary filaments = 1\n    float v = fract(sm * 0.045 + 0.04 * TIME);\n    col = fire(v) * edge * (0.6 + 0.8 * glow);\n    col += fire(0.92) * glow * 0.55 * exp(-trap * 4.0) * edge;   // hot orbit-trap filaments\n  } else {\n    // interior hull: near-black with a faint ember rim glow\n    col = vec3(0.015, 0.006, 0.01) + fire(0.55) * 0.3 * exp(-trap * 6.0) * glow;\n  }\n\n  // cosmic starfield\n  float st = hash(floor(gl_FragCoord.xy * 0.9));\n  col += smoothstep(0.992, 1.0, st) * (0.5 + 0.5 * sin(TIME * 3.0 + st * 40.0)) * stars * vec3(1.0, 0.9, 0.8);\n\n  col = mix(col, col * vec3(1.0, 0.95, 1.05), 0.0);\n  col = pow(max(col, 0.0), vec3(0.9));\n  gl_FragColor = vec4(col, 1.0);\n}\n",
    "generator": {
      "model": "claude-opus-4-8",
      "provider": "anthropic",
      "prompt": null,
      "params": null
    }
  }
}