I am blending two noise displacement effects (Voronoi sand dunes + Wave Texture for little sand ripples), with everything plugged into Displacement node.

enter image description here

Now I want to drive the blending by using FAC socket, with Geometry Normal plugged in. I have set up my Geometry Normal effect like this, to split where the dunes break. When I plugged this into the FAC socket of the Mix RGB Node, I expected the white spots to have ripples from the Wave texture, and the black spots to have no ripples. enter image description here

Instead, the Factor blending has no effect at all, it seems, it completely deactivates the Ripple effect. enter image description here

Please, do you know what I am doing wrong? Thank you! Martin

  • $\begingroup$ I do find the maths in your tree a bit strange, where does it come from? The (simple) Displacement node expects a scalar (height), and you're giving it a vector, which has a direction. And you're ignoring the direction of the Geometry > Normal vector when you squash it into a scalar through the Color Ramp . Could you share that part of your node tree which generates the displacements at blend-exchange.giantcowfilms.com ? $\endgroup$
    – Robin Betts
    Commented Oct 14, 2020 at 9:49
  • $\begingroup$ Hello Robin, thanks for the feedback, I uploaded the scene here: we.tl/t-5invbXOPR5 $\endgroup$
    – MartinK
    Commented Oct 14, 2020 at 10:35

1 Answer 1


The issue with your file seems to be Experimental Feature Set, where you use Adaptive Subdivision Surface modifier. Switching to Supported Feature Set works with Normal node (also easier to adjust direction).

enter image description here

I know it is not a solution if you want to keep Adaptive Subdivision, sorry.

It gives me an impression it's a loop that should not work, because Displacement node is waiting for Normal that is generated from displacement ... I would expect result of Normal calculated from flat plane, but it is calculated from output of Displacement that is at the end of node tree. It is like a question what was first - egg or chicken. But it works :)

It is out of my understanding how shader data are used by regular Subdiv vs Adaptive.

BTW - for Micro-displacement (Adaptive Subsurf) you don't need such high dense mesh, four vertices are enough.

Here is a test from scratch to avoid hidden things.

  • Feature Set - Supported
  • Few times Subdivided W Plane with classic Subdivision Surface modifier set to 4
  • Material PropetiesSurface > Displacement+Bump (even there is not bump set result is much detailed, hm)

enter image description here

Or you can use Separate XYZ node as factor for mix.. Mix node with colors plugged into Diffuse shader is just to better visualise effect.

  • $\begingroup$ Thanks for your help! I see it working in your scene, yet when I plug everything exactly the way you have, inputting the Normal Dot into Ramp and that into Mix Overlay Factor, it just doesnt work, the ripples are still distributed all over the terrain, not just on the Normal direction. Here is my scene, if youd be willing to have a look :-) we.tl/t-5invbXOPR5 $\endgroup$
    – MartinK
    Commented Oct 14, 2020 at 8:47
  • $\begingroup$ You've cracked it better than me, I'm getting all sorts of counter-intuitive results, when I try to do what you would think is mathematically OK. $\endgroup$
    – Robin Betts
    Commented Oct 14, 2020 at 18:28
  • $\begingroup$ I have a home-made convolution node-group which can among other things, convert a height map to a normal map (Sobel operator), and that cuts the loop.. displacement and normals derived from the same source procedural height. And it works. Haven't answered with it because it's so huge.. What surprises me is that the height > normal conversion by a Bump node doesn't work. It's doing more than transforming colors; it must be jumping into the pipeline, somewhere? If I can clean it up, I'll ask this as a question of my own. $\endgroup$
    – Robin Betts
    Commented Oct 15, 2020 at 13:32
  • 1
    $\begingroup$ @RobinBetts I'm interested, if you can notify me, btw Adaptive Subdive works in different way then subdiv, if does it brings a light into this somehow. $\endgroup$
    – vklidu
    Commented Oct 16, 2020 at 7:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .