PBR (Physically Based Rendering) is a rendering method that aims to simulate realistic material properties in 3D graphics. With the rise of real-time engines such as Unity, Unreal Engine, and others, PBR has become the standard for game development and many other industries.
In this blog post, we’ll cover the basic principles of PBR and how to author materials that are PBR-correct.
Before we get into authoring PBR materials, it’s important to understand the principles behind PBR. PBR materials are based on real-world physics, meaning that they accurately simulate how light interacts with real-world materials. This is achieved by using a set of physical parameters known as the “PBR workflow.”
The PBR workflow consists of several parameters, including:
- Albedo: The base color of the material, which represents how much light the material reflects.
- Roughness: The amount of microsurface roughness of the material, which affects how much light is scattered.
- Metalness: The amount of metal in the material, which affects how much light is reflected.
- Normal map: A texture that simulates surface bumps and grooves to add depth and realism to the material.
Authoring PBR Materials
Now that we understand the principles behind PBR, let’s talk about how to author PBR materials. The first step is to choose the right tools. Most 3D modeling software comes with built-in PBR support, and there are also specialized texture creation tools like Substance Designer that are designed specifically for creating PBR materials.
Once you have the right tools, the next step is to create your textures. For each material, you’ll need to create an albedo map, roughness map, metalness map, and normal map. These maps can be created using a combination of hand-painting and texture generation tools.
When creating your textures, it’s important to keep the PBR workflow in mind. For example, the albedo map should represent the real-world color of the material, and the roughness map should be based on the microsurface roughness of the material. There are many online resources available that can help you understand how to create textures that are PBR-correct.
Once you have your textures, the final step is to apply them to your 3D models. This is typically done using a material editor, which allows you to adjust the various PBR parameters and apply your textures.
Albedo is a fundamental parameter in the PBR workflow. It represents the base color of a material and how much light it reflects. In the real world, materials have different albedo values based on their color and surface properties. For example, a white material will have a higher albedo value than a dark material, as it reflects more light.
When creating PBR materials, it’s important to choose the right albedo values to accurately represent the material you’re trying to simulate. Here are some general guidelines for choosing albedo values:
- Use real-world reference images: The best way to choose the right albedo values is to look at real-world reference images of the material you’re trying to simulate. This will give you an idea of the color and reflectivity of the material.
- Adjust for scale: The scale of your model can affect the perceived brightness of the material. If your model is very small, for example, you may need to increase the albedo value to compensate for the fact that it reflects less light.
- Keep it consistent: If you’re creating a set of materials for a project, it’s important to keep the albedo values consistent across all of the materials. This will help ensure that the materials look cohesive and realistic when they’re used together.
- Use a neutral gray reference: Another useful technique is to use a neutral gray reference image to compare the brightness of your albedo values. A neutral gray image has an albedo value of 0.5, which makes it a good reference point for comparing the brightness of other materials.
- Don’t forget about roughness: The roughness of a material can also affect its perceived brightness. A very rough material will scatter light in many different directions, which can make it appear less reflective than a smooth material with the same albedo value.
Ultimately, the right albedo value for a material will depend on a variety of factors, including its color, surface properties, and lighting conditions. By using real-world reference images, adjusting for scale, and keeping your values consistent, you can create PBR materials with accurate albedo values that look great in any lighting situation.
Natural Alebdo Values
There are no absolute black and white materials in real life. For instance, fresh snow has an albedo value of around 0.8 or 0.9, whereas something such as asphalt has an albedo of around 0.4. PBR materials will not render correctly if there is an absolute value of 1 or 0. Here are examples of albedo values for some comment materials.
- Fresh snow: 0.8 – 0.9
- Sand: 0.4 – 0.6
- Grass: 0.2 – 0.3
- Concrete: 0.5 – 0.6
- Asphalt: 0.1 – 0.2
- Dirt: 0.1 – 0.2
- Water: 0.05 – 0.1
- Wood: 0.1 – 0.3
- Metal: 0.6 – 0.8
It’s possible to find examples of many more physically correct material values online.
Keep in mind that these are just general guidelines and that the exact albedo values for any given material can vary depending on a number of factors such as the specific type of material, lighting conditions, and environmental factors. It’s always a good idea to use real-world reference images to help guide your choices when creating PBR materials.
The metalness value is another important parameter in the PBR workflow that determines whether a material is metallic or non-metallic. In PBR, metals have different reflective properties compared to non-metals, and as a result, they require a separate approach when it comes to texturing and shading.
Metalness is usually represented as a grayscale value between 0 and 1, with 0 indicating a completely non-metallic material (i.e., a dielectric material), and 1 indicating a fully metallic material. When creating a PBR material, the metalness value can be set to control the degree to which the material behaves like a metal or non-metal.
To be completely realistic a material should have either a value or 1 or 0, as a material can only be a metal or not a metal, however for the sake of making something look good rather than technically correct, you can play with a grey value instead.
Here are some general guidelines for setting the metalness value of a PBR material:
- Use reference images: As with albedo values, reference images are essential for determining the correct metalness value for a material. For example, a material such as gold or copper will have a high metalness value, while materials such as wood or stone will have a low metalness value.
- Consider the surface of the material: The metalness value should also be adjusted based on the surface properties of the material. A metal should have a high metalness value while all other materials should have a low metalness value.
- Use a metalness map: Some 3D modeling and texturing software allows for the creation of a metalness map, which can be used to control the metalness value of specific areas of a material. This can be particularly useful for creating materials with areas of varying metalness, such as a metal object with rust or wear. A simple number in the shader can be used if an object is entirely of one material, normally an object with no metalness, rather than a map as this improves performance.
- Consider the lighting: The metalness value can also affect the way that a material reacts to lighting. Metallic materials will have a more reflective surface and will show more specular highlights, while non-metallic materials will absorb more light and will have a more diffuse appearance.
When setting the metalness value of a PBR material, it’s important to keep in mind that it should be used in conjunction with other material properties such as albedo, roughness, and normal maps to create a realistic and believable material. By using reference images, considering the surface of the material, and using a metalness map where appropriate, you can create PBR materials with accurate and compelling metalness values.
Authoring PBR materials can be a complex process, but it’s an essential part of creating realistic 3D graphics. By understanding the principles behind PBR and following the PBR workflow, you can create materials that accurately simulate real-world physics and add depth and realism to your 3D models. With the right tools and a bit of practice, anyone can create PBR-correct materials that look great in real-time engines.