Skip to content

hypatia-earth/zero

Zero - An Interactive 4D Weather Globe driven by WebGPU

Browser-based weather visualization rendering ECMWF forecast data.

zero.hypatia-202603071400UTC-202603082100UTC-3

Live Demo: zero.hypatia.earth Mirror: hypatia-earth.github.io/zero

Zero backend. Zero servers. Zero cost.

Zero visualizes professional weather hazards for climate adaptation:

  • Wet-bulb temperature - actual heat survivability limits in humid conditions (planned)
  • Wind - animated flow lines showing speed and direction
  • Pressure - isobar contours revealing storm systems
  • Precipitation - rain, snow, freezing rain with wind-advected particle animation

Runs entirely in your browser. No backend, no login, no tracking.

As climate extremes become more frequent, understanding forecast hazards becomes survival literacy. Zero makes professional ECMWF IFS data accessible without commercial infrastructure - forkable, self-hostable, resilient.

This is architectural independence: the tool works offline once loaded, can be hosted by communities, and doesn't depend on commercial service viability.

Changelog

2026-04-22

  • Adaptive parallel downloads - queue probes for the optimal number of concurrent network fetches, finding the sweet spot between bandwidth saturation and connection overhead. Perf panel pool X/Y shows live slow-task count. Min/Max download options configurable
  • Faster initial load - bootstrap now fetches priority timesteps in parallel (up to Min Downloads, default 4) instead of sequentially; in-flight fetches properly abort when you scrub time mid-load

2026-03-24

  • Precipitation param migration - replaced precipitation_type (WMO codes) with snowfall_water_equivalent for rain/snow discrimination. Snow fraction derived from snowfall/precipitation ratio with threshold selection (no shape blending)

2026-03-10

  • Cloud layer - data-driven cloud visualization using ECMWF cloud cover with sun-edge shading, Perlin noise texture, wind-driven drift, and limb darkening
  • Hybrid param bindings - main surface pass now uses both storage buffers and textures for weather params, solving Chrome's 8-storage-buffer limit. Added texture infrastructure for niche layers (sea ice, ocean temp, wet bulb stubs)
  • renderScale-independent sizing - graticule lines, text labels, rain particles, and capture crop all stay consistent across 1x/2x/4x render scales via globeRadiusPx uniform and CSS-pixel-based metrics
  • Canvas alphaMode: opaque - skip compositor alpha blending for slight GPU perf gain
  • City label colors - 4 color presets (white/black/dark red/gold)
  • Graticule text - constant screen size at any zoom level

2026-03-08

  • Cities layer - MSDF text labels for cities >100K population on the globe, with LOD tiers, collision avoidance, and altitude-adaptive indicators
  • WESL migration - replaced custom shader concatenation with WESL, a pioneer language extending WGSL with a proper module system. Includes wgsl-edit for custom weather layers with syntax checking and highlighting

2026-03-01

  • Event archives - replay historical weather events offline via ?event= URL parameter. Vite plugin simulates S3 bucket responses for local archives. Discovery, gap-fill, and backward-sum fallback chains work with archived data
  • Precipitation crossfade - smooth interpolation of precipitation type between timesteps
  • Palette fix - temp-hypatia palette corrected: 10°C bands, 0°C at cyan/green border
  • Discovery fix - use reference_time from latest.json instead of current date, enabling correct navigation in archived events
  • Vite plugins extracted - cache headers, geonames proxy, om-archive, serve-public-modules moved to vite-plugins/

2026-02-27

  • MP4 capture - export weather animations as MP4 video with configurable bitrate, in addition to existing GIF export
  • Keyframe editor - animated capture mode with draggable timeline keyframes and text-based Flight Plan editor for precise camera path control

