Police Boat (Taylor Street Dock) — This one I want to flag: 48.735519° N, -122.331931° W. The -122.331931° W longitude seems significantly too far east for a Bellingham waterfront dock. The Bellingham waterfront is roughly -122.48° to -122.50° W. At -122.33° W you're several miles inland, near the eastern suburbs/I-5 corridor — not a dock. Worth double-checking this coordinate. The Taylor Dock / Boulevard Park dock area is around -122.497° W. --- Ground Terrain and LIDAR Data Processing (lines 784-837) Coverage gap for Chain Home: The terrain data (LiDAR zips, ENC chart, USGS GeoTIFF) all cover the Bellingham Bay / Pacific Northwest area. The Chain Home scope is at RAF Ventnor, Isle of Wight, England — there is no terrain data for that location. Since Chain Home is an A-scope (not PPI), land clutter isn't visually displayed the same way, but if you want to simulate land return/clutter in the Chain Home A-scope signal, you'll need to either skip terrain effects for that scope or procedurally generate some clutter. This should be explicitly called out in the document. Raycasting architecture — online vs. offline: The document says "processed into a fragment shader via ray casting." This is a critical architectural decision that needs clarification: - Offline preprocessing (recommended): Run the raycasting once at startup (or as a build step) using GDAL + CPU code to produce a pre-baked radar shadow/land-mask texture. Load that texture once into VRAM. The fragment shader then just samples it. This is fast and suitable for the integrated Radeon 780M. - Real-time raycasting in the fragment shader: Computing terrain shadows per-pixel per-frame is very expensive, even on discrete GPUs. On an integrated Radeon 780M sharing system RAM as VRAM, this would likely be a serious performance problem. You should specify which approach you intend. I'd strongly suggest offline preprocessing into a pre-baked GL_R32F texture. Moving texture for police boat: The document notes "the texture will need to be moved around for the police boat PPI radar." This is more nuanced than translating it — as the boat moves, the UV coordinate mapping from radar-local meters to texture space changes. At 6 nm max range the boat could traverse a significant fraction of the texture. The shader needs to recompute the texture origin offset each frame based on the boat's current lat/lon. That needs to be spec'd out when you get to that scope. Data layering order is correct: LiDAR overrides coarse USGS DEM where they overlap. The suggestion to reproject everything to UTM Zone 10N before merging is the right approach for the Bellingham area. One missing element: The ENC chart (US5WA45M.000, S-57 vector format) gives you shoreline and bathymetry. The document doesn't yet describe how the ENC shoreline data feeds into the radar simulation specifically — whether it's used to generate a land-mask (anything above 0m elevation = land = returns radar signal) or just for visual reference. The LiDAR/DEM heights already handle this implicitly (height > 0 = land), but it's worth a sentence clarifying the ENC chart's role vs. the elevation data's role. --- Summary of action items from the review: 1. Verify the police boat Taylor Street Dock longitude — -122.331931° W looks wrong. 2. Clarify how Chain Home handles terrain (or explicitly state it doesn't). 3. Decide offline-preprocess vs. real-time raycasting and document that decision. 4. Add a note on how the ENC chart's role differs from the DEM/LiDAR data. ✻ Churned for 58s ──────────────────────────────────