153 lines
5.2 KiB
Markdown
153 lines
5.2 KiB
Markdown
# Build Progress Checklist
|
|
# Museum Vintage Radar Exhibit — C++ / OpenGL
|
|
# Update this file as each item is completed.
|
|
# At the start of a new session, read this file to Claude to resume.
|
|
|
|
## HOW TO USE
|
|
- Mark completed files with [x]
|
|
- Note any partial files with [~] and add a comment
|
|
- If a session ends mid-task, note it under RESUME POINT below
|
|
|
|
---
|
|
|
|
## RESUME POINT
|
|
*(update this when a session ends mid-task)*
|
|
|
|
Last completed: Marine PPI builds and runs cleanly (build_progress.md updated).
|
|
In-progress: —
|
|
Next task: Marine A-Scope (scope_ascope + scope_marine_a) or ATC PPI
|
|
|
|
---
|
|
|
|
## CONFIGURATION
|
|
|
|
- [x] src/settings.h — all constexpr constants
|
|
- [x] CMakeLists.txt — builds main radar binary; terrain_preprocess commented out
|
|
|
|
---
|
|
|
|
## CORE / INFRASTRUCTURE
|
|
|
|
- [x] src/main.cpp — entry point; GLFW/GLAD init; thread launch
|
|
- [x] src/shared_render_state.h — Mutex A; state vars Thread 1 reads each frame
|
|
- [x] src/shared_render_state.cpp
|
|
- [x] src/target_buffer.h — Mutex B; target data between TrafficCop & Simulator
|
|
- [x] src/target_buffer.cpp
|
|
|
|
---
|
|
|
|
## SCOPE FRAMEWORK
|
|
|
|
- [x] src/scope.h — abstract Scope base; auto-advance timer
|
|
- [x] src/scope.cpp
|
|
- [x] src/scope_manager.h — owns scope list; s/S switching; 120s timer
|
|
- [x] src/scope_manager.cpp
|
|
|
|
---
|
|
|
|
## SCOPES — INDIVIDUAL
|
|
|
|
- [x] src/scope_intro.h — Exhibit Introduction (text only)
|
|
- [x] src/scope_intro.cpp
|
|
- [ ] src/scope_ascope.h — abstract AScope (A-scope shared behavior)
|
|
- [ ] src/scope_ascope.cpp
|
|
- [ ] src/scope_marine_a.h — Marine A-Scope; P1; graticule swap animation
|
|
- [ ] src/scope_marine_a.cpp
|
|
- [ ] src/scope_chain_home.h — Chain Home A-Scope; P2; goniometer; PRF; calibrator
|
|
- [ ] src/scope_chain_home.cpp
|
|
- [x] src/scope_ppi.h — abstract PPIScope; P7 phosphor; graticule; cursor; held-keys
|
|
- [x] src/scope_ppi.cpp
|
|
- [x] src/scope_marine_ppi.h — Marine PPI; 4s sweep; 2/4/6 mi ranges; beam-painted rings
|
|
- [x] src/scope_marine_ppi.cpp
|
|
- [ ] src/scope_boat_ppi.h — Boat PPI; moving origin; heading marker; patrol route
|
|
- [ ] src/scope_boat_ppi.cpp
|
|
- [ ] src/scope_atc_ppi.h — ATC PPI; 5s sweep; 5/10/15/20 mi ranges
|
|
- [ ] src/scope_atc_ppi.cpp
|
|
- [ ] src/scope_par.h — PAR; dual stacked scopes; az + el; 30 Hz
|
|
- [ ] src/scope_par.cpp
|
|
|
|
---
|
|
|
|
## RENDERING SUPPORT
|
|
|
|
- [x] src/phosphor.h — P7 decay/persistence; ping-pong FBO
|
|
- [x] src/phosphor.cpp
|
|
- [x] src/graticule.h — incandescent bearing ring; ticks; 15° labels; cursor
|
|
- [x] src/graticule.cpp
|
|
- [x] src/left_panel.h — FreeType TextRenderer + LeftPanel description pane
|
|
- [x] src/left_panel.cpp
|
|
|
|
---
|
|
|
|
## TARGET PIPELINE (THREADS 2 & 4)
|
|
|
|
- [x] src/traffic_cop.h — Thread 2; polls Simulator & RPi receivers at 4 Hz
|
|
- [x] src/traffic_cop.cpp
|
|
- [x] src/simulator.h — Thread 4; 7 simulated targets; flat-earth projection
|
|
- [x] src/simulator.cpp
|
|
- [x] src/rpi_receiver.h — stub; always returns 0 targets
|
|
- [x] src/rpi_receiver.cpp
|
|
- [x] src/knob_panel.h — Thread 3; hardware stub; idles until encoders wired
|
|
- [x] src/knob_panel.cpp
|
|
|
|
---
|
|
|
|
## TERRAIN (deferred — not part of Marine PPI phase)
|
|
|
|
- [ ] src/terrain_map.h
|
|
- [ ] src/terrain_map.cpp
|
|
- [ ] src/land_clutter.h
|
|
- [ ] src/land_clutter.cpp
|
|
- [ ] src/terrain_preprocess.cpp — STANDALONE offline tool; links GDAL only
|
|
|
|
---
|
|
|
|
## DATABASE PANEL (deferred)
|
|
|
|
- [ ] src/db_panel.h
|
|
- [ ] src/db_panel.cpp
|
|
|
|
---
|
|
|
|
## DEAR IMGUI (deferred — needed only for --database mode)
|
|
|
|
- [ ] src/imgui/imgui.h
|
|
- [ ] src/imgui/imgui.cpp
|
|
- [ ] src/imgui/imgui_impl_glfw.h
|
|
- [ ] src/imgui/imgui_impl_glfw.cpp
|
|
- [ ] src/imgui/imgui_impl_opengl3.h
|
|
- [ ] src/imgui/imgui_impl_opengl3.cpp
|
|
- [ ] src/imgui/imgui_draw.cpp
|
|
- [ ] src/imgui/imgui_tables.cpp
|
|
- [ ] src/imgui/imgui_widgets.cpp
|
|
|
|
---
|
|
|
|
## SHADERS
|
|
|
|
- [x] shaders/sweep.vert — fullscreen quad pass-through
|
|
- [x] shaders/sweep.frag — P7 ping-pong decay + beam + rings + targets
|
|
- [x] shaders/phosphor.vert — fullscreen quad pass-through
|
|
- [x] shaders/phosphor.frag — P7 color curve; bloom; scope circle clip
|
|
- [x] shaders/graticule.vert — screen-pixel → NDC for line geometry
|
|
- [x] shaders/graticule.frag
|
|
- [x] shaders/text.vert — glyph quad (xy=screen pos, zw=atlas UV)
|
|
- [x] shaders/text.frag — samples GL_RED atlas; applies text color
|
|
- [x] shaders/bloom.vert — stub (bloom post-process; not yet wired in)
|
|
- [x] shaders/bloom.frag
|
|
- [ ] shaders/terrain_clutter.vert — deferred with terrain
|
|
- [ ] shaders/terrain_clutter.frag
|
|
|
|
---
|
|
|
|
## DATA FILES
|
|
|
|
- [x] data/patrol_route.json — boat waypoints stub (used by future BoatPPIScope)
|
|
|
|
---
|
|
|
|
## COUNTS
|
|
Total items: 68
|
|
Completed: 38
|
|
Remaining: 30 (A-scopes, Boat PPI, ATC PPI, PAR, terrain, DB panel, ImGui, 2 shaders)
|