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_encodeVertexBuffer
andmeshopt_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_encodeIndexBuffer
andmeshopt_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_remapIndexBuffer
and 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_analyzeVertexCache
andmeshopt_analyzeVertexFetch
results 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