Skip to content

v0.17

Compare
Choose a tag to compare
@zeux zeux released this 21 Nov 19:44
· 985 commits to master since this release

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 support EXT_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.