Planet DOTS: Earth in its swarm of satellites, Europe turning from day to night, a coral reef in the Maldives, and back out to Earth

In active developmentUpdated

Planet DOTS V2

From deep space to underwater reefs, in a browser tab.

Millions of starships and 16,500+ real satellites around an Earth built from open data. It runs on a custom renderer written directly on WebGPU, with a WebGL2 fallback, rather than on Unity or any other game engine. Nothing to install.

Runs in a browser with WebGPU or WebGL2. Phones get touch controls and a lighter, adaptive render tier; a desktop GPU still shows the most detail.

At a glance

  • 8M

    starships on exact orbits, held above 24 fps

  • 16,500+

    real satellites, placed where they are now

  • 80×

    more ships on the GPU than on one CPU core

  • 33

    landmarks built from published dimensions

  • 100%

    open data, from NASA and NOAA to OpenStreetMap

  • 0

    game engines or rendering libraries

Ship counts from the built-in CPU vs GPU showdown, measured on an Apple M1 Max in Chrome.

The one-minute tour

With sound and on-screen captions. Every shot is the app running, captured frame by frame.

Planet DOTS trailer: Earth in its swarm of satellites, a dive through the clouds into the Alps and the Matterhorn, Europe from day to night, a montage of landmarks from Paris, San Francisco and New York to Rio, Sydney, Rome, Giza, Dubai and Machu Picchu, Central Park through the seasons, a dive into a coral reef in the Maldives, and a pull back into deep space to the black hole M87*.

Pick a place to start

Each card opens the app right there.

Open a place on your phone or desktop. The next view starts loading while you fly there.

Under the hood

Every feature, the architecture, the stack and measured performance

Everything it does

Orbits and satellites

  • Millions of starships on exact Kepler orbits, solved every frame in WebGPU compute
  • Orbit families to explore one at a time: LEO, polar, sun-synchronous, MEO, GEO, Molniya, GTO
  • 16,500+ real satellites from the CelesTrak catalogue, placed where they are now
  • Follow any ship or satellite with its orbit drawn
  • CPU vs GPU showdown: JavaScript on one core, Rust WebAssembly SIMD on every core, then the GPU

The Earth

  • Streamed terrain and aerial imagery, national orthophotos where they exist
  • Physically based atmosphere, sunsets and twilight
  • Volumetric clouds from the NOAA GFS forecast and satellite cloud maps
  • Cloud bases at the condensation level over the ground, fog where the forecast has it, hill fog on the peaks
  • Seasons that follow the date: snow cover, autumn colour, bare winter trees, snow on roofs
  • Real sea state and surf from GFS-Wave, tides, sea ice
  • Rock and snow on steep mountain faces
  • Aurora from NOAA's OVATION forecast
  • Night side: NASA Black Marble city lights, street lamps, lit windows by local time, moonlight and moon shadows

Cities and landmarks

  • 3D buildings from OpenStreetMap, styled by region: roofs, eaves, gables and dormers from Kyoto to London
  • Physically based materials: glass glints, stone and brick stay matte
  • 33 landmarks rebuilt from published dimensions and photographs, from Christ the Redeemer to the Forbidden City
  • Bridge decks worldwide, plus the Golden Gate and Sydney Harbour Bridge
  • Trees and plants by climate zone, with seasons, orchards, vineyards and hedgerows

Beneath the surface

  • Dive to real sea-floor depth
  • 3D coral reefs where the data says reef
  • Reef fish at their real sizes, rays, sharks, turtles and whales
  • Water optics, caustics and light shafts

Traffic

  • Real airliner traffic replayed from an open ADSB.lol snapshot
  • Simulated shipping, road and rail traffic

Sun, planets and sky

  • A 3D Sun from NOAA and NASA data: loops, flares and eruptions in motion
  • Watch the Sun in white light, H-alpha or extreme ultraviolet
  • Planets and moons with surfaces from spacecraft maps, real shapes, rings and atmospheres
  • The Moon at its real position and phase
  • 9,096 stars at their real positions, and the Milky Way

