Commit Graph
4 Commits
Author SHA1 Message Date
Eric Wagoner 4c46611ca2 The ground underfoot and the vault overhead, painted by hand 2026-08-23 13:17:48 -04:00
Eric WagonerandClaude Fable 5 0f01f8c356 The ground gets cast: per-pixel floor and ceiling, both paintable
True floor-casting replaces the gradients and the projected seam lines:
every screen row lies at one depth, walked with a constant world-space
step and sampled from floor.png underfoot and ceiling.png overhead —
each maze cell wearing exactly one tile, so the artist's border IS the
cell seam. Distance shade and fog fold into the same per-pixel pass,
pixel buffers cache per texture (re-read when a painted file lands),
and the whole frame still clears 60fps with room to spare. Flagstones
and dark slabs ship as the starter files beside the other masonry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 13:05:46 -04:00
Eric Wagoner b2a6809a92 Eric repaints the masonry: hand-painted 256px textures for the maze
Chiseled stone for the walls and rim, oak planks with a riveted iron
band for the doors, rough block for filled stone, licking flame, and a
violet spiral for the warps — dropped into public/textures/ with no
code touched, exactly as the pipeline intended.
2026-08-23 13:00:39 -04:00
Eric WagonerandClaude Fable 5 fb89d752ae The masonry becomes files: first-person textures join the paintable art
The six materials move out of the renderer into public/textures/*.png —
repaint any of them (any size; the sampler reads each file's own scale)
and refresh, exactly as the token SVGs work. fpv/textures.ts keeps the
procedural bake as the shipped default and the stand-in while files
load, and the /?tokens gallery grows a masonry section showing the set
beside the tokens they will someday match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 12:48:58 -04:00