> raytracer, from scratch

no three.js, no gl. a cpu pixel buffer, hand-written vector math, and recursive rays. drag to orbit.

rendering...

drag horizontally to orbit the camera, vertically to change height. matte spheres, one mirror ball, a checkered ground plane, two point lights, hard shadows, depth-limited reflection. progressive — renders top to bottom in row chunks so the tab doesn't freeze. dragging shows a fast low-res preview; it re-renders at full quality the moment you let go.

"bounces" = how many times a reflected ray is allowed to hit another reflective surface and keep going, before the renderer gives up and just uses ambient light. the mirror ball only needs 1 to look right on its own; higher counts matter when reflections would otherwise bounce between two mirrors — more bounces = more accurate, slower to render.