Deep space

  • Ray-traced black holes: Sagittarius A*, M87*, Gaia BH1 and BH3
  • Galaxies as 3D volumes at their real positions: Andromeda, M33, M51, M81, M87, the Sombrero, the Magellanic Clouds
  • About 100 Local Group dwarf galaxies, and the Milky Way seen from outside

Getting around

  • Explore: 58 places framed against real photographs
  • A guided tour, search, time warp, and share links to any view
  • WebGPU with a WebGL2 fallback; a touch interface and lighter render tier on phones

How a frame comes together

  1. 01

    Open data

    Orbits, weather, waves and tides ship with the build; terrain, imagery and buildings stream as tiles.

  2. 02

    Web Workers

    Decode and mesh off the main thread: vector tiles, 3D Tiles + Draco, Rust → WASM SIMD.

  3. 03

    GPU compute

    WGSL kernels solve every orbit each frame, cull, and write indirect draw lists.

  4. 04

    Rendering

    HDR, a physically based sky, FFT ocean and volumetric clouds. WebGL2 as the fallback.

Built with

  • WebGPU
  • WGSL compute shaders
  • WebGL2 fallback
  • TypeScript
  • Rust → WASM SIMD
  • Web Workers
  • SharedArrayBuffer
  • OGC 3D Tiles + Draco
  • Mapbox Vector Tiles
  • GPU culling + indirect draws

CPU vs GPU, measured

Most ships held above 24 fps on an Apple M1 Max in Chrome
PathShips
JavaScript, one core100,000
Rust → WASM SIMD, 5 workers4,000,000 (its cap)
WebGPU compute8,000,000

Most ships held above 24 fps, Apple M1 Max in Chrome. The app runs the same race on your machine.

Worth knowing

  • Orbit trails keep no history: each trail vertex re-solves Kepler's equation a step back along the orbit.
  • The Rust kernel propagates four ships per 128-bit SIMD lane, spread across worker threads.
  • Weather, waves, tides and orbits ship as snapshots with the build. The only live requests are map tiles, fetched as you fly close.
  • No Unity or other engine: the renderer is written directly on WebGPU, with a WebGL2 fallback. The only runtime libraries are draco3d (mesh decompression) and earcut (polygon triangulation).
  • On phones, measured frame times adjust resolution and effects; the next Explore destination begins loading during the flight.

In active development

Latest update:

What's new

  • Smoother flights

    Flights between Explore places ease in and out, and the light shifts gradually on the way instead of jumping at take-off.

  • Flights on phones

    Flights play by default on every device. If a phone measurably struggles, a one-time prompt offers a fade to black instead.

  • A better phone view

    Sharper presentation and adaptive detail keep the scene readable as the camera moves and settles.

  • Places load on the way

    Explore starts fetching the next destination during the flight, then brings in imagery and buildings as they arrive.

  • Reefs on slower links

    Nearby reef tiles get priority during a phone arrival; temporary tile failures are retried.

  • Phone controls

    One menu, larger touch targets and a clear way back make it easier to explore in an in-app browser.

  • Follow a satellite

    The camera stays aligned with the satellite's rendered orbit, and real satellites draw their detailed 3D models in every browser, phones included.

  • From first paint

    A loading state appears before the globe's first frame and clears when the scene is ready.

Coming next

  • A living world

    More wildlife and weather that changes over time. In development.

Further out: More of the Solar System, up close · Phones to high-end desktops, tuned for each. Plans, not promises: the order may change.

See it run on your own machine

Frame rate, ship counts and GPU timings in the app are measured live, on your hardware.

Launch Planet DOTS

Who built it

I'm Scott Robertson. Planet DOTS is my own project, a web-native remake of my original Unity DOTS Planet demo. I've spent 18+ years in real-time 3D, XR and autonomy, including five at Lockheed Martin Skunk Works.

My experience Get in touch Resume (PDF)

Built on open data

NASA · NOAA · CelesTrak · ADSB.lol · Copernicus · EOX · GEBCO · Open Waters · DGFI-TUM · ESO · Event Horizon Telescope · Pan-STARRS · Solar System Scope · OpenStreetMap · Mapterhorn · OpenFreeMap · swisstopo · IGN · PNOA · PDOK · GSI Japan · NSW Spatial Services · USGS

Full attributions and licences are in the app's About panel. The privacy page lists the services its map layers contact.