Note
Early work-in-progress. APIs and visuals will change. Fine for sibling apps (Terra, Visage); not a polished published toolkit yet.
Lamina is a reusable wgpu immediate-mode UI toolkit (not egui) and design system, shared by Terra (landscapes) and Visage (face / character animation).
It is domain-neutral: no terrain or character types, no product chrome. Apps own the window and event loop. Typical frame: 3D (or other) pass first, then GuiRenderer::render with LoadOp::Load, then a single present.
- wgpu 24 — Lamina draws into the app’s existing surface
- No winit — the host owns input and the event loop (Terra/Visage use winit 0.30)
- No domain types — widgets and layout only; products keep their own crates
- Timeline / graph —
timeline_ruler,playhead,track_row,key_marker,curve_graph,record_button(domain-neutral; Visage composes them)
| Crate | Role |
|---|---|
lamina |
Immediate-mode wgpu UI toolkit and design system |
lamina-test-gpu |
Headless GPU harness for GUI tests (dev-only) |
Terra and Visage live as siblings under GameDevTooling and path-depend on this crate:
lamina = { path = "../Lamina/crates/lamina" }Pin wgpu 24 to match this crate.
cargo test -p lamina
cargo check -p laminaGPU tests skip when no adapter is available.
Licensed under the MIT License.
