{
  "license": "CC0-1.0",
  "shader": {
    "id": "2nj1hz0p",
    "title": "primordial goo",
    "license": "CC0-1.0",
    "provenance_type": "user_upload",
    "made_with": "glslop",
    "status": "active",
    "compile_ok": true,
    "tags": [
      "goo",
      "slop",
      "gross"
    ],
    "parents": [],
    "author": "zazi5inxhmgi",
    "author_name": "ufffd",
    "author_url": "/u/ufffd",
    "created_at": "2026-06-16T06:35:06.365Z",
    "poster_url": "/posters/2nj1hz0p.avif",
    "stats": {
      "slops": 0,
      "views": 115,
      "forks": 0
    },
    "self": "/api/v1/shaders/2nj1hz0p",
    "isf": "/*{\n  \"DESCRIPTION\": \"primordial goo — wet bile metaballs\",\n  \"CREDIT\": \"claude\",\n  \"CATEGORIES\": [\"generator\"],\n  \"INPUTS\": [\n    { \"NAME\": \"speed\", \"TYPE\": \"float\", \"DEFAULT\": 0.6, \"MIN\": 0.0, \"MAX\": 3.0 },\n    { \"NAME\": \"blobs\", \"TYPE\": \"float\", \"DEFAULT\": 8.0, \"MIN\": 2.0, \"MAX\": 16.0 }\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); }\nvoid main(){\n  vec2 uv = (isf_FragNormCoord - 0.5) * vec2(RENDERSIZE.x/RENDERSIZE.y, 1.0);\n  float t = TIME*speed;\n  float v = 0.0;\n  for(int i=0;i<16;i++){\n    float fi = float(i);\n    if(fi >= blobs) break;\n    vec2 c = 0.7*vec2(sin(t*0.5 + fi*2.3 + hash(vec2(fi,1.0))*6.0), cos(t*0.4 + fi*1.7));\n    float rad = 0.15 + 0.1*hash(vec2(fi, 2.0));\n    v += rad*rad / (dot(uv-c, uv-c) + 0.001);\n  }\n  vec3 murk = vec3(0.15, 0.18, 0.05);\n  vec3 bile = vec3(0.5, 0.65, 0.1);\n  vec3 snot = vec3(0.7, 0.85, 0.3);\n  vec3 col = mix(murk, bile, smoothstep(0.5, 1.5, v));\n  col = mix(col, snot, smoothstep(2.5, 5.0, v));\n  col += pow(smoothstep(3.0, 6.0, v), 3.0)*0.4;\n  gl_FragColor = vec4(col, 1.0);\n}\n"
  }
}