facett-map3d-flight — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The AAA planetary FLIGHT-SIM engine layer over facett-map3d — f64 floating origin, precomputed atmospheric scattering, and a 6DOF camera rig — GPU-required, full-screen, opt-in.
- Does: Carries the heavy flight-sim machinery so facett-map3d stays lean. Landed (CPU foundation, headless-testable):
origin— f64 Web-Mercator world frame + per-frame camera-centred rebase to f32 (kills far-from-origin jitter/Z-fighting);atmos— Bruneton/Hillaire-style transmittance LUT + single-scatter sky-view + aerial perspective (atmospheric_sunskyfeeds facett-map3d's sky.wgsl uniforms);camera_fly— deterministic 6DOF rig (free-fly / cinematic-orbit / flight-stick);control/tiles/sweden— a control-frame adapter + an out-of-core per-tile GeoParquet streamer over the Sweden grid;scatter_gpu(behindwgpu) — the GPU transmittance-LUT precompute compute pass (scatter_lut.wgsl→ Rgba32Float texture), validated texel-for-texel against theatmosCPU oracle. Roadmapped (not landed): sampling the LUT texture in sky.wgsl, GPU-compute extrusion, CDLOD DEM terrain. Reuses (does not fork) facett-map3d's Mesh3 + wgpu pipeline + shaders. - Key deps:
facett-core,facett-map(Way),facett-map3d(reused Mesh3/pipeline/shaders),facett-osm(DirTileSource GeoParquet), optionalegui(live fly adapter). Dev: arrow-array/schema + parquet 58 (synthetic per-tile fixtures). - Shape: lib, ~2.4k lines. Modules: tiles (636), atmos (515), camera_fly (353), sweden (311), control (266), origin (262), lib (105). Foundation is pure CPU math (no GPU/egui), inject-assert-testable (FC-7).
- Observed role in the workspace: The opt-in heavy sibling of facett-map3d; roadmap in
.nornir/flightsim-engine-roadmap.md. Default build is lean and compiles without a graphics adapter.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: