sh = async () => raymarch({
eye: `vec3(0, 0, 3)`,
background: `vec3(0.05)`,
sceneSDF: `
#define PI ${Math.PI}
#define TAU ${Math.PI*2}
${opSmoothUnion()}
${opUnion()}
${rotate3D()}
${sdBox()}
${sdSphere()}
${easeInOutQuad()}
${opSubtraction()}
${await snoise2()}
float glow = 0.;
vec2 sceneSDF(vec3 p) {
float d = 1e10;
d = sdBox(p, vec3(1, 1, 1.2));
d = opSubtraction(sdBox(vec3(p.xy, p.z - 10.), vec3(.9, .9, 11.)), d);
p *= rotate3D(u_time * TAU, vec3(1, 2, 0));
p *= rotate3D(PI/2., vec3(0, 1, 1));
float box = sdBox(p, vec3(0.6));
float noise = snoise(vec2(100. + cos(u_time * TAU) * .4, sin(u_time * TAU) * .4));
vec2 dim = vec2(0.59999 + noise * .05, 0.7);
box = opSubtraction(sdBox(p, dim.yxx), box);
box = opSubtraction(sdBox(p, dim.xyx), box);
box = opSubtraction(sdBox(p, dim.xxy), box);
d = opUnion(d, box);
glow += 0.01 / (0.01 + box * box * 50.) / (float(AA) * 4.);
noise = 1. - (noise * 2. - 1.);
vec2 dim2 = vec2(noise * .05, noise * .2);
float box2 = sdBox(p, dim2.xxy);
box2 = opUnion(box2, sdBox(p, dim2.xyx));
box2 = opUnion(box2, sdBox(p, dim2.yxx));
d = opUnion(d, opSmoothUnion(sdSphere(p, 0.55), box2, 0.5));
return vec2(d, 600.);
}
`,
effect: `
vec3 effect(vec3 c) {
c += glow * vec3(.3, 0.3, 1.);
return c;
}`,
antiAliasing: 3,
logShader: true
})