Materials & Lighting · Beginner · 15 min
PBR Basics: Base Color, Metallic, Roughness and Normal Explained
Demystify the four inputs every Unreal material is built on — Base Color, Metallic, Roughness and Normal — by plugging in numbers, watching each slider change the surface, and learning when to use a constant versus a texture.
Before this: What Is a Material? Make Your First One in UE5
- Explain what 'physically based rendering' (PBR) means in plain English
- Describe what Base Color, Metallic, Roughness and Normal each control
- Tell when to feed an input a constant value versus a texture sample
- Build a simple material and watch each input change the preview surface
What 'PBR' actually means
When you open the Material Editor in Unreal, the big node on the right has a row of input pins: Base Color, Metallic, Specular, Roughness, Normal and a few more. It looks intimidating, but four of those pins do almost all the work, and once you understand them you can describe nearly any real-world surface — wood, gold, rusty metal, wet stone, plastic.
PBR stands for 'physically based rendering'. That's a fancy way of saying the material system is built to mimic how light behaves in the real world: how much light a surface absorbs, how shiny or rough it is, whether it's a metal or not. Because the rules match reality, a surface you set up to look right in one scene tends to look right in any lighting — sunny, indoors, sunset — without you fiddling with it again.
In this lesson we'll meet the four inputs that matter most: Base Color, Metallic, Roughness and Normal. You'll plug a plain number into each one, watch the preview sphere change, and learn the single most useful idea in materials: when to use a constant value and when to use a texture.
The four inputs, in one sentence each
Tap a card to flip it
Constants vs textures — the big idea
Every one of those four inputs can be fed in two ways, and understanding the difference is the thing that makes materials click.
A constant is a single fixed value applied to the entire surface. Plug the colour red into Base Color and the whole object is uniformly red. Plug 0.3 into Roughness and the whole object is equally glossy everywhere. Constants are perfect for clean, man-made-looking surfaces — a painted wall, a plastic toy, a solid block of colour.
A texture sample is an image, and it can hand a different value to every single pixel of the surface. A wood texture in Base Color gives you grain and knots; a roughness texture lets the worn edges be shinier than the flat middle. This per-pixel variation is what makes a surface look real, because real materials are never perfectly uniform.
Rule of thumb for now: learn each input with a constant first (so you can see exactly what it does in isolation), then swap in a texture once you understand the behaviour. That's exactly the order we'll practise in.
Build a material and meet each input
Open the Material Editor on a fresh material (the previous lesson showed how to create one and double-click it). We'll wire up each input with a constant so you can watch it change the preview sphere in the top-left of the editor.
- 1Set a Base Color so you can see the surface
In the material graph, right-click an empty space and add a 'Constant3Vector' node (a colour). Double-click it to open the colour picker and choose something obvious like a mid grey or a warm orange.
Drag from the node's output pin to the 'Base Color' pin on the big main node. The preview sphere takes on that flat colour. That colour, with no shine yet, is your Base Color.
TipA Constant3Vector holds three numbers (Red, Green, Blue), which is exactly what a colour needs. For single-number inputs like Roughness you'll use a plain 'Constant' (one value) instead.
- 2Add a Roughness constant and drag it from 0 to 1
Right-click and add a 'Constant' node (the single-value one). Connect it to the 'Roughness' pin.
Select the node and, in the Details panel, change its value. Try 0.1 — the sphere becomes a near-mirror with a tight, bright highlight. Now try 0.9 — the highlight spreads out and the surface goes soft and matte. This one input changes the feel of a material more than any other.
TipRoughness lives between 0 and 1. Most everyday surfaces sit around 0.3 to 0.7 — pure 0 (a perfect mirror) is rare in the real world.
- 3Flip Metallic between 0 and 1
Add another 'Constant' node and connect it to the 'Metallic' pin. Leave it at 0 first: the sphere looks like a painted or plastic object — light scatters off it and you still clearly see your Base Color.
Now set it to 1. The surface suddenly reads as raw metal — the Base Color now tints the reflections instead of looking like paint. This is why Metallic is a switch: 0 is 'not metal', 1 is 'metal', and there's almost nothing meaningful in between.
TipOn a metal, Base Color stops being 'the colour you see' and becomes 'the colour of the reflection'. That's why gold uses a yellowish Base Color at Metallic 1, and steel uses a near-white grey.
- 4See the difference Metallic + Roughness make together
Keep Metallic at 1 and slide Roughness from low to high. Low roughness gives you polished chrome or a mirror-bright gold; high roughness gives you brushed or sandblasted metal.
Then set Metallic back to 0 and do the same sweep — now you're going from glossy plastic to matte rubber. Two inputs, four very different materials. This pair is the backbone of PBR.
TipIf you're ever unsure whether a surface is metal: ask 'would this conduct electricity?'. Gold, steel, copper, aluminium = Metallic 1. Wood, skin, cloth, stone, plastic, paint = Metallic 0.
- 5Add surface detail with a Normal map
Drag a normal-map texture from the Content Browser into the graph (the starter content includes some), or right-click and add a 'TextureSample' node and pick a normal map in its Details panel. Connect its output to the 'Normal' pin.
The sphere instantly gains bumps, grooves or a brick pattern — even though it's still a perfectly smooth sphere underneath. The Normal map is faking that detail by changing how light bounces off each pixel.
TipNormal maps look like a flat purple-blue image in the Content Browser. That odd colour IS the data — each pixel encodes which way the surface 'tilts'. Never plug a normal map into Base Color, and never set its texture to sRGB.
- 6Save and apply
Click 'Save' (or the Apply button) in the Material Editor toolbar. Drag the material from the Content Browser onto a mesh in your level to see it under your scene's real lighting, not just the preview sphere.
Lighting changes everything about how a material reads — so always sanity-check a material on a real object in the actual scene, not only in the editor's preview.
TipThe preview sphere uses a neutral studio light. Your level's sun, sky and Lumen bounce light will make the same material look noticeably different — that's expected, and it's the PBR system doing its job.
You set Metallic to 0.5 because the surface is 'a bit metallic, like painted metal'. Why is that usually the wrong instinct?
In the real world a surface is either a metal or it isn't — there's no '50% metal'. Metallic is designed as a switch (0 or 1), not a dial. Values in the middle produce a physically impossible surface that tends to look muddy and reads 'wrong' in most lighting.
Painted metal is the perfect example of the trap: the PAINT is not metal, so Metallic should be 0. You'd make it look like metal underneath the paint chips by using a mask later — but the painted areas themselves stay at Metallic 0. When in doubt, snap to 0 or 1 and control the look with Roughness instead.
When do I use a constant vs a texture?
The surface is meant to be uniform: a single flat colour, an even gloss, a solid metal.
You're learning, prototyping, or blocking out — constants are instant, free to tweak, and let you see exactly what one input does.
Examples: a plain coloured plastic prop, a clean painted wall, an untextured metal bar.
The surface needs variation across its area: wood grain, brick, rust, dirt, scratches, fabric weave.
You want different roughness or colour in different spots — e.g. worn edges shinier than the centre, or moss only in the crevices.
You'll typically use textures for Base Color, Roughness and Normal together (often a matched set), while still feeding Metallic a simple constant of 0 or 1.
QuizCheck yourself
1Which input controls how polished or matte a surface looks, from mirror to chalky?
Roughness runs from 0 (a sharp, mirror-like highlight) to 1 (a soft, spread-out, matte surface). It's the single biggest control over how a material reads.
2What values should Metallic almost always be set to?
Metallic is a switch: 0 for non-metals (wood, plastic, stone) and 1 for raw metals (gold, steel). Middle values describe surfaces that don't exist in reality and usually look wrong.
3You want a wooden plank with grain, knots, and dark seams — different across its surface. What should feed Base Color?
A constant gives one uniform colour everywhere. To get grain and knots that vary across the surface, you need a texture sample feeding a different colour per pixel.
Handy Material Editor shortcuts
- Right-click Open the node menu on empty graph space (search for Constant, TextureSample, etc.)
- 1 With a node-graph space focused, hold and click to drop a single-value Constant node
- 3 Hold and click to drop a Constant3Vector (colour) node
- Ctrl S Save the material
- C Box-select nodes then press C to add a comment box (keep big graphs tidy)
Make three materials that are clearly different surfaces using only constants: (1) shiny gold, (2) matte black rubber, and (3) glossy red plastic. Drag each onto a separate mesh in your level and compare them under your scene lighting.
Hint 1
Gold: a yellow-orange Base Color, Metallic 1, low Roughness (try 0.1–0.2).
Hint 2
Rubber: a near-black Base Color, Metallic 0, high Roughness (try 0.85).
Hint 3
Plastic: a bright red Base Color, Metallic 0, low-to-mid Roughness (try 0.25). Notice plastic and metal can both be shiny — Metallic is what separates them.
Gold = Base Color warm yellow, Metallic constant 1, Roughness constant ~0.15. The Base Color tints the bright reflections, giving polished gold.
Rubber = Base Color near-black, Metallic constant 0, Roughness constant ~0.85. Light scatters softly with almost no highlight, reading as matte rubber.
Plastic = Base Color bright red, Metallic constant 0, Roughness constant ~0.25. You get a crisp highlight sitting on top of an obviously coloured surface — the tell-tale look of glossy plastic. Three convincing materials, four inputs, no textures required.
You can now
Tick these off — if any feel shaky, replay that step in the walkthrough:
- Say what PBR means in one sentence
- Name what Base Color, Metallic, Roughness and Normal each control
- Decide whether an input should be a constant or a texture
- Set Metallic correctly as a 0-or-1 switch, not a middle value
- Recognise a normal map by its purple-blue look and know not to treat it as colour
Mark this lesson complete
We'll remember it on your Academy page and unlock the next lesson below.
Questions beginners ask
What's the difference between Base Color and the colour I actually see on screen?
Base Color is the surface's flat, lighting-free colour — the raw 'paint'. The colour you see on screen is that Base Color after the engine adds lighting, shadows, reflections and the effects of Roughness and Metallic. That's the whole point of PBR: you describe the material honestly, and the renderer figures out how it should look under your scene's light.
Why does setting Metallic to 1 make my object look the wrong colour?
On a metal, Base Color no longer reads as 'the colour of the object' — it becomes the colour of the reflections. A metal with a dark Base Color will look dark and shiny rather than 'a coloured object'. For believable metals, use a fairly bright Base Color (e.g. warm yellow for gold, light grey for steel) and control the look with Roughness.
Do I always need all four inputs?
No. A material works fine with just a Base Color and a Roughness value — leave Metallic at its default 0 and skip the Normal map entirely for a simple flat surface. Add Metallic when the surface is a metal, and add a Normal map only when you want fake surface detail like bumps or grooves. Start minimal and add inputs as the surface needs them.
My normal map looks flat or wrong — what should I check?
Two things. First, double-click the texture in the Content Browser and confirm its compression is set to 'Normalmap' and that sRGB is turned OFF — a normal map is data, not colour. Second, make sure it's wired into the 'Normal' pin and nothing else. If the bumps look inverted (poking in instead of out), the map may be in the wrong handedness; some assets ship a setting to flip the green channel.