feat: bounce-generation GI bake and SpaceMouse Wireless BT support master
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 2 Oct 2026 19:13:00 +0000 (22:13 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 2 Oct 2026 19:13:00 +0000 (22:13 +0300)
commit2e4aebafcb36644663fcd2a0d19bfe1fe1f8f6e3
tree7533a8c3910a43ffa6aa7e6ddd59ff2372f75298
parent27deab957f9071f2139957cc00c9c6a7c61382b4
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:
AGENTS.org
Documentation/Global illumination/GI pipeline.svg
Documentation/Global illumination/index.org
Documentation/SpaceMouse 6DOF/index.org
Documentation/index.org
src/main/java/eu/svjatoslav/aukio/e3d/gui/DeviceHotplug.java
src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewPanel.java
src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseController.java
src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseManager.java
src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceNavigatorHid.java
src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/GlobalIllumination.java
src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/Lightmap.java
src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/TriangleBvh.java
src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangle.java
udev/99-spacenavigator.rules