Skip to content

chore(deps): bump meshoptimizer from 0.22.0 to 1.1.1#1237

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/meshoptimizer-1.1.1
Open

chore(deps): bump meshoptimizer from 0.22.0 to 1.1.1#1237
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/meshoptimizer-1.1.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 4, 2026

Copy link
Copy Markdown
Contributor

Bumps meshoptimizer from 0.22.0 to 1.1.1.

Release notes

Sourced from meshoptimizer's releases.

v1.1

This release introduces two new major features, meshlet compression and opacity micromaps, as well as several small features and improvements. Highlights:

A new meshlet codec can compress meshlet topology (micro-index and vertex reference data), exploiting inherent locality and designed for extremely fast CPU decompression. Each meshlet is encoded independently, allowing flexibility in structuring the runtime storage and parallelism. Meshlets can be decoded into common runtime formats (3 or 4 bytes per triangle, 2 or 4 bytes per vertex reference) for direct GPU consumption. For further size savings, the output of the encoder can be compressed using general purpose compressors such as Zstandard. Decoder is heavily optimized and can directly target write-combined memory; you can expect it to run at 7-10 GB/s on modern desktop CPUs. For applications that do streaming processing on the GPU, an example compute shader decoder is provided and can reach 150+ GB/s on RTX 5070.

Opacity micromap rasterization is now supported; a set of functions can generate hardware ready opacity micromap data from mesh UVs and a texture with an alpha channel. The resulting micromap data can be used directly in Vulkan via VK_EXT_opacity_micromap or in DirectX via DXR1.2. Each triangle is subdivided according to its UV footprint into a 4^N microtriangle grid; micro-triangles can use a 2-state (1 bit) or 4-state (2 bits) representation. 4-state representation is useful to accelerate shader invocations to confirm hit opacity via a texture lookup, whereas 2-state representation (or a forced 2-state fallback for a 4-state representation) can be used to completely eliminate shader invocations and reach maximum tracing performance. To minimize the memory overhead, the maps are reused between triangles using a per-triangle OMM index buffer with generated special indices for triangles with consistent state.

The majority of the work on the core library in this release has been sponsored by Valve; thank you!

Library improvements

  • New experimental functions for meshlet encoding, meshopt_encodeMeshlet/meshopt_encodeMeshletBound/meshopt_decodeMeshlet/meshopt_decodeMeshletRaw, can be used to compress meshlet topology
  • New experimental functions for opacity micromaps, meshopt_opacityMapMeasure/meshopt_opacityMapRasterize/meshopt_opacityMapCompact/meshopt_opacityMapEntrySize, can be used to rasterize opacity micromaps from UV coordinates and a texture alpha channel
  • New experimental function, meshopt_optimizeMeshletLevel, optimizes meshlet order further to achieve higher compression ratios (with level 3 recommended for good results)
  • New experimental function, meshopt_extractMeshletIndices, extracts meshlet micro-index buffer and vertex references from a cluster index buffer
  • New experimental option for meshopt_simplify* functions, meshopt_SimplifyRegularizeLight, enables regularization with a smaller factor to reduce impact on geometric quality
  • New experimental flag for vertex_lock array in meshopt_simplifyWith* functions, meshopt_SimplifyVertex_Priority, allows tagging individual vertices so that they are more likely to be preserved
  • Improve performance of bounds computation via meshopt_computeMeshletBound/meshopt_computeClusterBounds by 50% on typical inputs
  • Remove index_count % 3 assertions from meshopt_generateVertexRemap/meshopt_remapIndexBuffer/meshopt_optimizeVertexFetch
  • Improve alpha encoding precision in meshopt_encodeFilterColor, reducing error by ~40%
  • Add support for ARM64EC architecture when building with MSVC

Additional improvements

  • Add optimize_clusters_level parameter to clodConfig in clusterlod.h to optimize clusters for better compression
  • Add demo/meshletdec.slang shader as an example for how to decode new meshlet encoding in a compute shader
  • Fix several bugs in gltfpack that could result in invalid outputs in various corner cases (blend weights, joint indices, clearcoat roughness)
  • Reduce MeshoptDecoder JavaScript module size by ~5% and improve several filters to decode ~5% faster
  • Fix imprecise assertions and memory overallocation in MeshoptClusterizer JavaScript module

