About this site
Each painting opens as a place you can enter and fly over freely. Its light and dark are read as land, so every ridge and hollow is the paint itself. The sky over it is real and the weather where you are.
It runs in an ordinary web browser, with nothing to install or buy, the same for anyone with a link.
Thanks and credits
This is built on the work of many people who wrote the tools, did the research and recorded the sounds, and shared them. Each is listed here, with a link to their own work.
The engine and the picture 8
What draws the paintings as places you can fly through.
- three.js (opens in a new tab) r185 The 3D library the Stage and the games’ table are built on. WebGPU where the machine has it, WebGL 2 otherwise. three.js authors (Ricardo Cabello and contributors) MIT
- WebGPU and WGSL (opens in a new tab) The modern graphics API the Stage, the weather and the games draw with by default. W3C GPU for the Web group Open standard
- WebGL 2 (opens in a new tab) The older graphics API, used where a browser has no WebGPU. Khronos Group Open standard
- naga (opens in a new tab) v30 Translates the Stage’s GLSL shaders into WGSL, so both renderers draw the same picture. A build tool; not sent to visitors. gfx-rs / wgpu project MIT or Apache-2.0
- AMD FidelityFX Super Resolution 1 (EASU) (opens in a new tab) Sharpens the picture back up when a slower machine draws it smaller than the screen. AMD MIT
- ACES filmic curve (Narkowicz fit) (opens in a new tab) How bright light is folded onto the screen without blowing out. Krzysztof Narkowicz, 2016 Article
- Interleaved gradient noise (opens in a new tab) A fine, even dither for marching through the air, so it never bands. Jorge Jimenez, SIGGRAPH 2014 Paper
- Halton sequence (opens in a new tab) The tiny shifts each frame that smooth edges over time. J. H. Halton, 1964 Mathematics
Pictures, tiles and colour 16
How each painting gets from the scan to the screen without losing its paint.
- AVIF (opens in a new tab) Every deep-zoom tile, at 10-bit 4:4:4, so the land read from the paint never terraces. Alliance for Open Media Royalty-free standard
- libavif (avifenc) (opens in a new tab) The one encoder that makes the tiles, always from the lossless master. Alliance for Open Media BSD-2-Clause
- Deep Zoom (DZI) (opens in a new tab) The layout of each painting’s tile pyramid, from the whole down to the brushstroke. Microsoft Open format
- libvips (opens in a new tab) Cuts the originals into pyramids and the baked sizes. John Cupitt and contributors LGPL-2.1
- pyvips (opens in a new tab) Drives libvips from the studio’s bake scripts. John Cupitt and contributors MIT
- Pillow (opens in a new tab) Reads scans and converts their colour profiles to sRGB in the bakes. Jeffrey A. Clark and contributors MIT-CMU
- Little CMS (opens in a new tab) The colour engine under those profile conversions. Marti Maria MIT
- sRGB.icc (icc-profiles-free) (opens in a new tab) The target profile when a scan arrives in another colour space. Kai-Uwe Behrmann, Marti Maria and others Zlib
- NumPy (opens in a new tab) The arithmetic in the studio’s bake scripts. NumPy developers BSD-3-Clause
- ImageMagick (opens in a new tab) Makes thumbnails and converts colour on the server, where it is installed. ImageMagick Studio ImageMagick License
- PHP GD (opens in a new tab) Makes thumbnails where ImageMagick is not there. PHP Group See source
- ThumbHash (opens in a new tab) The soft blur a picture shows while it loads. Evan Wallace MIT
- FFmpeg (opens in a new tab) Makes the web versions and posters of videos. FFmpeg developers LGPL / GPL
- PDF.js (opens in a new tab) 3.11.174 Shows publications and catalogues in the page. Mozilla Apache-2.0
- mp4-muxer (opens in a new tab) 5.2.2 Packs the films you render from the Stage into an MP4. Vanilagy MIT
- WebCodecs (opens in a new tab) The browser’s own video and picture encoders: films, and the dynamic desktop (its HEIF file is written by hand). W3C Open standard
The sky: sun, moon, stars and air 10
The sky is where it really is, for the hour and the place you are in.
- Astronomical Algorithms (opens in a new tab) Where the sun and the moon are, and the moon’s phase (js/ephem.js). Jean Meeus, 1991 Book
- Atmospheric refraction (opens in a new tab) The sun and moon lifted a little at the horizon, as they really are (Bennett’s formula in Sæmundsson’s form). G. G. Bennett 1982; Th. Sæmundsson 1986 Formula
- A Scalable and Production Ready Sky and Atmosphere Rendering Technique (opens in a new tab) The colour of the sky and of the air between you and the land. Sébastien Hillaire, EGSR 2020 Paper
- UnrealEngineSkyAtmosphere (opens in a new tab) The reference code for that sky; its numbers checked the site’s. Epic Games (Sébastien Hillaire) MIT
- Precomputed Atmospheric Scattering (opens in a new tab) How the light’s passage through the air is stored in small tables. Eric Bruneton and Fabrice Neyret, 2008 Paper (code BSD-3-Clause)
- A Practical Analytic Model for Daylight (opens in a new tab) The simpler sky the smallest devices get. A. J. Preetham, Peter Shirley, Brian Smits, 1999 Paper
- Physically Based and Unified Volumetric Rendering in Frostbite (opens in a new tab) The air in front of you, marched on a grid. Sébastien Hillaire, SIGGRAPH 2015 Talk
- CGI Moon Kit (LRO LROC WAC colour) (opens in a new tab) The moon’s real face. NASA’s Scientific Visualization Studio Public domain
- IAU Working Group on Star Names (opens in a new tab) The 285 named stars, to magnitude 4.6. International Astronomical Union See source
- IANA time zone database (opens in a new tab) A rough idea of where you are, read from your clock’s time zone, never from your location. IANA Public domain
Weather and clouds 9
The weather is the weather where you are, now.
- Open-Meteo (opens in a new tab) Your local weather, asked by the server for a place rounded to half a degree. Open-Meteo Data CC BY 4.0
- The Real-time Volumetric Cloudscapes of Horizon Zero Dawn (Nubis) (opens in a new tab) Clouds shaped from Perlin and Worley noise: round heads, not fog. Andrew Schneider and Nathan Vos, Guerrilla, 2015 Talk
- Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite (opens in a new tab) How light steps through a cloud without its edges going dark. Sébastien Hillaire, SIGGRAPH 2016 Course notes
- Oz: The Great and Volumetric (opens in a new tab) Light scattered many times inside a cloud, in three octaves. Magnus Wrenninge, Christopher Kulla, Viktor Lundqvist, 2013 Talk
- three-geospatial (three-clouds) (opens in a new tab) Ideas for how dense a heap is toward its top, and for lighting clouds from the sky itself. No code copied. Takram MIT
- Henyey–Greenstein phase function (opens in a new tab) The silver lining toward the sun. L. G. Henyey and J. L. Greenstein, 1941 Paper
- A Cellular Texture Basis Function (opens in a new tab) Worley noise: the cells that carve the clouds. Steven Worley, 1996 Paper
- Improving Noise (opens in a new tab) Perlin noise: the soft body of the clouds. Ken Perlin, 2002 Paper
- Beer–Lambert law (opens in a new tab) How light fades through cloud, haze and rain. August Beer, Johann Heinrich Lambert Physics
Sound 14
The ambient sound is real places, recorded and given away by the people who recorded them. Off until you turn it on.
- Web Audio API (opens in a new tab) Plays the ambient sound, and makes the games’ card ticks and chords on the spot. W3C Open standard
- Freesound (opens in a new tab) Where every field recording here comes from. Music Technology Group, Universitat Pompeu Fabra Per sound
- Ambience, leaves, wind, soft rain (Apeldoorn, Netherlands) (opens in a new tab) Rain: a field recording, cut into one-minute pieces that cross-fade. deleted_user_3544904 CC0
- Thunder and rain in Veracruz during the night (opens in a new tab) Rain: a field recording, cut into one-minute pieces that cross-fade. felix.blume CC0
- Rain and thunder at night (opens in a new tab) Rain: a field recording, cut into one-minute pieces that cross-fade. darth_oezzi CC0
- Exterior night, Mindelo beach, waves (opens in a new tab) Sea: a field recording, cut into one-minute pieces that cross-fade. pblzr CC0
- West Haven waves (opens in a new tab) Sea: a field recording, cut into one-minute pieces that cross-fade. hotemogf CC0
- Night in the countryside in Brazil: toads, frogs, crickets (opens in a new tab) Night: a field recording, cut into one-minute pieces that cross-fade. felix.blume CC0
- Dawn chorus (opens in a new tab) Dawn: a field recording, cut into one-minute pieces that cross-fade. inchadney CC0
- Wind and crows (opens in a new tab) Wind: a field recording, cut into one-minute pieces that cross-fade. cribbler CC0
- Desert binaural wind (opens in a new tab) Wind: a field recording, cut into one-minute pieces that cross-fade. Benbojangles CC0
- Interior of a car driving a highway (opens in a new tab) Road: a field recording, cut into one-minute pieces that cross-fade. leonelmail CC0
- Local train from Porsgrunn to Skien (opens in a new tab) Road: a field recording, cut into one-minute pieces that cross-fade. LarsErikErtzgaardRingen CC0
- VN604 (opens in a new tab) Cabin: a field recording, cut into one-minute pieces that cross-fade. SieuAmThanh CC0
Games 7
Solitaire, Mahjong, Jigsaw and Pairs, dealt on the artworks.
- FreeCell deal numbers (opens in a new tab) Deal #N here is deal #N everywhere: Microsoft’s own shuffle. Microsoft; recipe on Rosetta Code See source
- Jigsaw generator (opens in a new tab) The shape of a classic jigsaw tab: shoulder, neck and round head, jittered. Draradech MIT
- Classic court cards (opens in a new tab) The traditional kings, queens and jacks. Adrian Kennard CC0
- @letele/playing-cards (opens in a new tab) 0.1.0 Where those court cards were taken from, as SVG. letele CC0-1.0
- Poly Haven wood textures (opens in a new tab) The photographed wooden tables: maple, oaks, olive, rosewood, okoume, teak, cherry, pine and more. Poly Haven CC0
- mulberry32 (opens in a new tab) The seeded randomness: one number, one deal, on every device. Tommy Ettinger Public domain
- Fisher–Yates shuffle (opens in a new tab) A fair shuffle of the deck. Ronald Fisher and Frank Yates, 1938 Mathematics
The site, the server and the back office 20
Plain PHP, one stylesheet, no framework.
- PHP (opens in a new tab) 8.2 Builds every page. The PHP Group PHP License 3.01
- Apache HTTP Server (opens in a new tab) Serves the site; its .htaccess rules guard what is private. Apache Software Foundation Apache-2.0
- SQLite (opens in a new tab) The catalogue: works, editions, projects, writing, people. D. Richard Hipp and the SQLite team Public domain
- Composer (opens in a new tab) Installs the two PHP libraries below. Nils Adermann, Jordi Boggiano MIT
- HTML Purifier (opens in a new tab) 4.19.0 Cleans written text before it is shown. Edward Z. Yang LGPL-2.1-or-later
- PhpSpreadsheet (opens in a new tab) 1.30.4 Spreadsheets in and out of the back office. PHPOffice MIT
- ZipStream-PHP (opens in a new tab) 3.2.2 Writes the spreadsheet files (a PhpSpreadsheet part). Jonatan Männchen and contributors MIT
- PHPComplex (opens in a new tab) 3.0.2 Complex-number maths for spreadsheet formulas (a PhpSpreadsheet part). Mark Baker MIT
- PHPMatrix (opens in a new tab) 3.0.1 Matrix maths for spreadsheet formulas (a PhpSpreadsheet part). Mark Baker MIT
- composer/pcre (opens in a new tab) 3.3.2 Safer regular expressions (a PhpSpreadsheet part). Composer MIT
- PSR-16 Simple Cache (opens in a new tab) 3.0.0 A shared cache interface (a PhpSpreadsheet part). PHP-FIG MIT
- Quill (opens in a new tab) 2.0.3 The text editor in the back office. Slab and contributors BSD-3-Clause
- Docker (opens in a new tab) Runs the site on the studio’s own machines (php:8.2-apache). Docker, Inc. Apache-2.0
- IONOS (opens in a new tab) Hosts the live site. IONOS Service
- Git (opens in a new tab) Keeps every version of the code. Linus Torvalds and contributors GPL-2.0
- Playwright (opens in a new tab) Opens the site in headless browsers to check it after every change. Microsoft Apache-2.0
- Claude Code (opens in a new tab) Writes and tests code with Alex. Anthropic Service
- Stripe (opens in a new tab) Payments for prints and editions, when the shop is open. Stripe Service
- Google Analytics (opens in a new tab) Counts visits; never on Alex’s own machines. Google Service
- YouTube (privacy-enhanced embeds) (opens in a new tab) Plays the videos that live on YouTube. Google Service
Browser features 5
Built into the browser you are using.
- Web Workers (opens in a new tab) Tiles decode and the sky’s clock keeps time off the page’s own thread, so flying never stutters. WHATWG / W3C Open standard
- Service Worker (opens in a new tab) Keeps tiles you have seen, so a painting opens faster the second time. W3C Open standard
- Gamepad API (opens in a new tab) Fly with a game controller. W3C Open standard
- Screen Wake Lock (opens in a new tab) The screen stays awake while a painting moves. W3C Open standard
- View Transitions (opens in a new tab) Pages change in place, without a blink. W3C Open standard
Open standards for the catalogue 9
So museums, search engines and other sites can read the catalogue.
- IIIF Presentation API 3.0 (opens in a new tab) A manifest for each work, for museum viewers. IIIF Consortium CC BY 4.0
- Linked Art (opens in a new tab) The catalogue as linked data. Linked Art community CC BY 4.0
- Getty Art & Architecture Thesaurus (opens in a new tab) Shared words for kinds of work and material. Getty Research Institute ODC-By 1.0
- RightsStatements.org (opens in a new tab) A plain statement of each work’s copyright. RightsStatements.org CC0
- Schema.org (opens in a new tab) Describes the artist, works and pages to search engines. Schema.org CC BY-SA 3.0
- oEmbed (opens in a new tab) A shared link to a work shows its picture. oEmbed Open standard
- IndexNow (opens in a new tab) Tells search engines when a page changes. IndexNow Open standard
- Sitemaps (opens in a new tab) The list of every public page. sitemaps.org CC BY-SA 2.5
- llms.txt (opens in a new tab) The site described for AI agents. Jeremy Howard and contributors Open proposal
Versions
Each version, and when it was first published here.
- 0.92 about The games (/play) and the site described to search engines. Most of 0.92 since then (the weather, the sky round, the new header) is not live yet.
- 0.9 Uploaded in full on 30 September, 16:48 to 17:00: the planet and the other worlds, the demo mode with no shop, the redone phone layout.
- 0.5 about The Stage goes live: the paintings as deep-zoom landscapes, replacing the earlier site. Its file set was fixed as 0.5 on 11 September; small updates followed on 22 and 28 September.
- Earlier The site before September 2026. It had no version number on record.