v0.10
This release contains a number of fixes and improvements for vertex codec, substantially improves performance of several algorithms in Debug builds and introduces support for decompressing vertex/index data from JavaScript.
New algorithms:
- Introduce an experimental algorithm,
meshopt_generateVertexRemapMulti, that generates the same remap table asmeshopt_generateVertexRemapfor indexing a mesh, but supports vertex data stored as multiple independent streams (deinterleaved) - Introduce an experimental algorithm,
meshopt_generateShadowIndexBufferMulti, that can generate a second index buffer that shares the vertex data with the original index buffer, but supports vertex data stored as multiple independent streams (deinterleaved)
Improvements:
- Optimize NEON code in
meshopt_decodeVertexBuffer, making it 1-2% faster - Improve compatibility of SIMD code in
meshopt_decodeVertexBuffer, fixing compilation issues on ARM64, MSVC ARM, and clang for Windows - Fix a bug in
meshopt_encodeVertexBufferthat resulted in incorrectly encoded data on platforms wherecharisunsigned(this mostly affected ARM hosts such as Android) - Substantially improve performance of multiple algorithms in Debug:
meshopt_analyzeVertexCacheis 6x fastermeshopt_optimizeVertexCacheis 4.7x fastermeshopt_analyzeOverdrawis 3.9x fastermeshopt_optimizeOverdrawis 1.4x fastermeshopt_simplifyis 1.3x faster
JavaScript support:
- Introduce
js/decoder.jsthat contains a WebAssembly version of vertex and index decoders with a JavaScript-friendly interface. The decoders run at 200-400 MB/s on modern desktop CPUs. - Introduce
tools/OptMeshLoader.jsthat contains an example mesh loader for THREE.js that uses vertex/index codecs for compression and quantizes vertex data for efficient storage; the meshes for this loader can be produced bytools/meshencoder.cppusing .OBJ files as an input.