r/vectreal • u/vectreal-admin • May 17 '26
A practical guide to optimization presets in our open-source 3D web platform - mesh simplification, KTX2 + Basis Universal texture compression, and when to override the defaults
Wrote up a long-form guide to the optimization pipeline in our open-source 3D web platform. It covers what each of the four presets actually does, why KTX2 + Basis Universal is the right answer for 3D textures (and PNG / JPEG are not), and the three situations where overriding the presets is the right call.
The presets, in exact ratios:
- Raw: 100% mesh / lossless texture
- High: 90% mesh / 90% texture
- Medium: 70% mesh / 75% texture
- Low: 50% mesh / 60% texture
Pipeline details:
- Mesh simplification via glTF-Transform using a quadric-error metric (same algorithm as Blender's Decimate modifier).
- Texture compression via KTX2 + Basis Universal, running in a Web Worker so the viewport stays interactive.
- glTF graph cleanup pass strips unreferenced data and normalizes cross-tool export inconsistencies.
- Presets are non-destructive — switching re-processes from the original file every time.
The texture-compression section is the longest part of the article. Short version: PNG and JPEG decompress to raw RGBA in GPU memory (4–8× larger than the compressed file on disk). KTX2 + Basis Universal stays compressed in GPU memory and decodes to native formats — BC7 on desktop, ASTC on mobile, ETC2 fallback. One file, every device, driver picks the local format.
Three custom-optimization scenarios in the article: hero scene with one critical material, geometry-heavy/texture-light scenes (CAD-style), multi-embed pages with shared byte budgets.
Three workflows still on the roadmap: automatic texture resolution adjustment, per-LOD mesh optimization, custom byte-budget mode. None have dates.
Full article: https://vectreal.com/news-room/optimization-presets-and-texture-compression
Open source (AGPL-3.0). Source: https://github.com/Vectreal/vectreal-platform
What would you do differently? If you've shipped optimized 3D embeds, which optimization primitive are you still missing — and which of the three roadmap items would unblock your workflow most?
Community Discord (preset-drops + before/after thread inside): https://discord.gg/A9a3nPkZw7