PBR Volume 02 Rev05
PBR Volume 02 Rev05
PBR Volume 02 Rev05
by Allegorithmic - vol. 2
Light and Matter : Practical guidelines for creating PBR textures
Cover by Gaëtan Lassagne, written by Wes McDermott
Table of Contents
• What is PBR? - 3 • Maps common to both workflows - 18
Creation Guidelines - 16
Creation Guidelines - 17
Figure 01
1. It can be easier to create realistic assets as it removes the guesswork of authoring surface attributes such as
specularity since the methodology and algorithms are based on physically accurate formulas.
2. Assets will look accurate in all lighting conditions.
3. Provides a workflow for creating consistent artwork, even between different artists.
We as artists need to think differently about the maps that describe the
attributes of a surface. There are new map types with rules and guidelines
to follow.
Metal/Roughness Workflow
The metal/roughness workflow is defined
through a set of channels, which are fed as
textures to a sampler in the PBR shader. The
maps specific to the metal/roughness
workflow are base color, metallic and
roughness as shown in figure 02 and we will
discuss each of these map types in the sub-
sections below. The PBR shader will also
utilize ambient occlusion, normal and possibly
height for parallax mapping as shown in
figure 03. These map types are common to
both workflows and will be discussed in the
"Maps common to both workflows" section.
In the metal/roughness workflow, the
reflectance value for metals are placed in the
base color map along with the reflected color
for dielectrics and the reflection at grazing Figure 02
The reflectance value for metals are placed in the base color map along
with the reflected color for dielectrics
Figure 04
Some metal/roughness
implementations such as those found
in the Substance toolset and Unreal
Engine 4 have a specular control,
which allows the artist to change the
constant F0 value for dielectrics. In
Substance, this output is labeled as
"specularLevel" and is supplied by a
texture sampler in the metal/
roughness PBR shader. It represents
the range of 0.0 - 0.08 as shown in
Conversions from sRGB to linear were done using the gamma 2.2
figure 05. This range is remapped in Figure 05 approximation. See linear space rendering in Vol.1 for more details.
the shader to 0.0-1.0 where 0.5
represents 4% reflective
If you need to manually set the F0 for a dielectric, you can do so using the "specularLevel" output in the Substance
graph within Substance Designer as shown in figure 06. We will discuss F0 for dielectrics in depth in the specular/
glossiness workflow as you have full control over F0 in the specular workflow.
Figure 06
Figure 09
2. Base color should be devoid of lighting information with the exception of micro-occlusion.
3. Dark values should not go below 30 sRGB (tolerant range) - 50 sRGB (strict range).
5. Reflectance for raw metal is going to be high in the range of 70-100% specular, which we can map to 180-255
sRGB.
As you will read in the Metallic section below, the base color also can contain metal reflectance values. If dirt or
oxidation is added to the base color, then this will cause the metal reflectance value to be lowered to a range that
should not be considered as raw metal. The addition of dirt or oxidation must also be accounted for in the metallic
map. The metallic map value must then also be lowered in these areas to denote it is no longer being considered as
raw metal. For example, in figure 10 you can see that rusted metal is treated as dielectric and set to black in the
metallic map.
The metallic map operates similarly to a mask as it tells the shader how it
should interpret data found in the base color.
Figure 10
Creation Guidelines
Metal surfaces have two important aspects as it relates to texturing, which are that their reflectance values are going
to be high in the range of 70-100% specular and some metals can be corroded. We will look at these two aspects
individually as we discuss the creation guidelines.
For metal areas that fall in this range, they will need to have a reflectance
range of 70-100% reflective
Raw Metal
The metal map is to be authored
as 0 or 1, metal or not, and is
used to define a raw, polished
metal state. As a general guide,
the grayscale range for raw metal
will be defined as 235 – 255 sRGB
in the metal map. For metal areas
that fall in this range, they will
need to have a reflectance range
of 70-100% reflective in the base
color map which we can map to
180-255 sRGB as shown in figure
12. Again, these values are based
on real-world measured data.
Figure 12
1. Black (0.0) is non-metal and white (1.0) is metal. There can be transitional grayscale values to account for
oxidation or dirt.
2. If metal map has values lower than 235 sRGB, then the reflectance value needs to be lowered in the base color
map.
Figure 18 Figure 19
Creation Guidelines
1. Texel density and resolution impact the white edge that can appear in the metal/roughness workflow. Be sure
that your UVs provide an adequate density to match the document resolution to minimize artifacts.
Pros
1. Can be easier to author and less prone to errors caused by supplying incorrect dielectric F0 data.
2. Uses less texture memory, as metallic and roughness are both grayscale maps.
3. Seems to be a more widely adopted workflow.
Cons
1. No control over F0 for dielectrics in map creation. However, most implementations have a specular control to
override the base 4% value.
Just as with the base color map from the metal/roughness workflow, the diffuse map contains albedo color. However,
it doesn't contain any reflectance values.
Creation Guidelines
The diffuse map is only albedo color. The areas that indicate raw metal will be black (0.0) because metal doesn't have
a diffuse color as shown in figure 22. In the case where oxidation has occurred, the metal area would contain color, as
it’s no longer treated as raw metal. The same is true for dirt or other effects that create a dielectric layer over the raw
metal.
The guidelines for the diffuse map in terms of tonality are the same as the base color map. However, the exception is
that if raw metal is present, then a value of 0.0 (black) is allowed and it is not governed by the guidelines for the
darkness ranges.
1. Color represents albedo for non-metal materials and black (0.0) for raw metal.
2. Base color should be devoid of lighting information with the exception of micro-occlusion.
3. Dark values should not go below 30 sRGB (tolerant range) - 50 sRGB (strict range) except black for raw metal.
Creation Guidelines
Since the specular map contains the F0 value for both metals and non-metals, we will break the map into a separate
category for each material type.
Raw Metal
The F0 value should be based on real-world data. Just as we covered in the metallic map, the reflectance for raw
metal will need to be lowered if there is oxidation or some layer that indicates non-metal. In the case of the specular/
glossiness workflow, dirt or oxidation will raise the diffuse color for raw metal in the diffuse map and lower the
reflectance value in the specular map as shown in figure 24. (IMAGE) Also shown in figure 24 is an example of a dirt
layer on raw metal. The dirt in the specular map contains the appropriate F0 value for dielectric. In this case, I am
using 0.04 or 4%.
Dielectric
The F0 for dielectric materials is authored in the specular map as well. Here you have full control over the F0 value,
however, it is important to use the correct data. As we discussed in Volume one, non-metals (insulators/dielectrics) are
poor conductors of electricity. The refracted light is scattered and/or absorbed (often re-emerging from the surface)
and thus they reflect a much smaller amount of light than metals. We stated that the value for common dielectrics
would be around 2-5% based on the F0 as computed by the index of refraction (IOR). With the exception of
gemstones, the F0 can be within the 0.02-0.05 (linear) range for common dielectric materials as shown in figure 25. In
terms of sRGB, we are looking at a scale of values between 40-75 sRGB, which overlap the linear 0.02-0.05 (2-5%)
range.
If you can't find an IOR value for a specific material, you can use 4% (0.04 - plastic). Gemstones are an exception and
they have a range of 0.05-0.17 (linear) as was shown in figure 21. In the metal workflow, the shader is mapped to a
range of 0.0-0.08 (linear) when using the specularLevel channel as zero is needed to represent air as shown in figure
25.
Figure 25 Conversions from sRGB to linear were done using the gamma 2.2
approximation. See linear space rendering in Vol.1 for more details.
Figure 26
Creation Guidelines
The document resolution and texel density have a direct impact on the
visibility of edge artifacts
Creation Guidelines
1. Texel density and resolution impact the black fringe that can appear in the specular/glossiness workflow. Be sure
that your UVs provide an adequate density to match the document resolution to minimize artifacts.
Cons
1. Because the specular map provides control over dielectric F0, it can be more susceptible to incorrect values being
used. It is possible to break the law of conservation if it is not handled correctly in the shader.
3. Can be more confusing as it uses similar terminology to traditional workflows but requires different data. Also it
requires more knowledge of physically based guidelines e.g. correct F0 for dielectrics, black for raw metal diffuse
color and possible energy conservation if not handled in the shader.
Figure 30
Height
A height map is often used for
displacement in rendering and with
PBR, it can be used for parallax
mapping which helps to add more
apparent depth and thus greater
realism to normal and bump mapping
as shown in figure 32. Substance
Designer uses the relief mapping
parallax algorithm. The height is
supplied by a texture sampler in the
PBR shader and is also an option
channel. In Substance Designer, the
effect can be controlled using the
relief parameter on the shader as Figure 32
also shown in figure 32.
Height can be used for parallax mapping which helps to add more
apparent depth and thus greater realism
Creating Height
Similar to AO, height can be baked in Substance Designer from a mesh using the integrated baking toolset. In
addition, there is a normal to height node for converting height from a normal map as shown in figure 33.
Bitmap2Material can be used to generate height from a source image as shown in figure 34. You can even paint
height data using vector or bitmap painting tools in Substance Designer. However, the best method for painting height
is by using Substance Painter to paint detail directly on the 3D mesh as shown in figure 35.
Bitmap2Material can be
used to generate height
from a source image
Figure 34
Figure 35
Creating Normal
A normal map can be baked in Substance Designer from a mesh using the integrated baking toolset. In addition, there
is a normal node for converting height into a normal map as shown in figure 36. Bitmap2Material can be used to
generate a normal from a source image as shown in figure 37. You can paint height data using vector or bitmap
painting tools in Substance Designer and convert them to normal data using the normal node. Height data painted in
Substance Painter can be exported as a normal map and you can paint normal data direclty as well.
Figure 36
Bitmap2Material can
be used to generate
normal from a source
image
Figure 37
Materials
Bitmap2Material 3
B2M 3 is a standalone app (Indie/Pro) or packaged Substance material (Pro Only) that creates PBR maps for metal/
roughness or specular/glossiness workflows from a single source image input. It can create tileable maps and excels at
creating albedo (using its light cancelation functions), normal and height maps. It is a great utility for creating base
textures for materials as shown in figure 38.
Figure 38
This node is a utility for creating a full base material and can be found in the Substance Designer Library under
Filters>PBR Utilities as shown in figure 39. It supports both metal/roughness and specular/glossiness workflows. It
provides common presets for raw metal materials and also allows you to set the dielectric albedo if creating a non-
metal. There are controls for
roughness and glossiness depending
on the workflow, which also have a
grunge amount option. Alternatively,
you can choose to add custom map
inputs which works well if you are
importing base maps created in
Substance Painter. Using this
method, you can quickly create a
material node that can be blended
with other materials.
Figure 39
Substance Designer and Substance Painter ship with PBR calibrated materials. They are a combination of procedural,
hand painted and photo generated materials compiled into the Substance format. As Substance materials, they can
have the benefit of being dynamic with various parameters for controlling different aspects of the texture. They
provide a fast and efficient method for working with PBR content without having to author the maps from scratch.
In Substance Designer, the Substances can be found in the Library under PBR Materials. There is also a set of hand-
painted PBR materials provided by Gametextures.com. You can download the extra Gametextures.com PBR
Substances from your Allegorithmic account.
In Substance Painter, the Substances are found in the Material tab on the Shelf. There is also a set of materials from
Gametextures.com as well. The Gametextures.com materials can be downloaded from your Allegorithmic account and
installed to the Material tab.
In addition to the content provided with Substance Designer and Substance Painter, the Substance Database contains
a vast amount of PBR calibrated materials, which also are a combination of procedural, hand painted and photo
generated materials compiled into the Substance format.
Reflectance Values
Dielectric F0
This node outputs F0 values for common dielectric materials as shown in figure 40. You can choose from preset values
and it also has an IOR input field that takes an IOR and computes the F0 value. It was designed for dielectric
materials and can be used with the specular/glossiness workflow.
Figure 40
Video walkthrough available at
http://www.allegorithmic.com/
pbr-guide
Metal Reflectance
This node outputs reflectance values for common raw metal materials and it can be found in the Substance Designer
Library under Filters>PBR. You can choose from several preset metal values as shown in figure 41.
Correction
PBR Metal/Roughness Validate
This node is designed to work with the metal/roughness workflow and is a utility which checks for incorrect values for
the base color and metal maps as shown in figure 42. It can be found in the Substance Designer Library under
Filters>PBR and the node outputs a heat map moving from red->yellow->green where red is incorrect and green/
yellow is correct. With metal, it checks the corresponding F0 values in the base color for areas indicated as metal in
the metallic map (greater than 235 sRGB). The heat map displays the range in which the F0 range may be too low.
For the albedo, it checks to see if dielectric brightness ranges are correct.
This node corrects values in the base color or diffuse maps as shown in figure 43. It makes sure that values fall within
the corrected brightness ranges for dielectrics. It can be found in Substance Designer's Library under PBR Utilities.
Conversion
BaseColor_metallic_roughness_to_diffuse_specular_glossiness
This node converts maps from the metal/roughness workflow to specular/glossiness as shown in figure 44. It can be
found in Substance Designer's Library under PBR Utilities.
Figure 44
Figure 45
Figure 46
Figure 47 Conversions from sRGB to linear were done using the gamma 2.2
approximation. See linear space rendering in Vol.1 for more details.
Figure 48 Conversions from sRGB to linear were done using the gamma 2.2
approximation. See linear space rendering in Vol.1 for more details.
In figure 50, you can see an example of maps created correctly and incorrectly using the specular/glossiness workflow.
All of the raw metal has too bright of a value in the diffuse map. It should be black. The dielectric paint and dirt layers
have too dark of an albedo value in the diffuse map. The dirt layer has too bright of an F0 in the specular map. The
dirt F0 doesn’t match the range for dielectrics.
Figure 49
Figure 50