Funny raytracer. Minecraft flight keys for movement, o/k/l/; for camera.
It will not work on mobile because webgpu (and also raytracing on your phone would be a bit decadent
will be noisy, especially during day scenes. Stand still for a moment to allow convergence :heart:
Lol exec() users rise up anyways to declare a material, here's the API (wow I'm an awful person) (also remember to registry.register):
Material.constructor({ diffuseCol = [0.5,0.5,0.5], specularCol = [0.5,0.5,0.5], emissionCol = [0,0,0], diffuseStr = 1, specularHardness = 400, roughness = 0, reflectCol = [0.9,0.9,0.9], absorbCol = [0.0,0.0,0.0], transmitCol = [1,1,1], reflectStr = 0, ior = 1, transness = 0, }={})
There are also default materials: basic, mirror, glow, glass, glowglass and diffuse (under materials.) The included meshes are dragon, pillars and cube. The API for affinetransform is
function affineTransform({ xrot=0, yrot=0, zrot=0, rot=[0,0,0], xscale=1, yscale=1, zscale=1, scale=[1,1,1], xmove=0, ymove=0, zmove=0, offset=[0,0,0] })