How to Create Seamless Normal Maps in GIMP
Creating seamless normal maps in GIMP is a straightforward process that allows 3D artists and game developers to add realistic surface depth to 3D models without visible edge artifacts. This guide covers how to make a standard texture tileable using offset and healing tools, generate a normal map using GIMP's built-in GEGL filters, and export the final texture for use in modern rendering engines.
Step 1: Make the Base Texture Seamless
Before generating a normal map, you must eliminate any visible seams on your base texture so the resulting depth map tiles perfectly.
- Open your base texture image in GIMP by navigating to File > Open.
- Go to Layer > Transform > Offset.
- In the Offset dialog, click the By width/2, height/2 button. This shifts the edges of the image to the center, exposing the seams.
- Click OK.
- Select the Clone Tool (press
C) or the Healing Tool (pressH). - Hold
Ctrlto select a clean source area from the texture, then carefully paint over the visible horizontal and vertical cross-seams in the center until they blend naturally with the surrounding pattern.
Step 2: Convert the Image to a Normal Map
GIMP 2.10 and newer includes a native normal map generator powered by GEGL, removing the need for external plugins.
- With your seamless texture selected, navigate to Filters > Generic > Normal Map.
- A preview window will appear, showing your texture converted into a tangent-space normal map (characterized by its blue/purple coloration).
Step 3: Configure Normal Map Settings
Adjust the normal map generation settings to match the requirements of your 3D software or game engine:
- Scale: Controls the perceived depth and strength of the bumps. Higher values produce deeper, more aggressive bumps, while lower values produce subtle surface variations.
- Filter: Choose the algorithm used to detect edges. Sobel is standard for general textures, while Prewitt or Gradient can provide different sharpness levels.
- Invert Y: Check this option if your target engine uses the DirectX format (such as Unreal Engine). Leave it unchecked for OpenGL formats (such as Blender, Unity, or Godot).
- Invert X: Rarely needed, but available if your pipeline requires an inverted red channel.
Click OK once you are satisfied with the preview.
Step 4: Verify Seamlessness
Because the Normal Map filter samples neighboring pixels, edge pixels may occasionally sample across the image boundaries slightly differently.
- Go back to Layer > Transform > Offset.
- Offset the normal map by half the width and height again.
- Inspect the center lines. If any slight discoloration or line appears, use the Clone Tool set to a soft brush with low opacity to gently blend the affected areas, or re-run the normal filter on a texture with an extra padded border.
Step 5: Export the Normal Map
- Navigate to File > Export As.
- Choose a lossless file format such as PNG or TGA to prevent compression artifacts from corrupting the vector data in the normal channels.
- Click Export, ensure color profile and pixel data settings are preserved, and confirm the export.