Adding Depth to Normal Maps using GIMP

A lot of new 3D artists are intimidated by high-fidelity texture maps, and especially by Normal and Specular maps.  They’re very tricky to get just right, and even after nearly three solid years of experience with them, I still fall short.

So here’s a (hopefully-) easy-to-follow step-by-step guide on generating deep, high-fidelity Normal maps for your 3D models.  For this quick pic-by-pic tutorial, I will be using the free image manipulation program GIMP.

NOTE: Click on each picture to enlarge it.

1. Build your 3D model in your 3D architecture-of-choice.  I use Blender for this hyper-simple wall.  Once it’s built, UV-unwrap it and export the UV map:

Click to Enlarge

2. Import your UV map into GIMP.  I have set my UV map output from Blender at 1024x1024:

3. Prepare your high-fidelity texture map on one layer, AND set a lower layer to solid Black:

4. Merge the Texture layer onto the Black layer:

5. Sharpen the texture between 10-15 units, or until you’re happy with the tightness of the lines:

6. Convert the texture layer into a “Normal Map” using the Normalmap Filter:

7. Use the following parameters, as the Normalmap filter is inexplicably reversed in X,Y axes:

8. This is what you’ll have as a preliminary Normal Map generated from your texture:

9. Duplicate your texture layer:

10. Rename the top duplicate layer “SHARP” and the layer beneath it “BLUR”.  Then change both of their “Mode” parameters to “Grain Merge”:

11. Sharpen the SHARP layer by 10-20 units:


12. Gaussian Blur the BLUR layer by 10 units Horizontally/Vertically:


13. Make a duplicate of both the “SHARP” and “BLUR” layers.  Make immediate note of how the process of duplication doubles the effect of both Sharpness and Blurriness on the output texture, effectively “deepening” your Normal map:

14. Merge the “BLUR copy” with “BLUR”, and the “SHARP copy” with “SHARP”:

15. Every merge resets the merged layer’s Mode to “Normal.”  So change the Mode back to “Grain Merge”:

16. Rinse and Repeat steps 13, 14, and 15 two to three more times until the depth of your output texture is obvious and, for lack of a better word, “lush”:

17. Merely export your finished Normal Map to the appropriate folder, and import it into your 3D engine of choice!  Here, I am using Unity3D to display:

NO additional depth layering:

WITH additional depth layering (steps 13,14,15 from above):

And voila!  I hope this was easy to follow for you, and as always, feel free give your feedback in the Comments section below!  There will be plenty more technical tutorials in the weeks to come, so stay on us!