Physically Based Rendering (PBR) is a shading methodology that approximates how light behaves in the real world. Instead of relying on artistic tricks to fake reflections and shadows, PBR uses measurable physical properties — roughness, metalness, index of refraction — to calculate how surfaces interact with light. The result is materials that look correct under any lighting condition, from harsh midday sun to soft interior ambient light.
The Two PBR Workflows
There are two common PBR workflows: metallic/roughness and specular/glossiness. The metallic/roughness model is dominant today, used by Unreal Engine, Unity, Blender, Substance Painter, and most modern game engines. The specular/glossiness workflow is older and still found in some arch-viz pipelines. This guide focuses on the metallic/roughness model.
Map Types and What They Control
Albedo (Base Color / Diffuse)
The albedo map defines the base color of a surface without any lighting, shadow, or reflection information. For non-metals, this is the diffuse color. For metals, it defines the reflection color (since metals have no diffuse component). A critical rule: albedo maps must never contain baked lighting or ambient occlusion. Keep values between 30–240 sRGB for non-metals; pure black and pure white are physically implausible for real materials.
Normal Map
Normal maps encode surface angle variations in RGB channels. Each pixel represents a direction vector: red for X-axis tilt, green for Y-axis tilt, and blue for the Z-axis (pointing straight out from the surface). This lets flat geometry appear to have fine surface detail — pores in skin, grooves in wood, mortar lines in brick — without adding polygons. Normal maps can be generated from height maps or from high-poly models using baking tools in Blender, Substance, or xNormal.
Roughness
Roughness controls how scattered or focused specular reflections are. A value of 0.0 is a perfect mirror (polished chrome); 1.0 is completely diffuse (raw concrete). Most real-world materials fall between 0.2 and 0.8. Roughness maps are grayscale — white for rough, black for smooth. Variation within a single material is critical: a wooden table might have smooth varnished areas and rough unfinished edges.
Metallic
The metallic map is binary in practice: a pixel is either metal (1.0) or non-metal (0.0). Values between 0 and 1 represent transition zones like paint peeling off metal, where the edge might be 0.5 over a few pixels. Pure metals have no diffuse reflection and tint their specular with their albedo color. Non-metals have white specular and colored diffuse. Getting this wrong — setting a plastic surface to metallic 0.5, for example — creates physically implausible results.
Ambient Occlusion (AO)
AO maps darken crevices, corners, and areas where ambient light would be occluded by nearby geometry. This is a grayscale map: white means fully exposed, black means fully occluded. AO adds depth and contact shadows that make materials feel grounded. In game engines, AO maps are often multiplied with the final diffuse lighting pass.
Height / Displacement
Height maps (grayscale, white = high, black = low) can drive parallax occlusion mapping for fake depth or actual mesh displacement in renderers that support it (Cycles in Blender, V-Ray, Arnold). Displacement is computationally expensive but produces genuinely altered silhouettes, which normal maps cannot achieve.
Practical Setup Tips
- Consistent UV scale — All maps for a material must share the same UV layout. A mismatch between albedo and normal map UVs creates obviously wrong lighting.
- Linear vs. sRGB — Albedo maps should be imported as sRGB. Normal, roughness, metallic, AO, and height maps must be linear (non-color data). Incorrect color space assignment is one of the most common PBR mistakes.
- Roughness from real measurements — If you are unsure what roughness value to use, reference charts exist. Polished marble: ~0.1. Worn wood: ~0.5. Raw concrete: ~0.9. These are good starting points.
Software-Specific Notes
In Blender, the Principled BSDF shader accepts all these maps directly. In Unreal Engine, you combine AO, roughness, and metallic into a single packed ORM texture (channels R, G, B respectively). In Unity, the Standard shader expects metallic in the alpha channel of the metallic map. Substance Painter is the industry-standard tool for authoring complete PBR material sets, with live preview of all map channels simultaneously.
Generate base textures for your PBR materials with our Concrete Generator or Metal Generator, then derive normal and roughness maps using the Normal Map tool.