v0.17
This release contains several gltfpack fixes/improvements as well as small tweaks to the core library, and a new JavaScript package, meshoptimizer.
Library improvements
- Implement
meshopt_encodeFilter*
functions that encode floating point data in a format that can be decoded using decode filters; this can be used together with vertex codec and is mostly designed to supportEXT_meshopt_compression
glTF extension. - Improve simplification performance when applied to large meshes with integer coordinates.
gltfpack improvements
- Preserve texture samplers along with wrap and filter settings
- Implement support for texture flipping (via
-tfy
) when using texture compression - Implement support for specifying texture compression settings separately for color/normal/attribute maps (e.g.
-tu normal
now enables UASTC only for normal maps) - Update texture compression command line parameters for UASTC to match latest toktx/basisu
- Optimize materials by removing BLEND mode when it's provably unnecessary to correct for exporters that use BLEND unconditionally
- Fix default intensity for lights specified via
KHR_lights_punctual
extension - Several fixes to animation compression heuristics fixing scenes that previously resulted in missing animation data
- Fix mesh merging when some meshes have negative scale
- Fix quantization processing when
KHR_materials_volume
extension is used - Fix processing for glTF files that are 2 GB or larger
- Fix decimal separator in glTF output when running on Linux with a non-English locale
meshoptimizer.js
To facilitate integration of meshoptimizer compression into web applications, several algorithms that the library provides, specifically mesh reordering, vertex/index compression as well as attribute filters, are now provided as a standalone JS package available through NPM, meshoptimizer.
The package provides meshopt_decoder
module that can be used to decompress meshes, and meshopt_encoder
module that can be used to optimize and compress meshes. Both modules are particularly important for applications that work with EXT_meshopt_compression glTF extension.
Note that these JS modules are low-level and are intended to be used in content pipeline tools (like glTF-Transform) or renderers (like three.js or Babylon.js); it's comparatively rare that these would be useful to integrate directly into a web application as opposed to a high-level library dependency.