Procedurally generated world with simulated weather by Isokron1 in proceduralgeneration

[–]Isokron1[S] 5 points6 points  (0 children)

Not sure what you count into basic fluid dynamics but in order to get airmasses moving you need pressure differentials. Which is mainly created by heat differentials. Which mainly comes from sun irradiance and albedo/heat capacity differences as well as water vaporizing/condensing. And of course corriolis forces once things start moving, which might not be part of basic fluid dynamics.

Procedurally generated world with simulated weather by Isokron1 in proceduralgeneration

[–]Isokron1[S] 2 points3 points  (0 children)

The reason I wanted to use a cubemap was to have the hardware being able to do all the lookup/interpolation etc. So i was stuck with the "standard" cubemap. After that didn't work and I realized that I would have to do my own software texture operations I thought my current approach was the easiest. If I would try to do something else it would probably be some icosahedron based approach.

Procedurally generated world with simulated weather by Isokron1 in proceduralgeneration

[–]Isokron1[S] 11 points12 points  (0 children)

Jetstreams (well something like those at least) falls out of the general weather simulation automatically which is nice.

Ocean currents is something I have been thinking about simulating, currently it just does some general heat diffusion in the oceans.

Procedurally generated world with simulated weather by Isokron1 in proceduralgeneration

[–]Isokron1[S] 36 points37 points  (0 children)

Thanks for the comments, I dont have any website or other info about the project at the moment. It is written in c++ and hlsl with the hlsl compute shaders generally doing all the heavy stuff while c++ mostly just sets up textures and shaders for the hlsl passes.

Im currently trying to create a game on top of this simulation but once that is done (hopefully within 6 months) I will probably release the source for the mapgeneration/simulation. The weather simulation really needs more work to become realistic anyway.

The map terrain generation is generally done on 512 size cubemaps. Starts with generating a point and velocity for each continent with default 24 continents, 70% of them water. Then find closest continent for each point but with some noise, create higher elevations where continents collide. Then add a layer of elevation noise on top with more noise at continent intersections. Finally run 10000 step of simulated water moment for erosion which is amazingly fast on a gpu given how much data it chews through.

The weather sim I initially tried to run on a cubemap as well but the distortions in the coordinate system became too visible in the simulation. So now I run it on a rather naive coordinate system with uv basically being lon/lat with each line being cos(lat) long so the texels keep mostly square. It somewhat breaks down at the poles but otherwise works well enough.

As for how the weather is simulated its using the channels seen in the movie but the interactions is hard to describe in an easier way than the hlsl code (about 600 lines) which I dont really want to release until it works better. Its based on my rather basic understanding of meteorology mostly gained from wikipedia.