Normal Maps vs Bump Maps — What's the Difference?
Both normal maps and bump maps add the illusion of surface detail to a flat mesh without adding polygons. But they work in fundamentally different ways, and knowing which to use — and why — will improve both your workflow and your final results.
What is a Bump Map?
A bump map is a grayscale image — black and white only — where brightness values represent height. Bright pixels push the surface outward (appear raised), and dark pixels push it inward (appear recessed). The renderer uses this height information to fake surface detail by adjusting how light hits the surface.
Bump maps were the original solution to adding surface detail cheaply, and they're still supported in most renderers today. They're simple to create — you can paint one by hand, or generate one from a photo by desaturating it and adjusting contrast.
The key limitation of bump maps is that they only store a single height value per pixel — one number. This means the renderer can only shift the apparent surface up or down relative to the camera. It can't encode complex surface angles or fine microdetail as accurately as a normal map.
What is a Normal Map?
A normal map is an RGB image where the red, green, and blue channels encode XYZ direction vectors — specifically, the direction each surface point is "facing." Instead of storing a simple height value, each pixel stores a full 3D direction. The renderer uses these directions to calculate how light should interact with each point on the surface as if the geometry were actually that complex.
That's why normal maps are purple/blue in color — the default "flat" surface direction pointing straight out encodes as roughly (128, 128, 255) in RGB, which looks like a medium blue-purple. Variations in red and green channels encode lateral tilt in X and Y directions.
Because normal maps store full 3D direction information rather than just height, they produce significantly more accurate lighting results, handle complex surface curvature much better, and hold up at grazing angles where bump maps fall apart.
Side by Side Comparison
Here's a direct comparison of the two approaches across the properties that matter most for game development:
| Property | Bump Map | Normal Map |
|---|---|---|
| Data stored | Grayscale height (1 channel) | XYZ direction vectors (3 channels) |
| File format | Grayscale PNG or JPG | RGB PNG (lossless recommended) |
| Lighting accuracy | Approximate | Physically accurate per pixel |
| Grazing angle quality | Breaks down visibly | Holds up well |
| Complex surface detail | Limited | Excellent |
| Ease of hand-painting | Easy (just grayscale) | Requires a generator or baking |
| Engine support | Most engines | All modern engines (standard) |
Tangent Space vs Object Space Normal Maps
You'll sometimes see normal maps referred to as either tangent space or object space. These describe how the direction vectors are encoded — relative to what reference frame.
Tangent Space (blue/purple)
Direction vectors are stored relative to the surface itself. These maps look mostly blue-purple. They can be used on animated or deforming meshes and are the standard for game assets. This is what you want 99% of the time.
Object Space (rainbow-colored)
Direction vectors are stored relative to the object's world orientation. These maps look colorful, almost rainbow-like. They're faster to render but break on animated meshes. Occasionally used for hard-surface static props.
When to Use Each
In modern game development, normal maps are the standard. If your engine supports them (and all major ones do), use normal maps. They're more accurate, more flexible, and produce better results at any resolution.
Bump maps still have legitimate uses though. They're a good option when you need a quick, hand-painted height hint and don't have a high-poly mesh to bake from. They're also useful as source data — many normal map generators accept a grayscale bump/height map as input and convert it to a proper normal map automatically.
When baking in Trumble, you'll generate a proper tangent-space normal map directly from your high-poly geometry — which is the highest quality method and the recommended approach for any asset where detail matters.