google / google/draco

Rust implementation

Open
#1,136 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C++
Stars
7.5k
Forks
1.1k
Avg merge
47m
Merged PRs (30d)
1

Description

Hello everyone! It took me about a month of vibe coding in my spare time to create the Draco library entirely in Rust. It wasn't easy and required a lot of patience, but I'm finally happy to share the code with everyone:
https://github.com/Filyus/draco-rust

The current Rust crates live here:
- https://github.com/Filyus/draco-rust/tree/main/crates/draco-core
- https://github.com/Filyus/draco-rust/tree/main/crates/draco-io
- https://github.com/Filyus/draco-rust/tree/main/crates/draco-gltf

I also wrote WASM modules and a sample web application for conversion:
https://github.com/Filyus/draco-rust/tree/main/web

Current optimized WASM size comparison:

| Module | Raw | gzip | What is included |
|---|---:|---:|---|
| `gltf_reader_bg.wasm` | 228.8 KiB | 94.2 KiB | Reads `.gltf`/`.glb` files, parses glTF JSON with `serde_json`, handles GLB containers, and decodes `KHR_draco_mesh_compression` payloads. |
| Google `draco_decoder.wasm` 1.5.7 | 279.2 KiB | 86.5 KiB | General Draco decoder for raw Draco buffers. No glTF JSON or GLB container handling. |
| Google `draco_decoder_gltf.wasm` 1.5.7 | 188.1 KiB | 62.0 KiB | Smaller Draco decoder subset for glTF `KHR_draco_mesh_compression` payloads. It decodes the extension's bufferView data but does not read `.gltf`/`.glb` files. |

`draco-core`, `draco-io`, and `draco-gltf` are now published on crates.io, with CI, fuzzing, docs.rs builds, package verification, and GitHub release tags in place.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.