An open API service indexing awesome lists of open source software.

https://github.com/yzsolt/meshopt-rs

Pure Rust implementation of the meshoptimizer library
https://github.com/yzsolt/meshopt-rs

Last synced: about 1 year ago
JSON representation

Pure Rust implementation of the meshoptimizer library

Awesome Lists containing this project

README

          

# meshopt-rs

[![Crates.io](https://img.shields.io/crates/v/meshopt-rs.svg?label=meshopt-rs)](https://crates.io/crates/meshopt-rs)
[![Docs.rs](https://docs.rs/meshopt-rs/badge.svg)](https://docs.rs/meshopt-rs)
[![Build Status](https://github.com/yzsolt/meshopt-rs/workflows/continuous-integration/badge.svg)](https://github.com/yzsolt/meshopt-rs/actions)

Pure Rust implementation of the awesome [meshoptimizer](https://github.com/zeux/meshoptimizer) library.

If you want to use the original C++ implementation from Rust, check out the [meshopt](https://crates.io/crates/meshopt) crate.

## Features

`meshoptimizer` v0.15 feature level is the current support target. Planned but currently missing features:
- [SIMD support](https://github.com/yzsolt/meshopt-rs/issues/1)
- [WASM support](https://github.com/yzsolt/meshopt-rs/issues/2)

Experimental features (hidden behind `MESHOPTIMIZER_EXPERIMENTAL` in the original implementation) can be enabled with the `experimental` Cargo feature:

```toml
[dependencies]
meshopt-rs = { version = "0.1", features = ["experimental"] }
```

## Performance

Depends on the algorithm: some are in the same ballpark as the original, most are slightly (10-20%) and a few are much (50-100%) slower than the original implementation. Only a small amount of performance work has been done so far. Ideally all algorithms should reach at least 90-95% of the original implementation's performance.

Also note that SIMD support (utilized by vertex buffer decoding/filtering) is [currently missing](https://github.com/yzsolt/meshopt-rs/issues/1).

## Contributing

`meshopt-rs` is licensed under MIT, just like `meshoptimizer`. Contributions are welcome!

Since this is a parallel implementation of an existing and actively developed library, the original implementation is followed as closely as possible: similar naming, documentation and code structure; to help porting new features and bug fixes in the future.