# Normal Map

A normal map is a texture that stores surface direction information to simulate detailed geometry without adding polygons.

_Texturing · updated 2026-08-24_

---

## What is a Normal Map?

A **normal map** is a type of texture used in 3D graphics that stores surface orientation data (normals) in the RGB channels of an image. Each pixel's color represents a direction vector, allowing the rendering engine to simulate fine surface details, like scratches, dents, or fabric weave, without increasing the [polygon count](/glossary/polygon-count) of a mesh. It is one of the core maps in a [PBR](/glossary/pbr) material.

## How Normal Maps Work

In a standard 3D model, surface normals are calculated per-vertex or per-face. A normal map overrides these normals at the pixel level during rendering:

- **Red channel (X)** → left/right direction
- **Green channel (Y)** → up/down direction
- **Blue channel (Z)** → in/out direction (toward the viewer)

The renderer uses this per-pixel normal to calculate lighting, creating the illusion of geometric detail on a flat surface.

## Types of Normal Maps

### Tangent-Space Normal Maps
The most common type. Normals are stored relative to the surface's local (tangent) coordinate frame. They tolerate deforming geometry (characters, cloth); generic tiling detail maps reuse freely across meshes, while a map baked from a high-poly sculpt stays specific to the mesh it was baked for.

### Object-Space Normal Maps
Normals are stored in the model's own local (object) coordinate space. They produce slightly better quality for static objects but are tied to that specific mesh and its geometry, so they cannot be reused on different meshes.

## When to Use Normal Maps

- **Game assets**: add detail to low-poly models without performance cost
- **Real-time applications**: VR, AR, web 3D viewers
- **Baking high-poly detail**: transfer sculpt details onto a low-poly game mesh
- **3D printing previews**: visualize surface texture before printing

## Normal Maps vs Bump Maps

| Feature | Normal Map | Bump Map |
|---------|-----------|----------|
| Data stored | XYZ direction vectors | Grayscale height values |
| Detail quality | Higher (directional) | Lower (height only) |
| Silhouette effect | No | No |
| Performance | Slightly more expensive | Cheaper |

## Creating Normal Maps

Normal maps can be generated by:

1. **Baking** from a high-poly sculpt to a low-poly mesh (Substance, xNormal, Blender), often paired with [retopology](/glossary/retopology) to build the low-poly target
2. **Converting** from a height/bump map (filter-based)
3. **AI generation**: tools like Sloyd's AI texturing can automatically generate PBR-ready normal maps for 3D models

For the wider set of maps a material uses, see our [beginner's guide to 3D textures](/blog/what-are-3d-textures-a-beginners-guide).

## Normal Maps in Sloyd

When you generate or texture a 3D model in Sloyd, normal maps are automatically created as part of the PBR material pipeline. Export your model in GLB or FBX format and the normal map is included, ready for use in Unity, Unreal Engine, Blender, or any game engine.

## FAQ

### What is a normal map used for?

A normal map fakes fine surface detail such as scratches, pores, and fabric weave by storing per-pixel direction data that the renderer uses to light the surface. It makes a low-poly mesh look highly detailed without adding any polygons, which is why it is essential for real-time game and VR assets.

### What is the difference between a normal map and a bump map?

A bump map stores a single grayscale height value per pixel, so it can only push detail in or out along one axis. A normal map stores a full XYZ direction vector per pixel, so it captures directional detail far more accurately. Neither changes the model's silhouette; both are lighting tricks.

### How are normal maps created?

They are usually baked from a high-poly sculpt onto a low-poly mesh, converted from a height map, or generated automatically by AI texturing tools. Sloyd produces PBR-ready normal maps as part of its material pipeline.

### Why is my normal map blue or purple?

Tangent-space normal maps look predominantly blue because a flat surface points straight out along the Z axis, which is stored in the blue channel at full strength. The red and green channels lean the normal left, right, up, or down, so the deviations from flat show up as pink and green tints across the map.

### What is the difference between tangent-space and object-space normal maps?

Tangent-space maps store directions relative to each face's local frame, so they tolerate deforming geometry like characters and cloth. Generic tiling detail maps reuse freely across meshes, but a map baked from a high-poly sculpt stays tied to the mesh it was baked for — reusing it needs matching topology, UVs, vertex normals, and tangent basis. Object-space maps store directions in the model's own local coordinate space, giving slightly higher quality for static props but tying the map to that specific mesh and its geometry.

### Do normal maps change the model's silhouette?

No. A normal map only alters how light hits the surface, so detail appears convincing head-on but the object's outline stays flat. To change the actual silhouette you need real geometry or a displacement map, which moves vertices rather than faking the lighting.

### Why does my normal map look inverted or wrong?

The most common cause is a green-channel convention mismatch. OpenGL engines (Blender, most web renderers) expect +Y up, while DirectX engines (older Unity setups) expect -Y. If bumps look like dents, flip the green channel to match your target engine.

## Related terms

- https://www.sloyd.ai/glossary/pbr
- https://www.sloyd.ai/glossary/roughness-map
- https://www.sloyd.ai/glossary/polygon-count

---

Source: https://www.sloyd.ai/glossary/normal-map
