v0.16
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 withmeshopt_simplifyScale
)meshopt_simplifySloppy
interface has changed to align withmeshopt_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 extracone_weight
parameter. The old linear-time algorithm is still available asmeshopt_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