Draw military flights from the shared GPU icon set

The flights icon planning and presentation move into
`createAircraftIcons` (src/data/aircraftIconLayer.js), and the motion
regime both layers dead-reckon from into src/data/aircraftMotionRegime.js.
Flights keeps only its grounded-floor pass on top.

Military now draws every contact as a row of that icon set, like
flights: the billboards, the cull positions and the rotation-pass
signature go. Tracking hides the row and untracking re-plans it from
the tracked course. Queries read the drawn row position and judge the
horizon as the shader does. Snapshots that arrive before init or after
destroy are ignored, and per-contact lookups find no contact then
instead of throwing.

With about 120 live military contacts, preRender p95 drops from
0.7-0.8 ms to 0.2 ms on the same views. Render time and frame gaps are
unchanged or slightly lower.
This commit is contained in:
Sameh Khamis committed 2026-11-03 20:30:43 -08:00
1 parent 2c4c66c710
commit 9fde0a2a59
33 files changed
+1256 -1376

No files matched your search

+16
View File
@@ -1316,6 +1316,8 @@
"src/layers/flights/queries.js",
"src/layers/flights/rendering.js",
"src/layers/flights/icons.js",
"src/data/aircraftIconLayer.js",
"src/data/aircraftMotionRegime.js",
"src/data/iconSetPrimitive.js",
"src/data/iconSet.js",
"src/data/iconSegment.js",
@@ -1383,6 +1385,14 @@
"src/layers/military/policy.js",
"src/layers/military/queries.js",
"src/layers/military/rendering.js",
"src/layers/military/icons.js",
"src/data/aircraftIconLayer.js",
"src/data/aircraftMotionRegime.js",
"src/data/iconSetPrimitive.js",
"src/data/iconSet.js",
"src/data/iconSegment.js",
"src/data/iconAtlas.js",
"src/data/aircraftRecession.js",
"src/data/modelMirror.js",
"src/data/billboardMirror.js",
"src/layers/aircraft/visualState.js",
@@ -2256,6 +2266,8 @@
],
"modules": [
"src/layers/flights/icons.js",
"src/data/aircraftIconLayer.js",
"src/data/aircraftMotionRegime.js",
"src/sources/adsbFields.js",
"src/data/headingDegrees.js",
"src/data/distanceFormat.js",
@@ -2604,6 +2616,7 @@
"src/layers/military/policy.js",
"src/layers/military/queries.js",
"src/layers/military/rendering.js",
"src/layers/military/icons.js",
"src/layers/military/state.js",
"src/layers/military/testing.js",
"src/layers/military/tracking.js",
@@ -3256,6 +3269,8 @@
"exports": ["./application/layers"],
"modules": [
"src/layers/flights/icons.js",
"src/data/aircraftIconLayer.js",
"src/data/aircraftMotionRegime.js",
"src/data/iconSetPrimitive.js",
"src/data/iconSet.js",
"src/data/iconSegment.js",
@@ -3521,6 +3536,7 @@
"src/layers/military/policy.js",
"src/layers/military/queries.js",
"src/layers/military/rendering.js",
"src/layers/military/icons.js",
"src/layers/military/state.js",
"src/layers/military/testing.js",
"src/layers/military/tracking.js",