What Is a Normal Map?

Learn what a normal map is, how RGB direction data affects 3D lighting, and how it compares with bump and displacement maps. Create one online for free.
Sep 10, 2026

What Is a Normal Map?

A normal map is an RGB texture that tells a 3D renderer which direction a surface appears to face at each pixel. It changes the way light reacts to a model without adding the extra polygons that would be needed to sculpt every small crack, brick edge, or fabric weave into the mesh. That is why normal maps are widely used for game assets, real-time visualization, and other scenes where detail and performance must coexist.

The simplest analogy is a mask. A low-poly model provides the basic shape, while a normal map acts like a detailed mask over its surface. Under the scene lighting, the mask makes the low-poly model look as though it has the surface detail of a much higher-poly model. The outline and silhouette stay the same, but the lighting makes the material feel more complex.

This approach matters because geometry is expensive. A model with real geometry for every pore or stone edge needs more vertices, more memory, and more work during rendering. A normal map stores the surface-direction changes as image data, so the same base mesh can appear detailed from many viewing angles. It is not a replacement for geometry when the silhouette must change, but it is an efficient way to add detail inside the existing outline.

How Does a Normal Map Work?

A tangent-space normal map stores a surface direction in three color channels. Red and green describe the X and Y components of that direction, while blue describes the Z component. A flat, neutral normal points straight out from the surface. In the common 0–255 image range, that direction is approximately (128, 128, 255), which produces the familiar purple-blue appearance.

The purple color is therefore a useful visual clue, not a special material color. Neutral purple means that a pixel is close to the base surface direction. Changes in red and green indicate that the surface normal tilts in the tangent plane, and the blue value completes the direction. The exact colors depend on the encoded direction, so “more blue” or “more green” should not be treated as a universal depth rule.

When a renderer samples the map, it converts those RGB values back into direction data and uses that direction in its lighting calculation. The renderer can then shade a pixel as if the surface were angled, even though the underlying mesh has not changed. The result is fast and convincing for small-to-medium surface detail, provided the map uses the convention expected by the target engine.

Normal Map vs Bump Map vs Displacement Map

These terms describe related ways to represent surface detail, but they do not have the same data or rendering behavior.

Map typeStoresChanges geometry?Typical useGeneral cost
Normal mapRGB surface-direction dataNoGames and real-time renderingLow shader cost; no added mesh detail
Bump mapGrayscale height interpreted as shading detailUsually noSmall surface adjustmentsOften simple, depending on the shader
Displacement mapGrayscale height used to offset a surfaceYes, when supportedClose-up or high-quality renderingHigher; may require tessellation or extra geometry

A normal map directly supplies direction vectors, so it can describe more detailed orientation with the same texture resolution. It is a common choice when a game or real-time renderer needs visible lighting detail without changing the mesh.

A bump map normally starts with a grayscale height value. The shader derives an apparent normal from the height changes, which can be useful for subtle detail. In practice, “bump map” is also used as a broad term for several shader techniques, so the exact result depends on the material system.

A displacement map represents height or offset rather than only a lighting direction. When the renderer has enough surface subdivisions and displacement support, it can move vertices or otherwise change the rendered surface. This can affect the silhouette and produce stronger depth, but it generally needs more geometry or computation. The performance ranking above is a general tendency, not a guarantee for every engine or material setup.

Need to create grayscale height data from an image? Use our displacement map generator to adjust the height response and download a PNG. For a step-by-step image workflow, follow how to make a normal map.

When Do You Need a Normal Map?

  • Game development: Pair a low-poly mesh with a normal map to show high-poly sculpted detail at real-time performance.
  • 3D rendering and ArchViz: Add lighting detail to brick, stone, wood, concrete, or fabric without modeling every groove.
  • VR and AR: Keep scene geometry manageable while preserving the surface cues that help objects feel detailed.
  • Product and material previews: Make a flat base mesh respond more naturally to studio lights and camera movement.

Use real geometry when a feature must change the outline, cast a separate silhouette, or create deep physical relief. Use a normal map when the detail mainly affects how light responds inside the existing outline.

How to Create a Normal Map

There are three common approaches:

  1. Generate one from an image: Upload a suitable grayscale or surface texture to a browser tool, adjust the strength and detail, and export the result.
  2. Bake one from a high-poly model: Build or sculpt a detailed model, create a low-poly version, and bake the high-poly surface directions onto the low-poly UV layout in Blender or another 3D package.
  3. Paint one by hand: Draw or edit the RGB direction information directly when the asset needs art-directed detail that cannot be inferred reliably from a source image.

Want to create a normal map from your own image right now? Try our free normal map generator — no signup, no download, and processing happens in your browser.

Frequently Asked Questions

Can I use normal maps in Unity and Unreal Engine?

Yes. Unity documents a Y+ convention and provides a Flip Green Channel import option; Unreal Engine also exposes a Flip Green Channel setting. Confirm the green-channel direction with a test material in the target project.

What file format should I use for normal maps?

PNG is a practical lossless choice. Tangent-space normal maps commonly use 8 bits per channel; 16-bit can be useful for height or displacement maps when the target pipeline supports it.

Are normal maps the same as height maps?

No. A height map uses grayscale values to describe elevation, while a normal map uses RGB channels to describe surface direction. A height map can be an input for generating a normal map, but they serve different material workflows.

Can I generate a normal map from a photo?

Yes. Choose a photo or texture with even lighting, upload it to the free Normal Map Generator, and generate and download a PNG normal map directly in your browser.

Try Our Free Normal Map Generator →
What Is a Normal Map? Beginner's Guide to 3D Normal Mapping