{
  "name": "Cyan Tesseract",
  "dimension": "3d",
  "slot": "action_bar",
  "width": 256,
  "height": 128,
  "textBaseline": 128,
  "placement": {
    "x": 0,
    "y": 0
  },
  "shapes": [],
  "texts": [],
  "heads": [],
  "images": [],
  "bars": [],
  "triggers": [],
  "world": {
    "glsl": "vec3 tessVertex(float k, float time) {\n    vec4 p = vec4(mod(k,2.0),mod(floor(k/2.0),2.0),mod(floor(k/4.0),2.0),mod(floor(k/8.0),2.0))*2.0-1.0;\n    p.xw = rpw_rot(time*0.37+0.24)*p.xw;\n    p.yw = rpw_rot(time*0.23+0.12)*p.yw;\n    p.zw = rpw_rot(time*0.13)*p.zw;\n    vec3 q = p.xyz*(0.32/(1.0-p.w*0.30));\n    q.xz = rpw_rot(0.30+time*0.075)*q.xz;\n    q.yz = rpw_rot(0.17)*q.yz;\n    return q;\n}\nvec4 object(vec3 ro, vec3 rd, float t0, float t1, float time, vec3 light, inout float depth) {\n    vec3 v[16];\n    for(int i=0;i<16;i++) v[i]=tessVertex(float(i),time);\n    float nearest=t1;\n    float core=0.0;\n    float glow=0.0;\n    float faceA=0.0;\n    vec3 faceC=vec3(0.0);\n    float faceNear=t1;\n    for(int i=0;i<32;i++) {\n        float bit=exp2(floor(float(i)/8.0));\n        float k=mod(float(i),8.0);\n        int index=int(mod(k,bit)+floor(k/bit)*2.0*bit);\n        vec3 a=v[index]; vec3 b=v[index+int(bit)];\n        vec3 ba=b-a; vec3 w=ro-a;\n        float bb=dot(ba,ba); float br=dot(ba,rd);\n        float s=clamp((dot(ba,w)-br*dot(rd,w))/max(bb-br*br,0.00001),0.0,1.0);\n        vec3 e=a+ba*s;\n        float t=clamp(dot(e-ro,rd),t0,t1);\n        float ds=dot(ro+rd*t-e,ro+rd*t-e);\n        glow+=exp(-ds/0.00065)*0.23;\n        float coverage=1.0-smoothstep(0.000049,0.00011025,ds);\n        if(coverage>0.01) {\n            core=max(core,coverage);\n            nearest=min(nearest,max(t0,t-sqrt(max(0.0001-ds,0.0))));\n        }\n    }\n    for(int j=0;j<12;j++) {\n        int pair=j/4;\n        int b1=1; int b2=2; int b3=4; int b4=8;\n        if(pair==1) {b1=1;b2=4;b3=2;b4=8;}\n        if(pair==2) {b1=2;b2=4;b3=1;b4=8;}\n        int i=int(mod(float(j),2.0))*b3+int(mod(floor(float(j)/2.0),2.0))*b4;\n        vec3 a=v[i];vec3 b=v[i+b1];vec3 c=v[i+b1+b2];vec3 d=v[i+b2];\n        vec3 n=normalize(cross(b-a,d-a));\n        float den=dot(n,rd);\n        if(abs(den)<0.0001) continue;\n        float t=dot(n,a-ro)/den;\n        if(t<t0 || t>t1) continue;\n        vec3 p=ro+rd*t;\n        if(dot(cross(b-a,p-a),n)<0.0 || dot(cross(c-b,p-b),n)<0.0 || dot(cross(d-c,p-c),n)<0.0 || dot(cross(a-d,p-d),n)<0.0) continue;\n        float fr=pow(1.0-abs(den),3.0);\n        float alpha=0.020+0.065*fr;\n        vec3 sky=rpw_sky(reflect(rd,n));\n        faceC+=(vec3(0.055,0.48,0.63)+sky*0.25)*alpha;\n        faceA+=alpha;\n        faceNear=min(faceNear,t);\n    }\n    float ga=1.0-exp(-glow);\n    float fa=clamp(faceA,0.0,0.35);\n    vec3 fc=faceC/max(faceA,0.0001);\n    float alpha=core+(1.0-core)*(ga+(1.0-ga)*fa);\n    if(alpha<0.002) return vec4(0.0);\n    vec3 col=vec3(0.28,1.45,1.75)*core + (1.0-core)*(vec3(0.01,0.8,1.1)*ga+(1.0-ga)*fc*fa);\n    depth=core>0.05 ? nearest : (faceA>0.0 ? faceNear : clamp(-dot(ro,rd),t0,t1));\n    return vec4(col/max(alpha,0.0001),alpha);\n}",
    "prompt": "a tesseract: a 4D hypercube rotating through the fourth dimension, its glowing cyan edges turning inside out, with a faint glassy fill",
    "size": 6,
    "summary": "A projected 4D hypercube rotates through the fourth dimension, turning its glowing cyan edges and faint glassy cubic cells inside out."
  }
}