I've made some tweaks to the Environment Interaction system, so here are the updated files!
The biggest change is now grass/foliage interaction happens in the R and G channels, to define a 2d direction, so you can now push grass out of the way, and it could also be used to bend larger plants..
Water ripples are still in the B channel.
Mud (and squashed grass) is now in the A channel.
I'm now defining 0.5 as the midpoint for any channel, and then in shader remapping it from -1 to 1 (-0.5 then *2), so mud and ripples can now push outwards and inwards from the surface. You can see this on the mud trails where the outside of the trail is raised slightly.
Let me know if you have any thoughts, improvements or changes, or any questions, or if anything doesn't work properly! That's what I'm here for.
Thanks again for your support.
PS: I've had to mess around with the various particle shaders to write appropriate channels to the render texture, they could probably use cleaning up later and consolidating into less variations.
TO DO:
Make some larger plants to push out of the way, and bake their pivots in their UV channel so they can bend nicely and still batch for performance.
Add a flow map to the water via Vertex Colours (or in their UV channel), so that the river can flow, and also push the ripples in the direction of the flow - could look really cool! Probably using this great (free) asset to paint the flow map - https://github.com/slipster216/VertexPaint
Instead of just pushing the grass down, leave a trail renderer behind, or a trail of custom particles, to make the grass lie flat in the direction of travel. Will probably look better.
Find a way to fit in "cut grass" into the shader. I'm all out of channels, but I'd like to do a "Breath of the Wild" style grass cutting system, and this setup would be perfect for it. Can we use 2 separate render textures? That's overkill surely. We could use a different texture format, to allow for negative values... or squeeze it into the A channel. Mud doesn't need that much resolution.
UPDATE: There's a potential issue where you might not see the normal offset showing up correctly if you edit and resave the shader, as it might default to the "Normal Create" function node that ships with Amplify Shader Editor. I've actually tweaked my version to use the Blue channel of the input heightmap, whereas the default "Normal Create" uses the Green chanel. You'll want to go into the function and swap over back to the Blue channel on the three Texture samples there. The best fix would be to make a "Normal Create B" version of the Shader Function and use that instead. Let me know if you need any help with that!
UPDATE:
Here's a version of the Ground shader (interactive mud) that uses tessellation and displacement instead of just a normal map to do the interaction. Download MudInteractive.shader and use the settings in this screenshot.

Puck Loves Games
2020-03-07 12:27:02 +0000 UTCJSART
2019-05-11 20:57:01 +0000 UTC