Why does Bump node loose its functionality as soon as being fed with texture, connected to Normal vector?

enter image description here

EDIT: Using Texture Coordinate's Normal vector doesn't change anything. enter image description here

  • $\begingroup$ i.sstatic.net/feUnq.png $\endgroup$
    – user1853
    Commented Jun 24, 2018 at 17:08
  • $\begingroup$ This setup is not what I am looking for. Noise in this case uses Generated coordinates and plugged Normal vector is somehow useless. Final look that I want is stretched random lines along mesh normals for both diffuse and bump. I agree that there is cyclic dependency and the only way is to bake texture to UV map, then making a bump from it. $\endgroup$
    – Serge L
    Commented Jun 25, 2018 at 9:22

2 Answers 2


Because it involves a dependency loop.

Your normals (including both from geometry nodes and texture coordinate nodes) depend on your bump-- all a bump does, without displacement, is distort normals. It needs to know what your bump is to determine the normals, and it needs to know what your normals are to determine your bump.

Notice, in the picture below, how the normals are determined by the bump map that I feed the material: enter image description here


The problem here isn’t the Bump node but how the Noise Texture is being used.

With no input to the Noise Texture it will automatically assume Generated coordinates and with nothing connected to the Bump Normal it will automatically assume the Geometry Normal - ie, it's effectively automatically :

default Bump setup

NOTE : The nodes shown in white are optional - if nothing is connected to the texture Vector or bump Normal then those are the values that are assumed anyway.

By connecting the Normal of the Geometry node to the Vector of the Noise Texture you are telling Blender to use that normal in place of the usual Generated coordinates , overriding the default with something that doesn't make sense (as @Nathan says, it's a circular dependency - the normal is dependent on the result of the bump which is dependent on the normal). This is effectively destroying your coordinates used to generate the noise.

If you do need to use a modified normal for the Bump then you could potentially use a calculated normal - either via Maths nodes based on something other than the actual normal or from an Image Texture via a Normal Map node.

  • $\begingroup$ Thanks, but could you please show a picture of correct setup? I updated first post with pic of using Texture Coordinates and can't tell it helped me. I've also tried to plug Geometry Normal in Bump along with Texture Coordinates in Noise and it never changed. $\endgroup$
    – Serge L
    Commented Jun 24, 2018 at 17:03
  • $\begingroup$ While Serge L did use the inappropriate node in his image, he's correct-- normal coordinates, even accessed through a texture coordinate node + image texture, will not be used for displacement. I've tested this while researching this answer. I don't know why. But I also don't know why anyone would ever want to, so I'm not concerned. Additionally, geometry normal and normal texture coordinates are two ways of talking about the same thing, the actual values involved are the same, and the geometry node can be used to read textures for regular shaders just fine. $\endgroup$
    – Nathan
    Commented Jun 24, 2018 at 17:05
  • $\begingroup$ @SergeL I've edited my answer and included an image - hopefully this makes sense. $\endgroup$ Commented Jun 24, 2018 at 21:57
  • $\begingroup$ @Nathan Yes - it makes sense that the Normal is not available during the pass to calculate the normal or, indeed, the displacement (since the displacement directly affects the normal so it isn't known before the displacement is calculated - it would be dependent on itself). $\endgroup$ Commented Jun 24, 2018 at 22:00

You must log in to answer this question.

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