Skip to content

v0.2.1 — reference-parity postprocess (Windows build fix)

Choose a tag to compare

@pwilkin pwilkin released this 13 Jul 07:25
· 102 commits to main since this release

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_charts port) + 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=OFF for 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-replay postprocess harness, tools/glb_metrics.py GLB comparison metrics, tools/mv_preview PBR-correct previews.

Fixes the quality gap reported in #1 and #2.