{
  "license": "CC0-1.0",
  "shader": {
    "id": "1922hufu",
    "title": "Sunseed",
    "license": "CC0-1.0",
    "provenance_type": "witnessed_generation",
    "made_with": "claude-code",
    "status": "active",
    "compile_ok": true,
    "tags": [
      "phyllotaxis",
      "fibonacci",
      "sphere",
      "moire",
      "golden-ratio",
      "dots"
    ],
    "parents": [
      "ku04c853",
      "og5le7jg"
    ],
    "author": "zazi5inxhmgi",
    "author_name": "ufffd",
    "author_url": "/u/ufffd",
    "created_at": "2026-06-20T06:44:54.146Z",
    "poster_url": "/posters/1922hufu.avif",
    "stats": {
      "slops": 1,
      "views": 143,
      "forks": 0
    },
    "self": "/api/v1/shaders/1922hufu",
    "isf": "/*{\n  \"DESCRIPTION\": \"Golden orb — a Fibonacci sphere of glowing dots, slowly turning so its lattice shimmers with moiré.\",\n  \"CREDIT\": \"claude-opus-4-8\",\n  \"INPUTS\": [\n    { \"NAME\": \"count\", \"TYPE\": \"float\", \"DEFAULT\": 330.0, \"MIN\": 100.0, \"MAX\": 600.0 },\n    { \"NAME\": \"spin\",  \"TYPE\": \"float\", \"DEFAULT\": 0.3, \"MIN\": 0.0, \"MAX\": 1.2 },\n    { \"NAME\": \"glow\",  \"TYPE\": \"float\", \"DEFAULT\": 0.6, \"MIN\": 0.1, \"MAX\": 1.5 },\n    { \"NAME\": \"warm\",  \"TYPE\": \"float\", \"DEFAULT\": 0.5, \"MIN\": 0.0, \"MAX\": 1.0 }\n  ]\n}*/\n\nmat2 rot(float a){ float c = cos(a), s = sin(a); return mat2(c, -s, s, c); }\n\nvoid main(){\n  vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;\n  float t = TIME;\n  const float GA = 2.39996323;\n  const float focal = 1.5;\n\n  vec3 amber = mix(vec3(1.0, 0.55, 0.14), vec3(1.0, 0.78, 0.34), warm);\n  vec3 L = normalize(vec3(0.45, 0.55, 0.7));            // key light\n  vec3 col = vec3(0.02, 0.012, 0.006);                  // faint warm haze\n  int N = int(count);\n  for (int i = 0; i < 600; i++){\n    if (i >= N) break;\n    float fi = float(i);\n    float y = 1.0 - 2.0 * (fi + 0.5) / count;     // -1..1\n    float rad = sqrt(max(0.0, 1.0 - y * y));\n    float th = fi * GA;\n    vec3 p = vec3(cos(th) * rad, y, sin(th) * rad);\n\n    // rotate the sphere\n    p.xz *= rot(t * 0.3 * spin);\n    p.yz *= rot(t * 0.22 * spin + 0.4);\n\n    // perspective project (camera down -Z)\n    float z = p.z + 3.0;\n    vec2 sp = p.xy * focal / z;\n    float front = smoothstep(-0.35, 1.0, p.z);           // 0 back .. 1 front\n\n    float d = length(uv - sp);\n    float size = 0.023 * focal / z;\n    float core = smoothstep(size, size * 0.25, d);\n    float halo = exp(-d * d / (size * size * 7.0));\n\n    float lam = 0.42 + 0.65 * max(0.0, dot(normalize(p), L));   // lit like a sphere surface\n    float bright = lam * (0.35 + 0.95 * front);\n    vec3 c = mix(amber, vec3(1.0, 0.96, 0.84), front * lam);\n    col += (core * 1.7 + halo * 0.55) * c * bright * glow;\n    col += core * core * front * lam * 0.7 * vec3(1.0, 0.95, 0.85) * glow;   // hot bloom on lit side\n  }\n\n  col *= 1.0 - 0.3 * dot(uv, uv);\n  col = col / (1.0 + col);\n  col = pow(max(col, 0.0), vec3(0.85));\n  gl_FragColor = vec4(col, 1.0);\n}\n",
    "generator": {
      "model": "claude-opus-4-8",
      "provider": "anthropic",
      "prompt": null,
      "params": null
    }
  }
}