himmelszelt

himmelszelt: German, "tent of the sky". The sky, pictured as a tent spread over the Earth. Poetic, 18th to 19th century: Schiller, Rückert, Uhland.

A family of composable libraries for rendering the sky in real time with WebGPU.

by Daniel Limberger · Last updated 6 October 2026

The goal is a sky that is correct for any place, date, and hour. Sun, Moon, and stars in their true positions, the Moon with its phase and libration, solar and lunar eclipses, and physically based atmospheric scattering, down to the refraction that lifts a low Sun and the aerial perspective that fades distant geometry into haze. Clouds follow later.

The same code precomputes what real-time rendering needs to stay fast: scattering look-up tables you can tune and recompute, and environment maps for image-based lighting that update as the Sun moves. Where a computed sky is not wanted, the classic image-based route stays open, with HDR sources and several projections. All of it is plain functions and compute-first WGSL, with no scene graph to adopt.

It started with a book. Götz Hoeppe's Why the Sky Is Blue (German original: Blau, die Farbe des Himmels, 1999) follows two and a half thousand years of asking why the sky looks the way it does, from myth to atmospheric physics. It pulled me into the subject, and it is a good reminder of how much of what we understand began with people looking up and refusing to let the question go.

Then came the work of Eric Bruneton and Fabrice Neyret on precomputed atmospheric scattering. It was less a template than a challenge: I wanted to understand it well enough to take it apart and build my own and incorporate it into a real-time visualizations.

Years later, three things came together. Maxime Heckel's On Rendering the Sky, Sunsets, and Planets from May 2026 builds atmospheric scattering up from raymarching to look-up tables in WebGL, with a widget for every step. It is excellent, and proof that all of this now belongs in the browser. Agentic coding, part of my daily work by now, made a port of this size feel within reach. And then I watched the solar eclipse of 12 August 2026, and that settled it.

So himmelszelt is the successor of osgHimmel, the C++ sky renderer behind my 2012 master's thesis Photorealistic Real-Time Rendering of Atmospheric Effects in Geovirtual 3D Environments, written in German, and the paper Single-Pass Rendering of Day and Night Sky Phenomena (videos: computed sky, texture mapped skies). It is not a port, though. Everything from back then is revisited, refined, tested, and explained here, one chapter at a time, and rebuilt compute-first for WebGPU, with what the field has learned since.

The best way into all of this is still the oldest one: go outside and look up.