Pillar guide · ~20 min read
Texture Mapping Guide — Every PBR Map Type Explained
Complete texture mapping guide: what texture maps are, how UVs work, and every PBR map type — albedo, normal, bump, roughness, metallic, AO, height, displacement, specular, seamless — with free online tools.
Texture mapping is the craft of wrapping 2D images onto 3D surfaces so models look like wood, skin, concrete, or brushed steel — not flat plastic. UVs say where each texel lands; the maps say what the surface does under light: color, micro-detail, shininess, metalness, cavities, and even real geometric height.
This pillar guide is written for the broad queries (“texture mapping,” “types of texture maps,” “PBR maps explained”) that sit deep in search results when a site only ships tool pages. You will get definitions, when to use each map, workflow order, engine notes, and links to free browser generators on TextureMap.app. For one-line definitions, keep the glossary open in another tab.
What is texture mapping?
Without textures, a mesh is only triangles plus a uniform material. Texture mapping binds image data to those triangles. Historically that meant a single diffuse bitmap. Today it means a stack of specialized textures evaluated inside a physically based shader so the same asset looks correct under noon sun, a neon sign, or an HDRI studio.
Texture mapping sits between modeling and lighting: modelers deliver UVs, texture artists author or generate maps, look-dev tunes material parameters, and engines stream mips at runtime. Getting the map types right matters more than chasing maximum resolution — a wrong metallic mask at 4K still looks broken.
Related reading: Texture mapping (Wikipedia), LearnOpenGL lighting, and the glTF 2.0 material model.
Why modern materials use multiple texture maps
Light response is not one number. Color, surface orientation, microsurface roughness, and whether a pixel is metal all change the outgoing radiance. Packing everything into one RGB image forces you to bake lighting — which breaks when the light moves. Separate maps let the shader recombine channels every frame.
- Albedo answers “what color is it?”
- Normal / bump / displacement answer “how is the surface shaped?”
- Roughness / specular / metallic answer “how does it reflect?”
- AO / height answer “where are cavities and elevation?”
That is why a full PBR generator exports a set, not a single PNG — and why this guide treats each map as its own skill.
UV mapping: the foundation under every texture map
U and V are axes in texture space (like X/Y for an image). Unwrapping cuts the mesh into islands and lays them in the 0–1 square (or beyond, for tiling). Stretching in the UV layout becomes stretching in every map — normals skew, text warps, texel density varies.
Practical UV rules for texture mapping
- Aim for even texel density across hero silhouettes; hide seams on less visible edges.
- Leave padding between islands so mips do not bleed (especially with normal maps).
- Mirrored UVs save space but complicate unique baked lighting and some normal workflows.
- UVs outside 0–1 repeat the texture — perfect for floors if the maps are seamless.
Texture mapping cannot fix a bad unwrap. If bricks smear on a wall, fix UVs before regenerating normals.
All texture map types (detailed)
Use the table to jump, then read the full section for each map — what it stores, how it is authored, and which TextureMap.app tool to open. Every generator runs locally in your browser.
| Map | Stores | Tool |
|---|---|---|
| Albedo / base color | Surface color without lighting | Open |
| Normal map | RGB surface direction | Open |
| Bump map | Grayscale fake height (shading only) | Open |
| Roughness map | Microsurface blur (matte ↔ glossy) | Open |
| Metallic map | Metal ↔ dielectric mask | Open |
| Ambient occlusion (AO) | Contact shadow / cavity darkening | Open |
| Height map | Grayscale elevation (terrain / parallax) | Open |
| Displacement map | Vertex offset / real geometry | Open |
| Specular map | Reflectivity (spec/gloss workflows) | Open |
| Seamless (tileable) texture | Repeating edges without a seam | Open |
Albedo / base color
Stores: Surface color without lighting
Albedo (also called base color in metal/roughness PBR) is the flat color of the surface with lighting, shadows, and specular highlights removed. If your photo still has a directional light baked into it, the material will look wrong when the engine light moves — dark patches stay dark even under a fill light.
Older pipelines called this diffuse. Specular/gloss materials still use a diffuse color map, but metal/roughness treats metals differently: metal areas take their tint from albedo and ignore a separate specular color. Keep albedo in sRGB; do not pack linear data into it.
For large floors and walls, albedo is usually the map you make seamless first. Once the tile repeats cleanly, derived maps (normal, roughness, AO) inherit the same UV repeat.
Authoring tips
- Remove shadows and baked AO from photos when possible
- Export PNG or high-quality JPEG; avoid heavy compression artifacts
- Tileable albedo first, then generate the rest of the stack
Normal map
Stores: RGB surface direction
A normal map stores a unit-length surface normal in RGB. In tangent space (the game default), flat purple-blue (~128, 128, 255) means “pointing straight out from the triangle.” Red and green tilt the normal sideways so lighting and specular highlights respond as if the mesh had carved detail — without adding polygons.
Two conventions matter in production: DirectX vs OpenGL green-channel direction (Y flip), and tangent vs object space. Object-space normals are rarer (static props). If your highlights look inverted after import, flip Y in the material or regenerate with the other convention.
Normals are the default choice for fabric weave, brick mortar, skin pores, and panel lines. They do not change the silhouette; for that you need displacement. Photo-to-normal tools estimate height from luminance — strong for organic texture, weaker for hard-edged CAD detail (prefer baking from high-poly).
Authoring tips
- Prefer normals over bump for modern PBR
- Match engine Y convention (DirectX vs OpenGL)
- Do not apply sRGB gamma to normal maps — keep them linear/raw
Normal map generator →What is a normal map?Texture → normalBump → normal
Bump map
Stores: Grayscale fake height (shading only)
Bump mapping (Blinn-style) uses a grayscale height to perturb shading. The silhouette stays flat; only the lighting changes. It is older and cheaper than storing full XYZ normals, and many engines convert bump to a normal under the hood at load or in the shader.
Use bump when a pipeline still expects a height-like grayscale, when you need a quick detail pass, or when you plan to convert to normal later. For new metal/roughness assets, author a normal map directly — you get better directional lighting and fewer surprises.
Bump and height look similar as images but play different roles: bump is for shading tricks; height/displacement drive parallax or real geometry. See our comparison articles if you are choosing between them.
Authoring tips
- White = raised, black = recessed (typical convention)
- Convert bump → normal when the engine supports normals
- Avoid extreme contrast that creates sparkling specular
Bump map generator →How to make a bump mapNormal vs bumpNormal → bump
Roughness map
Stores: Microsurface blur (matte ↔ glossy)
Roughness describes how wide specular highlights become. In metal/roughness PBR, black is mirror-smooth and white is chalky/matte. A scratched metal panel is not one roughness value — worn edges go darker (glossier) while powdery dirt goes lighter (rougher).
Do not confuse roughness with specular intensity. Roughness blurs reflections; metallic and F0 control how strong metal vs dielectric reflections are. Gloss maps in older pipelines are often inverted roughness (gloss = 1 − roughness).
Derive roughness from photos carefully: luminance is a starting point, not truth. Painted plastic and brushed aluminum can share similar albedo but need very different roughness.
Authoring tips
- Author roughness in linear space
- Use variation — flat roughness looks CG
- Invert if your DCC expects gloss instead of roughness
Metallic map
Stores: Metal ↔ dielectric mask
The metallic map is usually near pure black (insulator) or pure white (metal), with soft transitions only at edges or coated metals. Gray mid-values are rarely physically correct for simple materials and often mean the mask needs cleanup.
When metallic = 1, albedo supplies the metal’s specular tint (gold, copper). When metallic = 0, the surface uses a dielectric F0 (often ~4% reflectivity) and albedo is diffuse color. Mixing them wrong is why “plastic chrome” and “flat gold paint” appear in beginner materials.
Authoring tips
- Keep metal masks high-contrast
- Paint metal edges carefully after weathering albedo
- Skip metallic for purely organic/dielectric props (leave black)
Ambient occlusion (AO)
Stores: Contact shadow / cavity darkening
Ambient occlusion approximates how much ambient light reaches a point. Crevices, cloth folds, and panel gaps go darker. Engines may multiply AO into diffuse, use it as a separate slot, or combine it with multi-bounce GI — which is why baking AO into albedo is risky: you cannot turn it off when lighting changes.
Photo-derived AO from luminance is an estimate, not a ray-traced bake. It still helps sell depth on tileable materials when you do not have a high-poly bake. Keep AO mostly white with dark cavities; crushing the whole map gray muddies the albedo.
Authoring tips
- Prefer a separate AO texture over baking into albedo
- Use mild strength — heavy AO looks dirty under bright lights
- Match UV space with albedo and normal
Height map
Stores: Grayscale elevation (terrain / parallax)
A height map stores elevation per pixel: white high, black low. Terrain systems (Unity Terrain, Unreal Landscape) and world builders expect height maps, often as 16-bit grayscale so gentle hills do not show stair-steps.
The same data can feed parallax occlusion mapping (POM) or be reinterpreted as displacement. On TextureMap.app we keep a dedicated height tool focused on terrain-style export and a separate displacement tool for material/mesh workflows — same precision engine, different framing.
8-bit height (256 levels) is fine for tiny UI tests; production landscapes and smooth ramps need 16-bit (65,536 levels).
Authoring tips
- Export true 16-bit PNG for terrain
- Use power-of-two sizes when the engine requires it
- Normalize range before import if the landscape looks flat or clipped
Displacement map
Stores: Vertex offset / real geometry
Displacement moves mesh vertices along normals (or in world space, depending on the shader). Silhouettes change, self-shadowing appears, and close-ups hold up — at the cost of tessellation, Nanite-style dense meshes, or offline subdivision.
Compared with normals: normals fake detail in the shader; displacement is real geometry. Compared with bump: bump never moves the edge of the mesh. Many hero assets use both — displacement for medium shapes, normals for fine pores.
Bit depth matters here as much as for height maps. Terracing on a curved surface under displacement is almost always 8-bit quantization or too little subdivision.
Authoring tips
- Subdivide or tessellate enough to support the detail
- Start with low displacement scale; raise slowly
- Combine mid-frequency displacement + high-frequency normal
Specular map
Stores: Reflectivity (spec/gloss workflows)
Specular maps belong mainly to specular/glossiness workflows (older Unity Standard specular setup, some film/VFX materials). They tint or scale specular reflection separately from diffuse. Metal/roughness PBR usually omits a specular texture and derives reflectivity from metallic + albedo.
If your project still uses gloss + specular, generate a specular map from highlights in the photo and keep gloss as the inverted roughness idea. Do not feed a specular map into a metal/roughness slot without reading the engine docs — channel meanings differ.
Authoring tips
- Confirm your material model before authoring specular
- Metals need colored specular; dielectrics stay near gray F0
- Prefer metal/roughness for new real-time content
Seamless (tileable) texture
Stores: Repeating edges without a seam
A seamless texture matches left↔right and top↔bottom so copies form a continuous surface. Without it, floors show a grid of hard lines. Making an image seamless usually means blending a strip across opposite edges and equalizing lighting so one side is not brighter than the other.
Always preview in a 2×2 or 3×3 grid (or use our checker). A map that looks fine as a single square can still fail when tiled. After albedo tiles, regenerate normal/roughness from that same tile so every channel shares the repeat.
Authoring tips
- Check seams under 2×2 and 3×3 before export
- Widen blend if a line remains; narrow if the center softens too much
- Verify with the seamless texture checker after edits
PBR texture mapping workflow (step by step)
A reliable order prevents rework. Color and tiling first; lighting-response maps second; expensive geometry maps last.
- Capture or paint albedo. Remove strong baked shadows. If the surface repeats, run the seamless texture generator and confirm with the checker.
- Build the shading stack. Generate normal, roughness, AO, and metallic from the same tile — or use the full PBR set for a consistent pass.
- Add elevation only if needed. Height for terrain/parallax; displacement for silhouette-changing detail. Prefer 16-bit.
- Assign in the engine. Set color spaces correctly (sRGB for albedo, linear/raw for data maps). Fix normal Y flip if specular looks carved inward.
- Validate under three lights. Hard key, soft fill, and an HDRI. Flat roughness and inverted normals show up immediately.
Metal/roughness vs specular/glossiness
Both are valid PBR parameterizations. They are not interchangeable without conversion.
- Metal/roughness (glTF, Unreal, Unity URP/HDRP defaults): albedo + metallic + roughness (+ normal, AO). Specular tint for metals comes from albedo.
- Specular/glossiness: diffuse + specular color map + gloss (often inverted roughness). Use our specular map generator when the project still expects that slot.
Mixing a specular map into a metallic slot — or treating gloss as roughness without inverting — is one of the most common texture mapping bugs in student portfolios.
Texture mapping in Blender, Unity, and Unreal
Blender
Principled BSDF is metal/roughness. Plug Base Color, Roughness, Metallic, Normal (via Normal Map node), and optional Displacement into the Material Output. Set Image Texture nodes to Non-Color for data maps. See the Principled BSDF manual.
Unity
URP/HDRP Lit materials expect Base Map, Mask Map (metallic/occlusion/smoothness packing varies by pipeline), and Normal Map. Terrain uses heightmaps separately. Check whether smoothness is inverted roughness. Docs: Normal map parameter.
Unreal Engine
Default lit materials are metal/roughness. Packing ORM into one texture is common for mobile/performance. Displacement and tessellation (or Nanite + displacement workflows) are project-dependent. Epic’s normal map notes cover compression pitfalls on mobile.
Resolution, mipmaps, and bit depth
Resolution is about texel density, not vanity 8K. A crate in the background can be 512²; a first-person rifle might be 2K–4K. Keep every map in a set the same size unless packing atlases intentionally.
- Mipmaps — engines generate smaller levels; sharp normal detail softens with distance (desired). Insufficient UV padding causes mip bleed between islands.
- 8-bit vs 16-bit — albedo/roughness/normal are usually 8-bit. Height and displacement for smooth gradients should be 16-bit PNG to avoid terracing.
- Compression — BC5/3Dc-style for normals; do not use the same settings as albedo color.
Common texture mapping mistakes
- Baking shadows into albedo, then wondering why GI looks dirty.
- Marking normal/roughness textures as sRGB.
- Forgetting DirectX/OpenGL normal Y flip between DCC and engine.
- Using mid-gray metallic masks “because it looked softer.”
- Shipping non-seamless floor textures that show a grid in-game.
- 8-bit displacement on soft terrain slopes.
- Mismatched tiling: albedo tiles 4× but normal was authored at 1×.
Which map should I use? (decision guide)
- Games / real-time props: albedo + normal + roughness (+ metallic, AO). Add displacement only for hero close-ups.
- Tileable environments: seamless albedo first, then matching normal/roughness from the same tile.
- Terrain: 16-bit height; layered albedo/normal on landscape materials.
- Legacy specular/gloss projects: specular + gloss instead of metallic + roughness.
- Quick prototype detail: bump, then convert to normal when locking art.
Deeper comparisons: normal vs bump, displacement vs normal vs bump, what is a normal map, how to make a bump map, and the full blog.
Texture mapping FAQ
- What is texture mapping?
- Texture mapping projects 2D images onto a 3D model using UV coordinates so the surface gets color, detail, and material properties. A modern PBR material usually uses several maps together (albedo, normal, roughness, metallic, and often AO or height).
- What types of texture maps are there in PBR?
- Common maps include albedo/base color, normal, bump, roughness, metallic, ambient occlusion, height, displacement, and specular. Seamless (tileable) albedo is also essential for large surfaces. Some pipelines pack ORM (occlusion, roughness, metallic) into one RGB texture.
- What is the difference between UV mapping and texture mapping?
- UV mapping defines how the 3D surface flattens into 2D coordinates. Texture mapping is the broader practice of applying images through those UVs — choosing map types, resolutions, and material slots. You need decent UVs before texture maps look correct.
- Normal map vs bump map vs displacement — which should I use?
- Use a normal map for most real-time detail. Use bump only for legacy or very cheap shading. Use displacement (or a height map) when you need real geometry change and can afford mesh density or tessellation.
- Metal/roughness vs specular/gloss — which workflow is texture mapping using?
- Most modern real-time engines default to metal/roughness (albedo, normal, roughness, metallic, AO). Specular/gloss is still used in older assets and some offline setups. Pick one model per material and author maps for that model.
- What resolution should texture maps be?
- Match texel density across the asset: props often use 1–2K, hero characters 2–4K, large trim sheets vary. All maps in a set should usually share the same resolution. Height/displacement for terrain may use large 16-bit maps independent of albedo size.
- How do I create texture maps online for free?
- Upload a photo to TextureMap.app — normal, bump, roughness, metallic, AO, height, displacement, specular, seamless, or a full PBR set. Processing runs in your browser; images are not uploaded to our servers.