Skip to content

v0.8

Compare
Choose a tag to compare
@zeux zeux released this 01 May 16:07
· 3148 commits to master since this release

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 and meshopt_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 and meshopt_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 with meshopt_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 and meshopt_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