LESSON OVERVIEW
🔹BANNER IMAGE
Add an image here that to be used as a banner image (Size 1920x1080, Max 2mb Size)
🔹LESSON CONTENT
Add the main lesson content here, divide it into chapters by using “/heading2” to divide each section into a separate topic. Add any links or resources in the middle of the text with their links between ( ) when applicable and additional links can be added at the bottom of the page.
LESSON OVERVIEW
Tell people the goal of the lesson, what they will achieve at the end and a short overview on how they will get there.
What’s the secret behind materials that react naturally to light and shadows in games? Textures! Textures do more than just add detail—they define how surfaces react to light, making materials feel real and immersive. In this lesson, we’re diving into Physically Based Rendering (PBR)—the industry standard for modern game engines. By the end, you’ll have a solid grasp of the Metallic PBR workflow, A fundamental grap on how to go about making textures for it, and key things to keep in mind when working with this system.
We'll also take a look at answering some key questions, such as:
Why do modern games rely on PBR for their textures, and what makes it different from older methods?
How does understanding PBR help artists create better textures that work across multiple platforms?
But before all that, let’s break down what PBR actually is!
WHAT IS PBR?

PBR, or Physically Based Rendering, is a rendering method used in games to simulate how real-world materials interact with light. It allows for realistic visuals while remaining efficient enough to run in real-time at high frame rates, which is crucial for games!
One of the biggest advantages of PBR is consistency. Before PBR, lighting information was often baked into textures, making materials look inconsistent under different lighting conditions. With PBR, textures and lighting are treated separately, meaning materials behave naturally in any environment.
It’s important to remember that PBR stands for Physically Based Rendering, meaning that it’s an approximation of real-world materials, not a perfect recreation. This gives artists some flexibility in how they create materials, while still grounding the materials with a sense of realism. This sense of realism becomes even more important when designing materials for fantastical settings, like alien planets. When dealing with unfamiliar or fictional materials, artists can push the boundaries of PBR while still following its core principles to maintain believability.
Let’s break down what this looks like in practice!
PHYSICALLY BASED PRINCIPLES

Since PBR is based on the laws of physics—specifically how light interacts with different materials—it follows a few key principles. Don’t worry, you won’t need to do any complex math, but understanding these ideas will help you make more realistic materials:
As artists, we don’t need to worry about the technical details—these principles are already built into the shaders we use. Luckily, we won’t be expected to create them from scratch!
WHAT ARE TEXTURES?

As artists, our job is to translate these principles into our textures which can then be read and processed by our game engine through the use of shaders essentially bits of code in our rendering engine. These determine how they appear on screen. Giving us artists a lot of creative control over how our materials look since we’re the ones providing the texture or input data that drives their final appearance.
So in short, what are texture maps?
COMMON TEXTURES
About 90% of PBR-based materials use the same core set of texture types. These textures define how a material looks and reacts to light:

While the example image above shows each texture individually, there are techniques to combine multiple individual textures into one for in-engine optimization purposes! This is called texture packing. You can explore that topic in our {{LINK TO TEXTURE PACKING LESSON}}!
Let’s take a deeper look at what each individual texture is and does.
BASE COLOR

The Base Color (often is abbreviated as BC) texture stores the inherent color value of the material, without including any lighting information for an engine to process, like shadows or highlights! There are execptions to this, for example, traditional handpainted workflows often times still add dedicated lighting information in their textures.
To get the most out of this texture, we store the color data in a lossless format, like 16-bit RGB, these can store colors at a higher range, allowing us to preserve all the color information. Common file types used for this are PNG, TIFF, or other lossless image formats.
Note: While a Base Color texture might not include lighting information for an engine, that doesn’t mean that a Base Color can’t include light or dark color details! For example, edges that show wear may be lighter in color!
METALLIC

The Metallic or “Metalness” (often abbreviated as M, particularly as a suffix) texture defines whether a material is metallic or non-metallic. It's a simple black and white map — white for metallic, black for non-metallic and grey for potential cases in between. We need this map to let the game engine know how the reflections should behave, particularly the specular highlight. Essentially, this texture type adjusts how a material should react to light based on its conductivity.
Why conductivity?
ROUGHNESS

