feat: bounce-generation GI bake and SpaceMouse Wireless BT support
Global illumination is rebuilt around strict bounce generations
instead of the phased scheduler: generation 1 caches per-texel light
visibility (direct light is always derived from it, never stored),
generation k gathers the hit surface's generation-(k-1) delta so each
generation adds exactly one bounce, and a global barrier freezes the
field within a generation (plain running-mean sampling, no EMAs). The
bake terminates on a mean-delta threshold or the e3d.gi.generations
cap, and all per-texel arrays (indirect totals, delta buffers,
visibility) are freed when the bake completes — a finished lightmap
keeps only its final composite texture. The phased mode's knobs
(phases, activeWindow, resortDistance, freezeThreshold, alphaMode,
compositeAlpha, calmThreshold) are gone, replaced by generations,
samples and deltaThreshold.
SpaceNavigatorHid now supports multiple 3Dconnexion models behind a
Model enum: SpaceNavigator over USB and SpaceMouse Wireless over
Bluetooth, which sends one combined 13-byte six-axis report, a button
report and a battery report (charge 0..100 plus charging flag). The
hot-plug manager prints the detected model. The udev rules gain a
KERNELS match for the Bluetooth model, which enumerates via uhid so
idVendor/idProduct attributes do not exist.
Docs (GI pipeline and SpaceMouse manuals, index, AGENTS.org) are
rewritten to match; ViewPanel drops unused head-tracking imports.
15 files changed: