Skip to content

v0.16

Compare
Choose a tag to compare
@zeux zeux released this 08 Apr 04:10
· 1107 commits to master since this release

This release features many library changes including a few new algorithms and substantial improvements in existing algorithms, notably making mesh simplification and clusterization better, as well as gltfpack fixes and improvements.

Library improvements

  • meshopt_simplify now has an extra output parameter, result_error, which will contain the relative simplification error (which can be converted to absolute with meshopt_simplifyScale)
  • meshopt_simplifySloppy interface has changed to align with meshopt_simplify: the function now expects a larger output index buffer size and accepts an input error that restricts simpification as well as an output error.
  • meshopt_simplify now tries to avoid simplifications that result in triangle flips; this substantially improves triangulation quality at a moderate performance cost.
  • meshopt_buildMeshlets interface has changed to allow for almost arbitrary meshlet vertex/triangle limits by outputting three separate arrays of meshlet data instead of one; the resulting layout is also more compact and is often more GPU-friendly.
  • meshopt_buildMeshlets now implements a new, more expensive algorithm that generates meshlets that are optimized for a balance of vertex reuse, spatial coherency and cone culling efficiency, controlled with an extra cone_weight parameter. The old linear-time algorithm is still available as meshopt_buildMeshletsScan.
  • Implement a new algorithm, meshopt_generateTessellationIndexBuffer, that can be used to generate a special index buffer that, together with hardware tessellation stage, can efficiently implement crack-free PN-AEN tessellation for arbitrary meshes.
  • Optimize Wasm SIMD variant of meshopt_decodeVertexBuffer, making it ~5% faster
  • Fix SIMD decoder filters (meshopt_decodeFilter*) when vertex count wasn't aligned by 4
  • Fix undefined behavior when decoding some invalid compressed index buffers with meshopt_decodeIndexBuffer

gltfpack improvements

  • Implement support for KHR_materials_variants
  • Implement support for recent versions of PBR-next extensions, including KHR_materials_volume and KHR_materials_specular
  • Fix issues with running texture compression tools (toktx, basisu) in various environments
  • Fix support for older versions of Node.js
  • Fix processing for some scenes with clearcoat materials that didn't have a diffuse texture
  • Fix handling of absolute paths in Node.js builds
  • Fix processing for scenes with KHR_texture_transform extension when quantization is disabled