graphic design tool
git clone https://git.lucas.co/cce-designer.git
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 });
}