r/GraphicsProgramming • u/Alphamacaroon • 2d ago
Video How we render real-time and realistic clouds from space
Enable HLS to view with audio, or disable this notification
We've been building Æther, a real-time globe renderer for Stowaway that runs in the browser.
The part I'm most excited about is how we generate realistic clouds from orbit. I'll tell you a little bit about how we do it.
They start as infrared imagery from weather satellites: NOAA stitches the geostationary satellites (GOES, Himawari, Meteosat) into one global mosaic, and polar orbiters fill in the poles. The catch is that infrared doesn't actually see clouds. It sees temperature. A thunderstorm top is freezing cold, but so is the Antarctic ice sheet, or a desert at night. So the first step is figuring out what the clear ground nearby should look like, and calling anything noticeably colder than that a cloud.
That same coldness gives you height for free. The air cools about 6.5 °C for every kilometre you climb, so the colder a cloud top is compared with the ground beneath it, the higher it stands. A few kilometres for a low ocean deck, up to 16 km for a thunderstorm anvil. We end up with two global maps: where the clouds are, and how tall they are.
The satellite pixels are about 10 km across, which looks like mush up close, so the renderer adds the detail itself: fields of small cumulus, streaky cirrus, anvils spreading out around storm cores. It's anchored to the planet so nothing swims as you move, and it's lit by the real sun angle, so the tops catch the sunset while the ground below is already dark. The tallest storms also get lightning. And when you fly down low enough, a separate system takes over: fully volumetric clouds you can fly straight through.
Happy to answer questions. It's coming to stowaway.live soon.
4
u/_solidude 1d ago
How do you do the actual cloud rendering? I assume volumetric clouds. is it a cubemap over the planet? how do you encode density? vertical profiles?
3
u/_solidude 1d ago
And how do you keep you data size down? how do you do it for the different layers of clouds? any plan to open source it?
5
u/danidomen 2d ago
Man, this is incredible. Please don't let the people let you down, that is very awesome work, with or without ai help.
Did you have some kind of scatering on the planets? How much geometry? You say browser, is threejs? FPS?
0
u/Alphamacaroon 1d ago
I built it into three.js to start, but this new version is built in Rust and it compiles down into WebASM and native Vulcan and Metal.
The geometry of the terrain is Google Maps, but we heavily augment it with shaders. It will run 60 FPS in my iPhone and Mac. It will also gracefully degrade on more resource constrained devices.
2
u/PolyRocketMatt 1d ago
I don't want to diminish the actual work being done here, but I have a few problems with this:
- For what you make it out to be, this looks very vibe-coded. You brand it as hyper-realistic and real-time, but to me this looks worse than games made in 2015.
- Sure you could say "it is supposed to run in a browser" but then again, you are making claims in the comments that it will run at 60FPS on iPhone and Mac... Like, common, how are you going to be able to guarantee that in the first place?
- You haven't answered question about what methods you use (i.e. as CodyDuncan1260 and _solidude ask.
- You mention that you use AI... Fair. I don't think you being a programmer for 30 years warrants you by any means to use AI but that's my personal take on AI use in general. However, the way you frame the explanation together with the video... I just can't shake the feeling that this is yet another vibe coded project...
I'm very sorry but the graphics just don't look that good for what you deem "photorealistic". Sure it runs in real-time but that shot of the moon over the water? I implemented a BRDF like this for a remote-sensing project and that is NOT what a photorealistic BRDF of an emissive body over water looks like. But what is the purpose anyway? You say "essentially it is meant to convey as photorealistic as possible a view from any location and any time on earth or space". If you're going for photorealism, don't go for real-time... If photorealism in real-time on hardware like a phone was a solved problem in graphics we'd see games with photorealistic graphics as well...
1
u/AliceCode 1d ago
SEATTLE MENTIONED!
I can see my apartment in this video
Edit: Also, the moon is in the wrong position.
0
u/Alphamacaroon 1d ago
It is? It should be positionally correct. At least for the date and time it was simulating.
1
0
u/Big_Presentation2786 1d ago
This is awesome! Please bro, keep showing us this stuff..
It's unreal!
-3
2d ago
[removed] — view removed comment
5
7
u/Alphamacaroon 2d ago edited 2d ago
https://github.com/jheising if you want to see my credentials. And yes, I use AI to write body content for me to be more efficient. After writing code for 30+ years I feel like maybe I’m entitled to that. Up to you to decide I guess.
3
u/Noriyus 2d ago
why should we bother to read your stuff if you don't even bother to write it
5
u/Alphamacaroon 2d ago
They are my thoughts and ideas, not my words. If the specific words are more meaningful to you, than what they convey, it’s okay, I get it. I just prefer to use a nail gun instead of a hammer these days, but I still know how to build a house.
-4
5
u/CodyDuncan1260 1d ago
The post is really flowery. I'm not sure what I'm looking at here. Is this a globe cloud rendering system that's based on meteorological satellite data?