Tags: textures, materials, pbr, albedo, normal, roughness, metallic, uv, game-dev Last updated: 2026-06-27

Texture & Material Management Cheatsheet

Quick Reference

MapChannel(s)What It Controls
Albedo / Base ColourRGBSurface colour (no lighting info)
NormalRGBSurface bumps/dents via light angle
RoughnessSingle (R or G)Micro-surface scattering (0=glossy, 1=matte)
MetallicSingle (R or G)Metal (1) vs non-metal (0)
Ambient OcclusionSingle (R or G)Self-shadowing in crevices
Height / DisplacementSingleActual geometry offset (tessellation)
EmissionRGBSelf-illuminated areas

PBR Map Reference

Albedo (Base Colour)

Normal Map

Roughness Map

Metallic Map

Ambient Occlusion (AO)

Height / Displacement

Packed Texture Formats

ORM (Occlusion-Roughness-Metallic)

ChannelMapNotes
RAmbient OcclusionInvert if baked as “cavity” map
GRoughnessUnity Glossiness = 1 - Roughness
BMetallic0 or 1 for most surfaces

ARM (Unity Standard)

ChannelMap
RMetallic
GAmbient Occlusion
B— (unused or detail mask)
ASmoothness (= 1 - Roughness)

UV Tiling

Basic Tiling

U = horizontal repetition, V = vertical repetition.
A tile rate of (2, 2) repeats the texture 4× per face.

Texel Density

texel_density = texture_resolution / object_world_size

UV Channel Usage

Channel 0 (UV0)Channel 1 (UV1)
Albedo, normal, roughness, metallic, AOLightmaps (baked lighting)
Tiled texturesUnique unwrap (no overlapping UVs)

File Format Guide

FormatCompressionAlphaBest For
PNGLosslessYesSource assets, UI, sprites
TGANone / RLEYesSource assets, height maps
JPEGLossyNoAlbedo (no alpha needed)
EXRLossy/LosslessYes (HDR)HDR environment maps, lightmaps
DDSBlock (BCn)VariesRuntime (GPU-native)
KTX2Basis UniversalYesRuntime (WebGL, mobile)
TIFFLosslessYesArchival, 16-bit height maps

Engine-Specific Runtime Formats

EnginePreferred Format
UnityASTC (mobile), BC7 (PC), DXT5/BC5 (normal)
Unreal.uasset auto-compresses on import
GodotPNG for source, VRAM-compressed at import
WebKTX2 (Basis Universal) or WebP

Resolution Guidelines

Asset TypeMax Resolution
Tiling environment texture2048×2048
Hero prop / character2048×2048
Background prop1024×1024 or 512×512
Small prop / pickup512×512 or 256×256
UI sprite sheet1024×1024 or 2048×2048

Common Mistakes & Fixes

ProblemCauseFix
Normal map looks flatImported as sRGBSet texture to Linear colour space
White seams at UV edgesNo edge paddingAdd 4–8px padding during bake
Shiny-looking metals are blackAlbedo too dark for metalRaise albedo >180 for metals
Textures blurry at distanceNo mipmapsEnable mipmaps in import settings
Visible tiling patternNo variationAdd dirt map, macro-variation, or decals
Roughness looks wrong in engineInverted glossinessCheck: engine uses roughness or smoothness?

Baking Checklist (from Blender / Substance)

  1. Set matching resolution across all maps.
  2. Ensure low-poly has non-overlapping UVs (UV0).
  3. Use cage or average normals for projection.
  4. Set max ray distance tight to the high-poly surface.
  5. Bake to 16-bit for normal and height maps.
  6. Check bakes by applying to low-poly with PBR shader in viewport.