v0.8
This release introduces vertex buffer encoder and a stable version of index buffer encoder.
New algorithms:
- Introduce vertex encoder that compresses vertex buffers; it can be invoked using
meshopt_encodeVertexBufferandmeshopt_decodeVertexBuffer. The algorithm typically provides 1.5-2x compression ratio for quantized vertex data, and the resulting data can be compressed further by a general purpose compressor like zstd. Decoding is highly optimized using SSSE3/NEON and runs at 2 GB/s on a modern desktop CPU. - Introduce a stable index encoder that compresses index buffers; it can be invoked using
meshopt_encodeIndexBufferandmeshopt_decodeIndexBuffer. The algorithm typically encodes index buffers using ~3-4 bits per index, and the resulting data can be compressed further by a general purpose compressor like zstd, yielding ~2-3 bits per index for most meshes. Decoding is highly optimized and runs at 2 GB/s on a modern desktop CPU for 32-bit indices (1 GB/s for 16-bit indices). - Introduce a new algorithm to optimize for vertex fetch,
meshopt_optimizeVertexFetchRemap; it generates a remap table that can be used withmeshopt_remapVertexBuffer/meshopt_remapIndexBufferand helps optimizing meshes with several vertex streams.
Improvements:
- Optimize cluster sorting in
meshopt_optimizeOverdraw, making the function 10% faster - Optimize index decoder, making it 15% faster for 32-bit indices and 40% faster for 16-bit indices
- Fix
meshopt_analyzeVertexCacheandmeshopt_analyzeVertexFetchresults for sparse vertex buffers (with unused vertices) - Support in-place optimization in
meshopt_remapVertexBuffer - Improve CMake build files to make the library easier to integrate