The blog post and the companion video (and shader source code) explain an erosion technique which emulates gorgeous branching gullies and ridges without simulation, while still allowing every point to be evaluated in isolation, which means it’s fast, GPU-friendly, and trivial to generate in chunks.
The video was really well done, very interesting even though I’m not very familiar with the subject. Is this the sort of thing that would go into a game like No Man’s Sky to improve the planet generation?
In my opinion, any game featuring large-scale, realistic terrain would benefit from a tool like this. You simply can't hand-craft every ridge on a mountain range at that scale. Unless you're recreating a real-world location using satellite and LIDAR height data, procedural filters are the only way to achieve that level of geological detail efficiently.
I imagine lots of games do already, but offline. Most games don’t have gameplay that requires real-time terrain generation. The idea of generating terrain procedurally is not new, but this technique that gets a great-looking erosion effect in real time is.
Mountains weather directional, meaning rain comes mostly from one direction to press against the mountains and create gullies, so there is a rain shadows on "inner mountains" also there is weathering by gully freezing, so the thin ridges between gullies get freeze cracked to rubble.
That rubble again builds up, almost filling the lower slopes of a gully ocassionally.
Finally there are invisible gullies, layers of rock where the water sips into the rock and caves, leaving all things below gully free.
I enjoyed Dwarf Fortress random map generation because it simulated erosion pretty well. Small creeks started in the mountains and flowed to the ocean getting larger as it went. Deep valleys and waterfalls too in places made for interesting maps.
Be interesting if we can start getting 3D games with random maps that are realistically generated and have interesting features in the future.
It is worth noting that although the result here is visually impressive for erosion aesthetics, it is also not practical for the generation of physically-plausible lakes and rivers. Proper hydrological simulation is required because non-local information is crucial, something which this shader technique doesn't attempt to simulate. Without that, you're likely to end up with rivers flow uphill and lakes that don't properly overflow from valley passes and suchlike.
Source: I'm a core dev for Veloren, which uses a very detailed hydrological simulation for its world generation. More info here: https://veloren.net/blog/devblog-43/
Thanks, I'm glad to hear it :) Unfortunately I've not had much time to work on it recently for personal reasons, but the project is still very much active and receives regular updates!
Truly fantastic work! "Holy Grail" is right! Terrain generation just got an upgrade so the tooling is about to start producing some really beautiful results in real time. That's going to be a blast to work with. Thanks!
I was expecting something about the morphological erosion operator but this was pretty cool.
Some of the techniques here seem to be motivated by physical processes (e.g. rain). I wonder if that could be taken further to derive the whole process?
might be fun to try to find parameters that agree well with the statistics of hi res lidar data, perhaps conditioned on geological maps. E.g. describe a geological history with layers of different formations and a pattern of uplift, and get a terrain which agrees with it statistically.
Without simulating erosion you're not going to get a faithful recreation of any particular geological history, but you could get something that looked consistent by virtue of being consistent with the statistics of that topography.
The blog post and the companion video (and shader source code) explain an erosion technique which emulates gorgeous branching gullies and ridges without simulation, while still allowing every point to be evaluated in isolation, which means it’s fast, GPU-friendly, and trivial to generate in chunks.
The video was really well done, very interesting even though I’m not very familiar with the subject. Is this the sort of thing that would go into a game like No Man’s Sky to improve the planet generation?
In my opinion, any game featuring large-scale, realistic terrain would benefit from a tool like this. You simply can't hand-craft every ridge on a mountain range at that scale. Unless you're recreating a real-world location using satellite and LIDAR height data, procedural filters are the only way to achieve that level of geological detail efficiently.
I imagine lots of games do already, but offline. Most games don’t have gameplay that requires real-time terrain generation. The idea of generating terrain procedurally is not new, but this technique that gets a great-looking erosion effect in real time is.
The tools exists (AFAIK the defacto industry standard is World Creator: https://www.world-creator.com/en/index.phtml - this is for offline generation though)
PS: TIL that this is a German company: https://docs.world-creator.com/world-creator-story
very cool!
You can play with the interactive example here: https://www.shadertoy.com/view/sf23W1
Click and drag your mouse around the preview to see how fast it runs
Mountains weather directional, meaning rain comes mostly from one direction to press against the mountains and create gullies, so there is a rain shadows on "inner mountains" also there is weathering by gully freezing, so the thin ridges between gullies get freeze cracked to rubble. That rubble again builds up, almost filling the lower slopes of a gully ocassionally.
Finally there are invisible gullies, layers of rock where the water sips into the rock and caves, leaving all things below gully free.
I enjoyed Dwarf Fortress random map generation because it simulated erosion pretty well. Small creeks started in the mountains and flowed to the ocean getting larger as it went. Deep valleys and waterfalls too in places made for interesting maps.
Be interesting if we can start getting 3D games with random maps that are realistically generated and have interesting features in the future.
It is worth noting that although the result here is visually impressive for erosion aesthetics, it is also not practical for the generation of physically-plausible lakes and rivers. Proper hydrological simulation is required because non-local information is crucial, something which this shader technique doesn't attempt to simulate. Without that, you're likely to end up with rivers flow uphill and lakes that don't properly overflow from valley passes and suchlike.
Source: I'm a core dev for Veloren, which uses a very detailed hydrological simulation for its world generation. More info here: https://veloren.net/blog/devblog-43/
Veloren is awesome! Thanks for the work you do, I’ve enjoyed playing it quite a bit. It’s been a while so maybe time to check it out again soon.
Thanks, I'm glad to hear it :) Unfortunately I've not had much time to work on it recently for personal reasons, but the project is still very much active and receives regular updates!
Truly fantastic work! "Holy Grail" is right! Terrain generation just got an upgrade so the tooling is about to start producing some really beautiful results in real time. That's going to be a blast to work with. Thanks!
Thanks, I hope so too!
I was expecting something about the morphological erosion operator but this was pretty cool.
Some of the techniques here seem to be motivated by physical processes (e.g. rain). I wonder if that could be taken further to derive the whole process?
Thank you for writing this up, it was great to see all of the comparisons. Very well put together!
Being able to process separate chunks in parallel is the killer feature for any procgen algorithm - nice.
Any remember the 90s software Terragen and Vue3d?
As a kid who spent many hours on Vista on the Amiga 500, this has blown my mind
I loved playing around with KPT Bryce so much. IDK if it ever was used productively, but it was so ahead of its time.
Bryce! One of the most fantastic[1] UIs.
[1] https://en.wikipedia.org/wiki/Bryce_%28software%29#/media/Fi...
Amazing work!
Great write-up. Results are quite stunning.
might be fun to try to find parameters that agree well with the statistics of hi res lidar data, perhaps conditioned on geological maps. E.g. describe a geological history with layers of different formations and a pattern of uplift, and get a terrain which agrees with it statistically.
Without simulating erosion you're not going to get a faithful recreation of any particular geological history, but you could get something that looked consistent by virtue of being consistent with the statistics of that topography.