git.lucas.co / cce-designer
graphic design tool
git clone https://git.lucas.co/cce-designer.git

commit776b879e79a4c09060e5f38f59c8f5c7347588a4
parentf0270c1a86
authorLucas Galante <[email protected]>
date2026-07-30 13:38
fix: wireframe overlay wires keep a share of their vertex colors

The overlay's wire pass was 75% flat black — and a UV sphere's wire
lattice is azimuthally unmarked (it self-maps every segment step), so the
high-contrast black cage read as glued to the camera during orbits,
dominating the fill's world-anchored color cues: 'the sphere rotates with
the camera again', but only with the overlay on. The tint drops to 45% so
the wires inherit the world-fixed vertex colors — the lattice carries the
same azimuth landmarks as the fill and visibly turns with the world, while
the depth-biased darkening still separates edges from the coplanar fill.

Co-Authored-By: Claude Fable 5 <[email protected]>

 src/app.rs | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/app.rs b/src/app.rs
index 6b7c9f9..4c9e385 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -5369,8 +5369,14 @@ pub(crate) fn geometry_to_spreadsheet_data(geom: &Geometry) -> (Vec<String>, Vec
                             // wire pass darkened so the edges separate from
                             // the identical fill (the wire pipeline's depth
                             // bias keeps the lines above the coplanar fill).
+                            // The tint stays PARTIAL: wires keep a share of
+                            // their world-anchored vertex colors — a flat
+                            // black lattice is azimuthally unmarked (a UV
+                            // sphere's wires self-map every segment step), so
+                            // it perceptually glues the mesh to the camera
+                            // during orbits, dominating the fill's cues.
                             draws.push(SceneDraw { mesh: meshes.spheres, mvp, wireframe: false, wire_tint: NO_TINT });
-                            draws.push(SceneDraw { mesh: meshes.spheres, mvp, wireframe: true, wire_tint: [0.0, 0.0, 0.0, 0.75] });
+                            draws.push(SceneDraw { mesh: meshes.spheres, mvp, wireframe: true, wire_tint: [0.0, 0.0, 0.0, 0.45] });
                         } else {
                             draws.push(SceneDraw { mesh: meshes.spheres, mvp, wireframe: self.wireframe, wire_tint: NO_TINT });
                         }