Custom Bump Map Node (Custom Node Group)

So, I recently ran into an odd issue where the Bump Node seemed to get confused as to where to sample other points in the texture (in order to make its calculations).

This was likely because of how complicated my node setup was, as I was using noise-generated blur effects and whatnot (note: I’ll be using a simpler example for this post).

So, I realized it might be helpful to build a Custom Bump Map Node Group from scratch, which could also potentially provide versatility for further customization later on down the line.

It consists of two parts, the Texture Sampler and the Custom Bump Map node groups:

=====================

Texture Sampler (Node Group):

  1. Takes an input vector from a UV Map.
  2. Creates two new position vectors offset by a certain distance.

=====================

Custom Bump Map (Node Group):

  1. Takes the above (offset) position vectors and uses them to sample other parts of the texture.
  2. The difference in brightness is then measured against the current point.
  3. These values are then scaled by a “Steepness” factor (since when we add the tangent vectors to the normal vector later on, the longer the tangent vectors, the steeper the incline of the bumps).
  4. Then we use these values to create two tangent vectors (using the UV map as a reference), which are then added to the normal vector to create our new bumpy normals.

Theoretical Limitations:

  1. It is currently designed to work with UV Maps (but if anyone is interested in playing around with this, it would be interesting to see if this can also be altered to work with Generated position vectors).

Created in Blender 2.79b. Please see the attachment for the .BLEND file :slight_smile:

Custom Bump Map Node Group (Blender 2.79b) “custom_bump_map.blend” (634.4 KB)

Hope this might provide solutions for anyone else looking for further bump map customization! Peace and God bless!