The interaction layer only — prism painting, the beam tool, the ImGui panel. Tessera owns the chunking, threading, and CPU/CUDA backends, and keeps its own copy of
LightFieldfor the engine's regression tests. Fetched here via CMakeFetchContentat configure time.
Light as a scalar wave field on a fixed hex grid — three independent R/G/B
fields, each solving the discrete wave equation d^2h/dt^2 = c^2*lap(h) on
its own lattice. Different wave speed per color gives chromatic dispersion;
a paintable "prism" region slows each color by a different amount and
bends/splits the beam the way real glass does — no raytracing, no Snell's
law, the wave equation does it. Built on
Tessera.
See demo/light/README.md for the full writeup (where the idea came from, controls, rendering modes, built-in maps).
cmake -S . -B out/build -G Ninja
cmake --build out/build --target Demo_lightCMake resolves and builds Tessera as
part of this step (FetchContent) — no separate clone or install beyond
what Tessera itself needs (Windows, MSVC, Ninja).
- Pluck — LMB click, one-shot amplitude impulse
- Brush — LMB hold injects energy, RMB hold damps it
- Prism — LMB paints the slow-medium region, RMB erases it
- Beam — LMB press, drag to aim, hold to fire a phased directional pulse
- WASD/scroll/MMB — camera