Animated erosion node test

Started by Kadri, November 01, 2021, 05:10:20 PM

Previous topic - Next topic

Kadri


I wanted to get an animation without much parts jumping around.
This looks kinda Ok. There are parts that move wrong but could thought to be part of the erosion process i suppose?

This is made with animating the classic erosion node itself only.

The project file is below too if anyone wants to have a look.
It is a basic file as i wanted just to see what the erosion node is doing in this kind of work.
Would love to hear why the ground does a jump between  frame 42 and 43 too.
This was the reason i made the video just with 42 frames (timescaled with PD Howler then).

Dune

Very interesting. I had just responded in the other thread about the small glitches in erosion between sessions.

WAS

Seems to me you are animated the terrain below the erosion; this will inherently cause discrepancies as the shader decides which direction flows should go, deposition, etc, etc. Each change to the base terrain is essentially like throwing a new terrain at it, cause it's changed and the shaders will RESAMPLE them. Same seed doesn't matter much because that seed is applying to what the shader SEEs via sampling. So any changes to terrain will yield different erosion results as the plugin samples it and decides which directions to take on the terrain.

This is also unrealistic logic. The terrain doesn't change. It's static. Erosion is doing all the changes IRL.

Kadri

Thanks.

Jordan you are right. But i wanted to see if the plugin could handle this relatively good or not.
I thought it could... But looks hard. Maybe using much higher sampling might help.
Not sure and it takes too much time to test.

Because of this my last test uses a static ground.

Daniil

Hello friends. Things are simpler actually. CE isn't fully deterministic just because it uses asynchronous multithreading approach (synchronous would perform very slow in this particular algorithm), so, if some thread is delayed by any reason (OS thread scheduling), the flows which movement it simulates are delayed as well, and won't have an effect on landscape, which would affect the flows, controlled by other threads. This is the cause of different results every run even when the same seed is used.
If to disable multithreading, CE always generates the same result with the same seed given that original terrain isn't changed.

BTW, thermal erosion behaves much better, although still may produce sudden changes if animated.

Daniil

WAS

With classic I think it samples procedurally at every run, so probably can introduce more issues. I wonder if terragens adapative terrain also impacts it. Like, does it render the terrain data (not render render) to the erosion shader, then apply erosion, and render? It does seem to do a long hang during pre-pass like it's doing stuff after the main terrain is built.

And is that really just erosion melting the terrains height more than eroding it's edges and topology? That's weird looking.

WAS

Quote from: Daniil on November 02, 2021, 01:59:48 PMHello friends. Things are simpler actually. CE isn't fully deterministic just because it uses asynchronous multithreading approach (synchronous would perform very slow in this particular algorithm), so, if some thread is delayed by any reason (OS thread scheduling), the flows which movement it simulates are delayed as well, and won't have an effect on landscape, which would affect the flows, controlled by other threads. This is the cause of different results every run even when the same seed is used.
If to disable multithreading, CE always generates the same result with the same seed given that original terrain isn't changed.

BTW, thermal erosion behaves much better, although still may produce sudden changes if animated.

Daniil
I'm not sure why I didn't get a warning about your post... you posted it minutes before me...

Anyways! Wow, that is pretty simple, so it is a "tile" sort of deal but with the calculation of flows and such? I wonder if adding a single threaded checkbox would help in situations like this (where the user wants to bear with the pain of building it)? Though It sounds rough to build it may be worth it. I know some 8k terrains I can do in like 20-28 minutes. That's only like 4 to almost 6 hours (just multiplying to one core math wise). ;D ;D ;)

Daniil

Quote from: WAS on November 02, 2021, 02:06:00 PMI wonder if adding a single threaded checkbox would help in situations like this (where the user wants to bear with the pain of building it)?
Yes, I thought about this, but always ended up being scared by the eroding times when only a single thread is used. :)
Daniil

WAS

Quote from: Daniil on November 02, 2021, 02:13:39 PM
Quote from: WAS on November 02, 2021, 02:06:00 PMI wonder if adding a single threaded checkbox would help in situations like this (where the user wants to bear with the pain of building it)?
Yes, I thought about this, but always ended up being scared by the eroding times when only a single thread is used. :)
Daniil

Is it possible to detect lagging or failing threads, and wait on the other threads until that one has retried? I figure it'll slow multi-threading, but raise precision.

Daniil

Quote from: WAS on November 02, 2021, 02:16:57 PMIs it possible to detect lagging or failing threads, and wait on the other threads until that one has retried? I figure it'll slow multi-threading, but raise precision.
Any ways to synchronize the flows at different threads will cause severe performance drop, making multithreading to work as single threading. This is just a feature of design of the CE algorithm.


There is a way to make fully deterministic multithreaded erosion without performance penalties, but it can't be applied to CE. This is totally different algorithm, resulting in differently looking erosion (not better or worse, just differently).

Daniil


WAS

Quote from: Daniil on November 02, 2021, 02:25:23 PMThere is a way to make fully deterministic multithreaded erosion without performance penalties, but it can't be applied to CE. This is totally different algorithm, resulting in differently looking erosion (not better or worse, just differently).

Ah, yeah that wouldn't work for legacy stuff, would have to be just its own [separate] thing.

Kadri

By the way Daniil, is the procedural erosion plugin the same or is it fully deterministic?

Daniil

Quote from: Kadri on November 02, 2021, 02:38:18 PMBy the way Daniil, is the procedural erosion plugin the same or is it fully deterministic?
Fully deterministic. This isn't hard there, as procedural erosion doesn't do any simulation. It is really procedural, like, say, Alpine shader.

Daniil