@web-engine-dev/geometry-compression
Mesh geometry compression and decompression using Draco and Meshopt codecs compiled to WebAssembly. Reduces mesh download size by 80-95% with fast GPU-ready decompression.
Layer 8 · Content
Features
- Draco Decoder: Google Draco mesh decompression (positions, normals, UVs, indices)
- Meshopt Decoder: Mesh Optimizer codec for vertex/index buffer compression
- WASM Backends: Near-native decompression speed via WebAssembly
- Quantization Support: Decode quantized attributes with configurable precision
- Index Compression: Triangle strip and fan index encoding
- Attribute Interleaving: Decompress directly into interleaved GPU vertex buffers
- Streaming: Progressive decompression for LOD streaming
- glTF Integration: Used by
@web-engine-dev/gltfforKHR_draco_mesh_compressionandEXT_meshopt_compression
Installation
bash
npm install @web-engine-dev/geometry-compression
# or
pnpm add @web-engine-dev/geometry-compressionQuick Start
typescript
import { DracoDecoder, MeshoptDecoder } from '@web-engine-dev/geometry-compression';
// Initialize WASM decoders
const draco = await DracoDecoder.create();
const meshopt = await MeshoptDecoder.create();
// Decode Draco-compressed mesh
const mesh = draco.decode(compressedBuffer, {
attributes: {
POSITION: { type: 'float32', components: 3 },
NORMAL: { type: 'float32', components: 3 },
TEXCOORD_0: { type: 'float32', components: 2 },
},
});
// Decode Meshopt-compressed vertex buffer
const vertices = meshopt.decodeVertexBuffer(compressedVertices, vertexCount, vertexStride);Codec Comparison
| Codec | Compression Ratio | Decode Speed | Best For |
|---|---|---|---|
| Draco | 90-95% reduction | Moderate | Offline-compressed assets, maximum compression |
| Meshopt | 60-80% reduction | Very fast | Runtime compression, streaming, GPU-direct decode |
Use Cases
- glTF Loading: Decompress geometry from glTF/GLB files with Draco extension
- Asset Pipeline: Compress meshes at build time, decompress at load time
- LOD Streaming: Progressive mesh refinement with compressed delta buffers
- Network Transfer: Send compressed geometry over WebSocket/WebRTC
Dependencies
draco3dgltf— Google Draco WASM decodermeshoptimizer— Meshopt WASM decoder