PBR Basics #

Before diving into the creation of PBR materials I should probably make it clear what all of that actually means. This section is not a hugely technical exploration but a small introduction.

PBR stands for Physically Based Rendering.

The term refers to the practice of using realistic (i.e. based on real physics) shading and lighting algorithms in 3D rendering in order to achieve the most photorealistic result possible.

PBR should be thought of as a general idea. There isn’t THE PBR standard that everyone follows, every software has it’s own implementation of the core concepts. However, most of them do it in similar ways which makes it easier to grasp once you understand the most important principles. That’s what this chapter attempts to do in a short and simple way.

The Core Concepts of PBR #

Specular & Diffuse Reflections #

The way light gets reflected of a surface can be described on a spectrum with two extremes:

A fully reflective surface reflects incoming rays in exactly the angle that they arrived. This is basically a mirror. This is also called a specular reflection.

A fully diffuse surface reflects an incoming ray of light in a fully random direction. A common real world example would be rough rubber. Just saying that the light gets reflected in all directions is actually not telling the whole story here. In reality the ray penetrates the surface, gets reflected inside it and then leaves at a different angle.

Color & Energy Conservation #

A part of the incoming light might also be absorbed and turned into heat. Which wavelengths of light are absorbed and which ones are reflected (diffuse or specular) defines the apparent color of the surface. One important thing to remember during all of this is that a material should never reflect more light than it received as our focus on real world physics does not allow that.

Microdisplacement (Roughness) #

Earlier we defined the difference between diffuse and specular reflections with “diffuse” generally meaning that the rays get reflected randomly in all directions and “specular” meaning that the light gets reflected at a perfect angle as soon as it touches the surface.

But this is again not the whole truth. A material can reflect all light in a specular manner but still create a blurry reflection. That’s because most surfaces aren’t perfectly flat, they have tiny bumps which are so small that you can’t see them with the naked eye. And yet they have an impact on the appearance of the material because they cause even the specular reflection to reflect its rays in all kinds of directions, creating the impression of a blur.

The intensity of these microdisplacements is referred to as roughness or (inversely) glossiness.

Diffusion, Specularity & Roughness by Example #

Below are several examples that show how diffuse reflections, specular reflections and roughness effect the reflections of light rays. Created using the Principled BSDF Shader in Blender.

1

2

3

4

5

6

Specularity vs. Metalness #

When using various 3D programs you see PBR being implemented in two different workflows: Specularity vs. Metalness. Let’s briefly explain the difference between these two approaches to PBR and why they aren’t completely different after all.

Earlier we defined that a surface can have different kinds of reflections (specular and diffuse). specularity- and metalness-focused implementations have different approaches for defining the properties and balance of these two types of reflections.

The Specular Workflow #

The specular workflow defines both the diffuse and specular reflections explicitly using two separate unique texture maps. The surface’s microdisplacements are encoded in a glossiness map.

This gives artists the highest level of control over the material. But it also has a downside: Within this workflow it is still possible to create physically impossible/illogical settings which can defeat the point of using PBR. In addition to that you are potentially wasting storage/memory capacities with duplicate maps.

The Metalness Workflow #

The metalness workflow uses a small “shortcut” to save resources and make the life of artists easier (at least in my opinion). The strength of microdisplacement is encoded in a roughness map (simply the inverse of the glossiness map).

It makes use of the fact that both non-metals (dielectrics) almost never have a strong specular component while metals never have a diffuse component. The metalness workflow stores both the specular and diffuse component in the same BaseColor map. The decision about whether the surface is diffuse or specular at a certain point is made using a separate Metalness map.

The biggest advantage of this approach is that most people find it a lot more intuitive. It also uses less storage/memory since the system only needs to manage one color map and one binary grayscale map.