Thanks for the comments guys.

As promised, I've attached a working TGD and pic of the node network, and I'll try and talk you through it.

I wanted to create ripples that followed the contours of the landscape, rather than all heading in one direction as you would get if you used just an X or Z value from a Get Position node as shown in the previous tutorial. What you have to remember, is that the Get nodes return the value at the point being calculated in the chain of commands. You'll notice that the ripples are applied after I had worked out some suitable settings for the basic dune shapes, because I wanted the function to look at where it was in relation to the height on the landscape.

A Get Altitude node is connected to an Add Scaler which is connected to a Perlin 3D Scaler to add some variation to the otherwise regimental concentricness you'd get with out it. (As described in the previous tutorial). This Add Scaler is then plugged into a Multiply Scaler before the Sin function.

A Sin function will take any value from -infinity to +infinity and always output a value from -1 to +1 as the input increments. It will do this in a curve shape that we all know from basic maths. The larger the the steps of value being fed into it, the faster it will output a curve from -1 to +1 back to -1. So with this in mind, the Multiply Scaler before the Sin Scaler acts as a frequency multiplier, ie the more I multiply the value of the input, the faster the oscilation from -1 to +1, resulting in more ripples per meter. OK? Still here?

So we now have an output of -1 to +1 as we go up and down the altitude of our landscape. What I wanted to do now is distort that sine wave with a Bias Scaler, which essentially looks at that curve and pinches or pulls the shape. Take a look in the node reference to see what I meen. But it only works on values between 0 and 1, so I now need to convert my -1 to +1 from the Sin Scaler to get my values between 0 and 1. To do this, I added 1 to (-1 to +1) to now give (0 to +2) and then divided this by 2 (or multply by 0.5) to give 0 to 1.

This is then connected into the displacment node, and the value of displacment inside that node I used was 0.3. Think of this as the amplitude, ie the height of the sine wave.

So there you go. Function nodes aren't really as daunting as you first think. There is a logic behind them, rather than some black art. Saying that, I've only recently just started playing around, and barely scratched at what can be done with them.

So have fun with this, and let me see what you come up with.