Nimbus
A GPU-accelerated vector map renderer built on wgpu (WebGPU). Nimbus fetches Mapbox Vector Tiles from Woosmap's tile API, decodes the protobuf-based MVT format, and renders polygons, lines, points, icons, and text labels using GPU shaders.
Features
- WebGPU rendering via wgpu — runs on Metal, Vulkan, DX12, and WebGPU in the browser
- Mapbox style JSON support with fill, line, symbol, and background layer types
- Expression engine for data-driven styling (interpolate, step, match, case, let/var, arithmetic, string ops)
- Google Maps styler compatibility for HSL-based color transforms and POI visibility control
- SDF text rendering with PBF glyph atlases, text wrapping, variable anchors, and halo effects
- Icon/sprite rendering with SDF + RGBA dual-mode fragment shader
- Symbol collision detection with fade-in/fade-out animations
- Globe projection at low zoom levels (toggle with
Gkey) - Raster tile layer support (satellite imagery as textured quads)
- Dual-target: native desktop (winit) and WASM (web workers for tile decode/tessellation)
- iOS support via UniFFI Swift bindings and xcframework
- Tile-relative Mercator encoding for f32 GPU precision at high zoom levels
Quick Start
This opens a window displaying a map centered on Montpellier, France. Use the mouse to pan and scroll to zoom. Press G to toggle globe mode.
Build Targets
| Command | Description |
|---|---|
make build |
Debug build |
make run |
Build and run the desktop app |
make test |
Run all tests |
make wasm |
Build WASM package (release, SIMD128) |
make xcframework |
Build iOS xcframework + Swift bindings |
make doc |
Build rustdoc |
make doc-serve |
Serve this documentation site locally |
See Getting Started for prerequisites and detailed build instructions.