verve.gl — spot lights + spot shadow
Three lights in one scene: a spot caster above the cube that casts a perspective shadow (fovy = 2 × outer angle, same depth pass + PCF as the directional shadow), a dim fill directional keeping the unlit side visible, and a blue-tinted point accent that shows 1/d² attenuation on the cube face.
Drag to orbit · wheel to zoom · cone shadow tracks the spot.
The spot cone uses smoothstep(cos_outer, cos_inner, dot(-L, dir)) for soft falloff at the penumbra. The scene is lit by up to 4 mixed directional / point / spot lights packed into SET_LIGHTS (type 0 / 1 / 2 in the data-gllights attribute).