Thanks to @​aalekhm for contributions to this release!

v1.0

This release focuses on improvements to clusterization, simplification and partitioning algorithms, as well as stabilization - with the exception of permissive simplification mode, all other library functionality introduced in prior releases is now considered stable.

Highlights:

Clusterization algorithms (meshopt_buildMeshlets/meshopt_buildMeshletsFlex, meshopt_buildMeshletsSpatial) are now faster and, in the case of spatial clusterization, produce higher-quality clusters for vertex-bound meshlets. Additionally, meshlet builders no longer align local index data to 4 bytes, which simplifies memory management and removes alignment restrictions on triangle limits. When cluster partitioning is required, meshopt_partitionClusters now produces better partitioning for disconnected clusters which improves quality of DAGs for hierarchical clusterization.

Speaking of hierarchical clusterization, a new single-header library clusterlod.h is now developed and maintained alongside meshoptimizer. This library implements continuous level of detail by generating a hierarchy of clusters that are progressively grouped and simplified, similarly to Nanite. It leverages meshoptimizer algorithms for internal processing, and can either be used as-is or as a starting point for implementing a custom solution - the code is structured to be easy to understand and modify. Some relevant improvements are described in Billions of triangles in minutes blog post.

New simplification features added in the last release have seen further quality improvements as well; both meshopt_simplifyWithUpdate and the meshopt_SimplifyPermissive option now generate higher-quality outputs. Permissive mode option specifically is still considered experimental, and future releases may improve or change behavior further.

All other experimental library functions and options have been promoted to stable status. This means that future releases will be API compatible (code will continue compiling), ABI compatible (code can link to a shared library build of meshoptimizer which can then be updated independently) and behavior compatible (results may improve in future releases, but these improvements should not require adjustments to the calling code) as far as current 1.0 functionality is concerned.

The vertex encoding functions (meshopt_encodeVertexBuffer/meshopt_encodeVertexBufferLevel) now encode v1 data by default. This can be overridden for applications that need to produce data in v0 format, especially if producing data for EXT_meshopt_compression extension which only supports v0. This version only switches the encoding default; support for encoding and decoding v0/v1 will be provided in perpetuity.

gltfpack now supports the new KHR_meshopt_compression extension via -cz option (or -ce khr which allows specifying compression level independently; -cz is equivalent to -ce khr -cc), which provides better compression compared to the existing EXT_meshopt_compression extension. Note that loader support for this extension is not yet widely available, and by default gltfpack continues to use EXT_meshopt_compression when compression is requested.

Finally, JavaScript bindings have been updated to use ES modules instead of CommonJS modules, which may require adjustments to import paths. For the MeshoptDecoder module, a CommonJS variant meshopt_decoder.cjs is still provided for compatibility (but note a different file extension, required for correct handling by some bundlers).

... (truncated)

Commits
  • b228728 js: Update version for patch release 1.1.1
  • 6e06c61 js: Fix a narrow race condition when using useWorkers(0)
  • fc4230f js: Fix MeshoptSimplifier.compactMesh behavior for Uint16Array inputs
  • 32b15e0 Merge pull request #1043 from zeux/wasm-xor
  • 6c2d60c js: Update MeshoptClusterizer Wasm binary
  • 90f6805 js: Fix absent MeshoptSimplifier.generatePositionRemap TS binding
  • 7323d5c js: Improve assertion validation in MeshoptEncoder
  • d7aad3f js: Fix MeshoptSimplifier.simplifyPoints without vertex_colors
  • 17adadb js: Fix MeshoptSimplifier.simplifyPoints called without color_weight
  • 426ba0b allocator: Check function pointers in meshopt_setAllocator
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [meshoptimizer](https://github.com/zeux/meshoptimizer) from 0.22.0 to 1.1.1.
- [Release notes](https://github.com/zeux/meshoptimizer/releases)
- [Commits](zeux/meshoptimizer@v0.22...v1.1.1)

---
updated-dependencies:
- dependency-name: meshoptimizer
  dependency-version: 1.1.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jun 4, 2026
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants