NormalMap

Why Are Normal Maps Purple / Blue?

Every normal map looks like the same lavender-blue colour, which surprises people the first time they open one. The colour is not decoration - it is data, and once you know the encoding you can read a normal map at a glance.

Quick answer: Normal maps look blue because the blue channel stores the Z direction, which points toward the camera and sits near maximum (255) almost everywhere. Red and green carry the left-right and up-down tilt, so flat areas read as 128,128,255.

The RGB channels are X, Y, Z

Red stores the left-right tilt, green stores the up-down tilt, and blue stores how much the surface faces the viewer. Each is mapped from -1..1 into 0..255, so the middle (128) means no tilt.

Why blue dominates

For any surface you can see, the normal points mostly toward the camera, so the Z (blue) value is near its maximum of 255 almost everywhere. That full blue channel across the whole image is what gives normal maps their blue-purple look.

Reading red and green

Where the surface tilts, red and green shift away from 128. A sharp edge that faces left encodes as darker red, one facing up as brighter green. That is why edges appear as red or green lines on an otherwise flat blue field.

The flat-colour value

A perfectly flat surface is (128, 128, 255) - magenta-blue. If a normal map is that colour everywhere, it contains no detail and will not change the shading at all.

  • 128, 128, 255 → flat
  • More red → surface tilts in one X direction
  • More green → surface tilts in one Y direction
  • Less blue → surface tilts away from the viewer

Frequently Asked Questions

Why is my normal map purple instead of blue?
Purple is red and blue together. It usually means the map was generated in the opposite green convention (DirectX vs OpenGL), which shifts the overall tint.
Does the colour affect performance?
No, the colour is just the storage format. What matters is that the texture is read as normal data rather than as an sRGB colour image.
What does a grey normal map mean?
A uniformly grey map (128,128,128) has a zero blue channel, which is invalid - it means the data was flattened or exported from a bump map by mistake.

Related Tools