v0.2.1 — reference-parity postprocess (Windows build fix)
Same as v0.2.0 plus MSVC portability fixes (missing <cmath> include, portable count-trailing-zeros) so the Windows binaries build. Supersedes v0.2.0.
Highlights
Output quality is now at parity with the reference CUDA postprocess (verified against o_voxel.postprocess.to_glb run on identical inputs — see docs/spec/28-divergence-matrix.md addenda).
- Narrow-band UDF dual-contouring remesh: the raw dual-grid mesh is rebuilt into a single clean manifold before simplification (port of cumesh
remesh_narrow_band_dc). - Quadric simplification to the face budget (300k @1024) via meshoptimizer.
- Reference charting: bottom-up normal-cone chart merging (cumesh
compute_chartsport) + stock xatlas per cluster, packed at auto resolution with UVs normalized to fill the full atlas — texel density at or above the reference, no more atlas overflow or timeouts. - Crack-free unwrap: degenerate/uncharted faces are kept with point-collapsed UVs (goblin welded-boundary edges: 15.3k → 307).
- Telea inpaint (OpenCV-faithful FMM) replaces BFS dilation for texture gutters.
- WebP GLB export: lossy WebP textures via
EXT_texture_webp(libwebp fetched at configure time,-DTRELLIS_WEBP=OFFfor PNG), smooth vertex normals,doubleSided:false, reference material layout. - Perf (
docs/spec/29-perf-profile.md): postprocess ~25 s for a 300k-face asset; per-flow wall timing built in. E2E at res 1024: goblin 6:09 on Strix Halo (Vulkan) / 3:16 on RTX 5060 Ti (CUDA — faster cold-start than the Python reference on the same GPU). - New tools:
post-replaypostprocess harness,tools/glb_metrics.pyGLB comparison metrics,tools/mv_previewPBR-correct previews.