5.2 KiB
5.2 KiB
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
- src/settings.h — all constexpr constants
- CMakeLists.txt — builds main radar binary; terrain_preprocess commented out
CORE / INFRASTRUCTURE
- src/main.cpp — entry point; GLFW/GLAD init; thread launch
- src/shared_render_state.h — Mutex A; state vars Thread 1 reads each frame
- src/shared_render_state.cpp
- src/target_buffer.h — Mutex B; target data between TrafficCop & Simulator
- src/target_buffer.cpp
SCOPE FRAMEWORK
- src/scope.h — abstract Scope base; auto-advance timer
- src/scope.cpp
- src/scope_manager.h — owns scope list; s/S switching; 120s timer
- src/scope_manager.cpp
SCOPES — INDIVIDUAL
- src/scope_intro.h — Exhibit Introduction (text only)
- 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
- src/scope_ppi.h — abstract PPIScope; P7 phosphor; graticule; cursor; held-keys
- src/scope_ppi.cpp
- src/scope_marine_ppi.h — Marine PPI; 4s sweep; 2/4/6 mi ranges; beam-painted rings
- 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
- src/phosphor.h — P7 decay/persistence; ping-pong FBO
- src/phosphor.cpp
- src/graticule.h — incandescent bearing ring; ticks; 15° labels; cursor
- src/graticule.cpp
- src/left_panel.h — FreeType TextRenderer + LeftPanel description pane
- src/left_panel.cpp
TARGET PIPELINE (THREADS 2 & 4)
- src/traffic_cop.h — Thread 2; polls Simulator & RPi receivers at 4 Hz
- src/traffic_cop.cpp
- src/simulator.h — Thread 4; 7 simulated targets; flat-earth projection
- src/simulator.cpp
- src/rpi_receiver.h — stub; always returns 0 targets
- src/rpi_receiver.cpp
- src/knob_panel.h — Thread 3; hardware stub; idles until encoders wired
- 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
- shaders/sweep.vert — fullscreen quad pass-through
- shaders/sweep.frag — P7 ping-pong decay + beam + rings + targets
- shaders/phosphor.vert — fullscreen quad pass-through
- shaders/phosphor.frag — P7 color curve; bloom; scope circle clip
- shaders/graticule.vert — screen-pixel → NDC for line geometry
- shaders/graticule.frag
- shaders/text.vert — glyph quad (xy=screen pos, zw=atlas UV)
- shaders/text.frag — samples GL_RED atlas; applies text color
- shaders/bloom.vert — stub (bloom post-process; not yet wired in)
- shaders/bloom.frag
- shaders/terrain_clutter.vert — deferred with terrain
- shaders/terrain_clutter.frag
DATA FILES
- 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)