I’ve found that the technique suggested by @Knasterband produces some very dark shading in places that should be relatively well lit. In the following images the directional light is perpendicular to the terrain. The terrain on the left is what I got using @Knasterband’s technique, the terrain on the right is what I ended up with after some trial and error:
I spent a bit of time trawling the docs/answerhub for clues until I realized that the generated normals were in world space but the Normal input on the material expected them to be in tangent space, thus the generated normals had to be transformed to tangent space using a Transform node like so:

