forked from 1b-agent/opencadstudio-upstream
Step 3 of the wire pipeline cold-open optimization plan — the biggest single lever. Each segment used to upload as 6 vertices × 96 B = 576 B with the segment payload (pos_a/pos_b/color/half_width/distance/pattern_length/pat0/pat1) duplicated across all six corners of the quad. Wire pipeline now uploads one INSTANCE per segment (88 B) and the vertex shader derives `which_end` and `side` from `@builtin(vertex_index)` against a 6-entry corner table. Net effect on cold open: ~6.5× less wire vertex memory and PCIe upload, plus a smaller Vec to allocate and copy on the CPU side. Wire instance attributes also collapse distance_a / distance_b into a single mix() inside the vertex shader, so per-segment distance still interpolates correctly for the GPU-side linetype dash test. Touches the wire, wire_xray, and face3d-edges draw passes. Co-Authored-By: Claude Opus 4.7 <[email protected]>