Update
float geom1(vec3 point) { point=roty(t*0.05)*point; return sdPyramid(rotz(t*0.07)*point,2.); } float geom2(vec3 point) { point = roty(t*0.07)*point-vec3(0.,0.,5.)+sin(t)+1.0; point = rotz(t*0.27)*point; return boxSDF(point, vec3(1., 0.38, 0.08))-0.1; } float geom3(vec3 point) { return geom1(rotz(-90.*0.017453)*point); } float sceneSDF(vec3 point) { float s = min( geom2(point), geom1(point)); return min(s,sdCapsule(point,v1,v2,0.1)); } /* Available functions float sceneSDF(vec3 point) { //point.xyz = mod(point.xyz+vec3(2.), vec3(4.)) - vec3(2.); float a = min(sphereSDF(point, vec3(0.,0.,0.), 1.4), sphereSDF(point, vec3(0.,5.*cos(t*0.1),5.*sin(t*0.1)), 0.8)); a = min(a, sphereSDF(point, vec3(0.,0.,5.*sin(t*0.5)), 0.8)); a = min(a, sphereSDF(point, vec3(0.,5.*sin(t*0.5),0.), 0.8)); a = min(a, sphereSDF(point, vec3(5.*sin(t*0.5),0.,0.), 0.8)); float b = min(min(boxSDF(point, vec3(5., 0.5, 0.5)), boxSDF(point, vec3(0.5,5., 0.5))), boxSDF(point, vec3(0.5,0.5,5.)) ); a = smin(a,b,0.3+0.1*sin(t)); a=min(a,sdPyramid(point-vec3(0.,5.,0.),1.)); return a; } float sdPlane( vec3 p ) float sdSphere( vec3 p, float s ) float sdBox( vec3 p, vec3 b ) float sdBoundingBox( vec3 p, vec3 b, float e ) float sdEllipsoid( in vec3 p, in vec3 r ) // approximated float sdTorus( vec3 p, vec2 t ) float sdCappedTorus(in vec3 p, in vec2 sc, in float ra, in float rb) float sdHexPrism( vec3 p, vec2 h ) float sdOctogonPrism( in vec3 p, in float r, float h ) float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) float sdRoundCone( in vec3 p, in float r1, float r2, float h ) float sdRoundCone(vec3 p, vec3 a, vec3 b, float r1, float r2) float sdTriPrism( vec3 p, vec2 h ) float sdCylinder( vec3 p, vec2 h ) float sdCylinder(vec3 p, vec3 a, vec3 b, float r) float sdCone( in vec3 p, in vec2 c, float h ) float sdCappedCone( in vec3 p, in float h, in float r1, in float r2 ) float sdCappedCone(vec3 p, vec3 a, vec3 b, float ra, float rb) float sdSolidAngle(vec3 pos, vec2 c, float ra) float sdOctahedron(vec3 p, float s) float sdPyramid( in vec3 p, in float h ) float sdRhombus(vec3 p, float la, float lb, float h, float ra) */