2026-02-22

  • GIF capture - record animated GIFs of the globe with configurable FPS, duration, palette modes (fast/precise/grayscale), and native DPR support. GPU readback pipeline ensures frame-accurate capture across browsers. Two-phase UI shows capture and processing progress inside the capture rect
  • Precipitation layer - rain, snow, freezing rain, sleet and ice pellets with advection-based interpolation: GFS wind fields drive ECMWF precipitation displacement for smooth temporal animation between hourly timesteps
  • Multi-model fusion - introduced NCEP GFS 0.25° as second data source alongside ECMWF IFS, enabling cross-model rendering at the shader level
  • Storage buffer packing - t0/t1 timestep data packed into single combined buffers per parameter, working within Chrome's 10 storage buffer limit

2026-02-19

  • Aurora render engine - declarative layers with runtime shader composition
  • Custom layers - user-defined layers with additional ECMWF parameters: clouds, precipitation
  • Unified palette system - shared palette texture with JSON configuration
  • Render downscale - option to improve mobile performance

2026-02-08

  • E2E test suite - 44 Playwright tests covering all active layers (earth, sun, grid, temp, wind, pressure). Screenshot tests with 0% tolerance for visual regression, pixel tests for color accuracy.

2026-02-04

  • Worker-based renderer - GPU operations moved to dedicated Web Worker via OffscreenCanvas. Eliminates main thread blocking during data loading, improving touch responsiveness on older mobile devices.

Data Attribution

Weather data provided by ECMWF (European Centre for Medium-Range Weather Forecasts) via the ECMWF Open Data initiative.

Data accessed through Open-Meteo's S3 mirror, hosted on AWS Open Data.

ECMWF data is made available under Creative Commons Attribution 4.0 International (CC BY 4.0). Zero is an independent project not affiliated with or endorsed by ECMWF.

Browser Requirements

  • Chrome/Edge 113+ (recommended)
  • Safari 18+
  • Firefox (WebGPU behind flag, experimental)

WebGPU support required. Mobile browsers work but performance varies.

Development

Built through human/AI collaboration:

  • Vision & architecture: first prototype in 2017, tech was not ready
  • Implementation: 2025, ~20,000 lines of TypeScript/WGSL entirely written by Claude Code

This is an experiment: can domain experts build production software by collaborating with AI? Zero answers that question.

# Clone and run
git clone https://github.com/hypatia-earth/zero.git
cd zero
npm install
npm run dev

# E2E tests (requires dev server running)
npm run test:e2e              # Run all 44 tests
npm run test:e2e:headed       # Visible browser
npm run test:e2e:ui           # Playwright UI with time-travel debugging

Credits

Performance

If the globe feels sluggish - especially on tablets or with wind and precipitation layers active - two settings in the options dialog help:

  • Frame rate limit - set to 30 fps. Gives the GPU twice the time per frame.
  • Downscale - set to 2×. Renders at half resolution, the globe looks slightly softer but interaction becomes much smoother.

Combined, these make even demanding layer combinations usable on mobile devices.

Pasted image 20260222125458

Known Limitations

  • Alpha software - expect rough edges
  • WebGPU only - won't work on older browsers
  • Chrome reload bug - repeated F5 can cause adapter loss; restart browser if screen goes blank (Chrome bug #469455157)
  • Bandwidth - first load ~100-500MB depending on exploration; Service Worker caches for instant subsequent visits
  • Forecast accuracy - displays ECMWF data but cannot guarantee correctness; consult official weather services for critical decisions

Not Competing With

Services like Windy.com and Weather.com excel at polished UX, multi-model comparison, social features, and mobile apps. Zero focuses on hazard assessment and architectural independence for climate adaptation contexts where infrastructure matters more than feature richness.

Different missions, both valuable.

License

MIT - see LICENSE

Contributing

See CONTRIBUTING.md


Disclaimer: Weather forecasts are probabilistic. Zero is provided "as is" without warranty. Not affiliated with or endorsed by ECMWF, Open-Meteo, or AWS.

About

Serverless weather globe rendering ECMWF forecasts in browser using WebGPU

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors