# Spec: flat materials — the world without textures ``` Type: spec Status: IMPLEMENTED Status note: implemented 2026-07-08 (ROADMAP #29). The world renders as solid palette color under light in both modes: one named table (`mod palette` in src/bin/bevy.rs) sources every world material; material families replace per-tile art; emissive is information (core > powered machines in amber, power hardware and live feeds in the cold signal — live feeds breathe via `flicker_feeds` — dead equipment dark, model state never glows); a blueprint floor grid is the one shader-level flourish. Tile PNGs and their load paths are deleted (assets/pixellab/ removed); criterion 1 is enforced twice — a unit test over the whole (tile, fog, part, live) material space and a fog_audit_3d assertion on every harness capture. fog_audit_3d passes (4608 tile entities, 37 pooled handles); material-render.md's criteria re-verified after the restyle. Adopted 2026-07-08 (constitution: "Visual identity", flat-materials refinement). Supersedes the texture-treatment parts of material-render.md (which stays IMPLEMENTED — its camera, cutaway, fog-lighting contract, framing, and pooling all carry over unchanged); retires the Pixel Lab world-tile pipeline and ROADMAP #13. Session log: wiki/log/2026-07-08-flat-materials-implemented.md. Stage: B1 — The Basement Constitution: "Visual identity: clinical gore" (flat materials refinement, 2026-07-08), "Justification and legibility" (detail only where it informs), interface/views.md (same-frame contract), interface/material-render.md (the structural render this restyles) Depends on: material-render.md (IMPLEMENTED — the 3D structure), bevy-visual-floor.md (framing rules) ``` ## Behavior Every world surface in both render modes draws as a **solid-color flat material under light** from the clinical palette; no image textures in the world render. The identity's detail budget moves entirely to lighting, palette, silhouette, and shader-level functional detail. - **Palette discipline:** surfaces in white / bone-gray / gunmetal / near-black per the constitution; amber strictly machine presence and selection; crimson strictly gore/security information; one cold signal color for power/screens. Palette constants live in one place in the frontend, named, so the whole look retunes from one table. - **Material families, not per-tile art:** floor, wall, rock, door (by tier), machine chassis, device, person silhouette — each a flat base color + roughness, with emissive variants for powered/known states. Pooled exactly like the current material pool. - **Functional shader detail only:** a subtle floor grid in blueprint areas, scan flicker on live feeds, emissive seams on powered machines. No decorative noise. - **Fog contract unchanged and restated:** unknown = absent, heard = dim presence, remembered/blueprint = unlit flat, seen = lit flat. Lighting remains the epistemic signal. - **People:** flat silhouettes (the current procedural billboards are already the right shape); identity stays a panel/menu fact. - **Sensorium (flat) mode** adopts the same palette table so F3 flips treatment, never language. - **Asset retirement:** the Bevy world render stops loading tile PNGs; assets/ keeps only what the UI genuinely still uses (icons, font). The Pixel Lab pipeline (tooling, skills, wiki page) is removed — no-dead-code; flat materials are the world look. ## Acceptance criteria 1. No image textures load in the world render (both modes); a test or startup assert proves the world material set references no tile PNGs. 2. All world materials come from the named single-source palette table; amber/crimson/signal usage matches the constitution's roles (visual audit recorded in the session log with screenshots). 3. Emissive states are informational: powered vs dead machines, live feeds, and the core read differently at a glance in the dark (screenshot evidence). 4. The fog contract audit (fog_audit_3d) still passes; unknown space stays absent, model state stays unlit. 5. Framing, cutaway, zoom bounds, and material pooling from material-render.md hold unchanged (its criteria re-verified after the restyle). 6. Both frontends and the agent frame remain legible per the visual floor; the terminal is untouched except palette-name references. 7. Unused tile-art assets and their load paths are removed; Pixel Lab tooling/skills/wiki page are scrubbed; ROADMAP #13 marked retired.