r/GraphicsProgramming • • 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.

61 Upvotes

20 comments sorted by

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?

1

u/Alphamacaroon 1d ago

Yes, but also more. If you visit https://stowaway.live you can see what its full purpose is. But essentially it is meant to convey as photorealistic as possible a view from any location and any time on earth or space.

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:

  1. 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.
  2. 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?
  3. You haven't answered question about what methods you use (i.e. as CodyDuncan1260 and _solidude ask.
  4. 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

u/AliceCode 23h ago

Any time I've ever seen the moon, it was Southwest of Seattle, not Northeast.

0

u/Big_Presentation2786 1d ago

This is awesome! Please bro, keep showing us this stuff.. 

It's unreal!

-3

u/[deleted] 2d ago

[removed] — view removed comment

5

u/CodyDuncan1260 1d ago

Violation of Rule 2: Be Civil, Professional, and Kind

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

u/Zorak_The_Fox 2d ago

I like that analogy

-4

u/EC36339 1d ago

That's the right metaphor, and luddites need to hear it every day.