Skip to content

@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/gltf for KHR_draco_mesh_compression and EXT_meshopt_compression

Installation

bash
npm install @web-engine-dev/geometry-compression
# or
pnpm add @web-engine-dev/geometry-compression

Quick 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

CodecCompression RatioDecode SpeedBest For
Draco90-95% reductionModerateOffline-compressed assets, maximum compression
Meshopt60-80% reductionVery fastRuntime 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 decoder
  • meshoptimizer — Meshopt WASM decoder

Proprietary software. All rights reserved.