v0.18
This release contains several gltfpack fixes/improvements as well as small improvements to the simplifier, and support for simplifier in the JavaScript library.
Importantly, gltfpack now uses basis_universal as a library to implement ETC1S and UASTC texture compression. This means that external executables like basisu
/toktx
are no longer necessary, and compression of complex scenes is much faster due to support for parallel compression using optimized job pool to maximize resource allocation, but it also means that node.js version of gltfpack
can no longer compress textures - native gltfpack
binary should be used instead.
Library improvements
- Add options bitmask to
meshopt_simplify
that can be used to specifymeshopt_SimplifyLockBorder
option; this option is useful when multiple chunks of a single mesh are simplified independently, as it makes sure the simplified versions will connect without gaps - Fix vertex classification around degenerate triangles which improves simplification quality in rare cases
- Added
MESHOPTIMIZER_ALLOC_CALLCONV
build setting (fixes #403) - JavaScript version of meshoptimizer library now supports mesh simplification via
mesh_simplifier
module
gltfpack improvements
- Add support for KHR_materials_emissive_strength
- Add support for KHR_materials_iridescence
- Switch to parallel texture compressor using internal Basis encoder, and stop supporting texture compression via external executables
- Add command line option
-tj
that can override the degree of parallelism used during texture compression - Add command line option
-tl
that can limit the texture width/height during texture compression - Support texture masks in
-tc
option which allows to only compress some textures as ETC1S - Implement support for normalized attributes during quantization; texture coordinates now use normalized integers, and positions can use normalized integers with
-vpn
command line option - Preserve interpolation type for STEP animation tracks
- Sort bone influences by weight, not by index, which allows renderers to drop last few bone influences in shader LODs
- Optimize .obj parsing to reduce memory consumption, yielding 2-3x reduction in total memory consumption for some large .obj files