wgpu: overlay points (sprite-style, quad-expanded with stroke halo)

Ports GL OverlayRenderer's setOverlayPoints API to WgpuOverlayRenderer.
Each point becomes a 6-vertex screen-space quad sized to inner_diameter
+ 2*stroke_extra; the fragment reads its per-vertex corner varying
instead of gl_PointCoord (WebGPU has no sized-point primitive). Sharp
inner/stroke transition + AA on the outer edge only, matching GL.

Single uniform slot per set — colors are global to the call, not per
point. Vertex buffer regrows 1.5× on demand so steady-state sets don't
re-allocate.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Dion Moult
2026-05-31 08:23:51 +10:00
parent 1d26e5fb92
commit 716dba2244
4 changed files with 326 additions and 1 deletions
+7 -1
View File
@@ -284,8 +284,14 @@ private:
// Overlay primitives. Mirror GL ViewportWindow so the Measurement +
// dimension tools can target either backend through one API.
// Empty groups clears the current set.
// Empty inputs clears the corresponding set.
void setOverlayLines(const std::vector<WgpuOverlayRenderer::LineGroup>& groups);
void setOverlayPoints(const std::vector<float>& world_xyz,
float r, float g, float b, float a,
float pixel_size,
float stroke_r, float stroke_g,
float stroke_b, float stroke_a,
float stroke_extra);
void ensureHizTextures(int viewport_w, int viewport_h);
void releaseHizResources();