feat(render): double-single fills for the face3d pipeline

Table / PolyfaceMesh / greek-text / mleader-background fills go through
the face3d pipeline; their vertices were single f32 and quantized at UTM
scale. WireModel now carries a fill_tris_low residual (filled by the
tessellate Lines path), Face3DVertex gains position_low (location 3), and
face3d.wgsl reconstructs the eye-relative position from the pair. 3DFACE
quads built from key_vertices use a zero residual (no low source).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-06-23 18:03:40 +03:00
commit c0f3d0de5e
41 changed files with 107 additions and 28 deletions

View file

@ -1172,6 +1172,7 @@ fn tessellate_dimension_inner(
plinegen: true,
vp_scissor: None,
fill_tris: vec![],
fill_tris_low: Vec::new(),
});
}
if !ext2.is_empty() {
@ -1192,6 +1193,7 @@ fn tessellate_dimension_inner(
plinegen: true,
vp_scissor: None,
fill_tris: vec![],
fill_tris_low: Vec::new(),
});
}
} else {
@ -1212,6 +1214,7 @@ fn tessellate_dimension_inner(
plinegen: true,
vp_scissor: None,
fill_tris: vec![],
fill_tris_low: Vec::new(),
});
}
}
@ -1233,6 +1236,7 @@ fn tessellate_dimension_inner(
plinegen: true,
vp_scissor: None,
fill_tris: geom.arrow_fill,
fill_tris_low: Vec::new(),
});
// DIMTFILL: 0=none, 1=drawing background (mask), 2=DIMTFILLCLR.
@ -1265,6 +1269,7 @@ fn tessellate_dimension_inner(
plinegen: true,
vp_scissor: None,
fill_tris: rect,
fill_tris_low: Vec::new(),
});
}
}