This just happens to touch on something I've been playing with lately. I watched the excellent Entagma's video on algorithm design, here, which uses sand dune evolution as an example. They use a Houdini graph to implement a model of it, which is a much cruder one than in the paper you link. (Thanks for that reference!)
I don't think Geometry nodes is quite up to that yet, so I thought: 'Why not use the renderer to do this, and hand all the work over to the GPU?' The idea is as follows:
- Set up an orthogonal camera to shoot a square plane, exactly filling the frame.
- Give the plane an image-sequence texture, containing a height-map. To begin with, only frame 0 matters. It's the seed from which the rest will be generated.
- Frame 1 of the animation uses frame 0 of the sequence as an input to its shader tree.
- The shader tree manipulates the input texture in some way that simulates the effect of wind, and renders it to frame 1
- Frame 2 uses the render of frame 1 as its texture, and so on. Frame n manipulates the texture provided by frame n-1, and renders it for use by frame n+1. Feedback through the renderer.
The manipulation in this example is as crude as Entagma's:
- The incoming height-map is put through a Bump node to extract an
approximation of its normals. This tree is only interested in the
normals' X and Y components.
- The Combine XYZ node gives us a 'Wind Direction'
- The Dot Product then varies some effect according to how much the dunes are facing the wind. In this case, reducing the height where facing toward the wind, increasing where facing away.
In this case, I also put the result through the compositor, to blur it a little before rendering for use in the next frame. So far, so OK, over 25 frames, when the resulting height-map sequence is used to actually displace the plane:
The possibilities are endless .. instead of using a Bump node, you could actually displace the plane for every frame, and use a raking light as wind. getting shadows. A Shader to RGB node would let you manipulate the light-response of the surface as color, before feeding the texture back. (Not claiming the settings wouldn't be fiddly)
I think the general method might have some potential for generating other kinds of growth or flow.. if not the process, then at least the result for use as textures. Challenging to get 3D information in there, somehow.. it would be great to get the stains left by rain on buildings, etc.