Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 1.71 KB

File metadata and controls

41 lines (32 loc) · 1.71 KB

WaveLight

C++ Platform License

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 LightField for the engine's regression tests. Fetched here via CMake FetchContent at 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).

Build

cmake -S . -B out/build -G Ninja
cmake --build out/build --target Demo_light

CMake resolves and builds Tessera as part of this step (FetchContent) — no separate clone or install beyond what Tessera itself needs (Windows, MSVC, Ninja).

Controls

  • 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