feat(text): suppress glyph strokes when SDF text is on

With OCS_TEXT_SDF set, text now renders only as SDF quads: the wire path
skips building glyph-stroke geometry (bins stays empty, so the existing
empty-wire branch still emits the insertion snap point). This removes the
double draw (strokes + SDF) and, as a side effect, fixes the long-standing
snap pollution (#276) — snapping near text no longer catches individual
glyph-stroke endpoints, only the insertion point.

Shared sdf_text_enabled() (cached env read) gates both the collector and
the stroke suppression so they stay in lock-step. Flag off: unchanged.

Verified in-app: TEXT/MTEXT/decorations render clean as single SDF, and
snap no longer hits glyph strokes. Click-pick on text is limited while the
flag is on (no stroke geometry) pending a text OBB pick box.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-07-07 08:18:08 +03:00
commit 9f60470067
3 changed files with 16 additions and 2 deletions

View file

@ -784,7 +784,7 @@ impl Scene {
pub(in crate::scene) fn sdf_text_vertices(
&self,
) -> Vec<crate::scene::pipeline::text_gpu::TextVertex> {
self.sdf_text_vertices_enabled(std::env::var_os("OCS_TEXT_SDF").is_some())
self.sdf_text_vertices_enabled(crate::scene::text::sdf_atlas::sdf_text_enabled())
}
#[allow(dead_code)]