What Is a Normal Map?

A normal map is a texture that fakes fine surface detail by changing how light hits each pixel. How normal maps work, why they look blue, and how to use them.

Updated October 2026

A normal map is a texture that makes a 3D surface look more detailed than it really is. Each pixel stores a direction instead of a color, and the renderer uses that direction to light the surface, so bumps, grooves and seams appear without adding any polygons.

StoresThe direction the surface faces at each pixel, as RGB
ChangesHow light falls on the surface, not its shape
Typical lookLight blue and purple
Part ofPBR materials, next to base color, roughness and metalness
Used inGames, real-time viewers, renders

How does a normal map work?

Lighting depends on which way a surface faces, its "normal". A normal map replaces the flat face's normal with a different direction at every pixel. Light then hits each pixel as if it sat on a tiny slope, which the eye reads as real detail like pores, scratches or panel lines.

The direction is encoded in the color channels: red for left and right (X), green for up and down (Y), and blue for straight out of the surface (Z). The geometry stays exactly as it was, which is why normal maps are so cheap to render.

Why are normal maps blue and purple?

Most normal maps are tangent-space maps, where a pixel pointing straight out of the surface is stored as RGB (128, 128, 255). That value is a light blue-purple, and since most of a surface points roughly straight out, most of the map has that color. Slopes show up as pinker or greener tints.

Object-space normal maps store directions relative to the whole model instead and look like a rainbow of colors. They are less common because they don't work on deforming characters.

What is the difference between OpenGL and DirectX normal maps?

The two conventions flip the green channel. A map made for one looks inverted in the other, with bumps that appear to point inward. Flip the green channel when moving a map between them.

ConventionGreen channelUsed by
OpenGL (Y+)Up is greenBlender, Unity, Godot
DirectX (Y-)Down is greenUnreal Engine, 3ds Max

Normal map vs bump map vs displacement map

All three add surface detail, but only displacement changes the actual shape. Normal maps are the standard for real-time 3D because they look detailed and cost almost nothing.

Normal mapBump mapDisplacement map
StoresDirection (RGB)Height (grayscale)Height (grayscale)
Changes geometryNoNoYes
SilhouetteUnchangedUnchangedChanges
CostVery lowVery lowHigh, needs dense geometry

Where do normal maps come from?

Normal maps are usually baked from a detailed high-poly model onto a simpler low-poly version, generated from a photo or texture, or produced together with the other maps of an AI-textured model.

  • Baking: the detail of a high-poly sculpt is projected onto a low poly model, which is how game assets keep their detail
  • From an image: a normal map generator estimates surface direction from a photo or texture
  • With AI texturing: the AI texture generator creates base color, roughness, metalness and normal maps for a whole model at once

How do I use a normal map?

Plug it into the normal input of your material and make sure the engine treats it as non-color data. Then check the green channel convention.

  • Blender: Image Texture node with color space Non-Color, into a Normal Map node, into the Normal input of the Principled BSDF
  • Unity: set the texture's type to Normal map in the import settings, then assign it to the material's Normal Map slot
  • Unreal Engine: import with the Normalmap compression setting, and flip the green channel if the map was made in OpenGL style
  • Godot: enable Normal Map in the StandardMaterial3D and assign the texture

Frequently Asked Questions

On this page