The roughness texture stores how smooth or how dull the surface appears. Imagine that the surface itself is faceted and bumpy. The less bumps we have on the surface the least amount of light get’s scattered in all kinds of different directions. Compared to a surface that is more bumpy, thus scattered the lighting more off it’s surface.
Impacting how rough/smooth a surfaces read to us.
The roughness map is the texture that contributes the most to how realistic a surface feels, getting the values of this map right is crucial to a texture that feels realistic in response to light.
The Roughness texture (often abbreviated as R, particularly as a suffix) determines how smooth or dull a surface looks, changing the reflection to be sharper or diffuse. Imagine the surface as being made up of tiny, uneven bumps. The smoother the surface, the less light is scattered in random directions. The rougher or bumpier the surface, the more the light is scattered on contact with the surface.
This texture plays a huge role in how we perceive the realism of a material since we subconsciously know how shiny a surface is from taking in real world data. So authoring the roughness map and how light interacts with the surface, has the biggest impact in making it feel more or less realistic. If we get this texture looking good, that means that we make the material look convincing.
SHOWCASE BETWEEN WRONG AND RIGHT VALUES
This texture stores it’s data in greyscale, without color information!
Normal

The Normal (often abbreviated as N, particularly as a suffix) texture is probably the weirdest looking map! This map stores directional data, telling an engine how light is supposed to interact with a surface. This gives the illusion of extra detail, even on flat meshes, by simulating the way light would bounce off real-world textures.
This map is super useful when we want to add high density detail to low-poly objects without increasing the geometry or polycount, through a process called "baking." It allows us to take the fine details of a highpoly object and transfer them to a simpler model, the lowpoly.
Since normal maps rely on color data, we use an RGB texture to store this info.
Depending on the game engine there are two different ways of storing normal information. Different engines work with different coordinate systems (meaning which way is up, forward, etc…) So this also has an effect on the Normal map, since it also stores directional data. This can lead to a phenomenom called “flipped normals” where your normal map looks off because it interprets surfaces that are supposed to go up and going down and vice versa.
Ambient Occlusion (AO)

An Ambient Occlusion texture (often abbreviated as AO, particularly as a suffix) is a texture that’s used for adding subtle shadows in areas where direct light doesn’t naturally reach. It helps ground objects and props in a scene, making them feel more realistic by creating depth and interaction between surfaces.
In an AO map, black areas represent where shadows are most prominent, and white areas indicate where light can easily reach. The map interacts directly with lighting in the game engine, becoming less noticeable or disappearing completely when exposed to direct light.
The lighting and shadow information stored in this texture are smooth and subtle, created by ambient light, which diffuses softly and gently between objects. Since it’s not concerned with color, the data in the AO map is stored in grayscale, simplifying the information it holds.
While Ambient Occlusion is typically stored in PBR-based object textures, some engines use techniques like Screen Space Ambient Occlusion (SSAO), which generates AO data from the scene rather than individual objects. However, SSAO is expensive to use, can come with artefacts, and doesn’t always have the same accuracy as baked AO textures. Baked AO is often the safer bet!

Refence: https://www.youtube.com/watch?v=65cgc3jbNlg
PRACTICAL TIPS
Let’s look at some high level concepts on authoring these texture before we dive into what it takes to actually create them in Substance Painter.
REAL WORLD VALUES

Since PBR is all about simulating physically correct values as much as possible, we need to have some sort of benchmark of what actual real world values are. Once we have a good idea of this we can then go ahead and add an artistic spin on this.
What you will learn from looking at real life is that true black and white does not exist really. We can get close with some extreme examples but that does not translate well. The reason why this is relevant is that the same thing applies to games as well, we should not use full black and white either.
For example on the full scale of sRGB ranging from 0 (black) to 255 (white) the basecolor of coal lands on 50 on that scale, and snow lands on 243. So you can see that even the values we perceive being black and white are actually not so. This also translates to games too, If we we’re to use full black in the color that means that the surface can’t receive any shadows because it’s already as black as it can be, and likewise for the white color which at the maximum of the color can’t receive highlights.
PBR SAFE VALUES

This leads us to a range of safe values that we need to stick within as artists. There are tools that we can use, such as the PBR validation node in Substance Painter that will highlight area’s that are outside this range in red.
There are two types of different ranges that we can stick to, the normal range (30 - 240 sRGB (normal Range) gives a bit more flexibility compared to the strict range (50 - 249 sRGB (Strict Range))
WORKFLOW DIFFERENCES
SHOW VISUAL DIFFERENCES BETWEEN THE TWO