Skip to main content

stratum-map

GPU-first WebGPU engine for geospatial visualization: OpenLayers-compatible transforms, point splats, GPU picking, bitmap/MSDF labels, and label decluttering.

Capabilities

WebGPU point rendering

Instanced triangle quads, compact style table, column-major map→clip matrix compatible with OpenLayers frame math.

GPU picking

Optional offscreen id pass; decode feature id at a canvas pixel without scanning all vertices on CPU.

Chunked streaming geometry

Per-chunk GPU slots, LRU-style eviction, and bridges from worker chunks to partial buffer uploads.

MSDF labels

Distance-field atlases with predictable edge softness; optional bitmap atlas path for prototyping.

Label decluttering

Screen-space collision resolution with priorities, zoom gates, and optional debug rects.

OpenLayers compatible

Same projection and canvas sizing conventions; integrate as an overlay canvas driven from `postrender`.

Worker ingest pipelines

GeoJSON and bbox ingest workers emit TypedArray-ready chunks for the main thread and GPU.

TypedArray-first design

Dense geometry buffers end-to-end; avoid per-frame object graphs on the render path.

Benchmarks

Playwright-driven pan/zoom scenarios ship in-repo. Run npm run verify:pan-zoom after npm run build:bench. Numbers are hardware-specific — treat them as regression guards, not marketing absolutes.

Benchmark notes

Architecture

Workers normalize inputs to TypedArrays; the feature store indexes metadata; WebGPU pipelines own draw and pick passes; text is an optional layered pass with its own atlas contract.

Read architecture