Series

Shadowmap — the series

3 essays on one idea, from the one that introduces it to the one that assumes the rest.
  1. 5710142028400.31310distance along the floor from below the eye (m, log scale)pixels one shadow-map texel spans on screen (log scale)1 pxlamp beside the eyelamp 30 m overheadlamp 40 m ahead, facing backmeasured against the closed form: 4e-91024-texel map · eye 1.7 m · 50° field

    A shadow map's texels land by two distances and two cosines

    A renderer finds its shadows by taking a second picture from the lamp and storing a depth in every texel. Each texel reaches the screen through the surface it falls on, and how many pixels it covers there is a closed form — two focal lengths, two distances and two cosines. From a lamp beside the eye every texel lands at 0.79 px; from a lamp 40 m ahead facing back, the same map lands texels of 8.69 px on the floor 5 m out.

    part 1 · pipeline
  2. the whole picture, one density9530²the frustum fitted to the floor7322²the best projective warp of its rows897²the best warp of its rows, any shape840²one texel per pixel of the floor385²the same, with a wall at every point502²facing lamp, floor to 60 m, no texel over a pixel · log scale÷113 by one warp

    One warped shadow map, and what it cannot reach

    The lamp facing the eye needed a shadow map 9,530 texels square — 90.8 million texels — for none of them to land on the near floor larger than a pixel. Fitted to the floor and warped by one projective parameter, the same map needs 805 thousand; nothing can do better than one texel per pixel of the eye's picture, 148 thousand. What stays out of reach is not the cosine of a surface, which a warp absorbs, but two surfaces that want different densities along one ray from the lamp.

    part 2 · pipeline
  3. the frustum fitted to the floor53.61 millionits rows re-spaced, one parameter805 thousandits rows re-spaced, any shape706 thousanda true perspective, one parameter752 thousanda full projective warp154 thousandone texel per pixel of the floor148 thousandlamp 40 m ahead, facing back, floor to 60 m, no texel over a pixel · log scale÷4.6 over any row warp

    One homography makes a shadow map the eye's picture

    A shadow map for a lamp facing the eye needed 706 thousand texels however its rows were re-spaced, nearly five times the one texel per pixel no map can beat. Warp the whole map by a projective transformation, not only its rows, and it needs 154 thousand — within five per cent of the bound — and every texel, carried into the eye's picture, lands at one pixel. The reason is exact: the eye's picture of a floor and the lamp's picture of the same floor are one homography apart.

    part 3 · pipeline

All series