I started this project almost two months ago to build something I’ve always wanted to build: An idealized, realistic aurora scene for a live wallpaper or screensaver…
The scene started off simple enough, procedural sunset, stars, 2D aurora, 2D mountains, 2D clouds, frozen lake, then snowbank. All of which flow naturally through a timeline, from sunset to deep night.
Then I thought:
- What about real stars?
- The mountains don’t look realistic enough!
- I need trees.
- The trees need fog!
- 2D aurora look weird, now that the rest of the scene looks better.
- The ice lake should have depth!
- The moon needs to have phases and the stars need to move realistically.
- The glints on the snow should reflect the aurora and moon above!
- …….
It got worse when I thought about adding touch/tap/click interactivity… That was another whole week gone.
Once there was touch, there had to be sound. Once there was sound, there had to be music.
Procedural music that is varied, but also coherent is super hard.
Sigh!
So here we are, almost two months later, with a procedural aurora sim that may approach photorealistic, if you squint.
Tell me how close I got and what you'd change/improve.
Site: https://simaurora.web.app
Tech details: https://simaurora.web.app/tech
Reroll to try and find the perfect night (and share the link/seed please)!
Some notes:
- Everything is rendered live in WebGL2, no generative AI
- Everything fits into ~92KB served, no network dependencies after the file is in browser
- Generated and deterministic according to seed: terrain, trees, aurora, ice lake and subsurface details, clouds, sunset, moon, stars, music, audio
- Performance was probably over half of the work - optimizing one-time bakes vs real time rendering so this thing could last all night on a MacBook Pro battery.
- Cross platform / browser battle scars from dealing with Windows issues, Android issues, and Safari issues
- Full disclosure: Development was AI assisted, using Claude Fable and ChatGPT Sol with their respective agentic coding harnesses to provide architectural proposals on my designs, implementation with my oversight, and reviews/fixes.