If you've used other texture sites, you may be used to seeing just 1 image texture. So why does Poliigon have all these extra images? What do they do?
In this document we will talk about different types of textures and how they are encoded. Please refer back to this key as needed to better understand intent.
-sRGB: This is a 8 bit map that uses R,G,B colors to recreate the hue of an image
-RGB: This is an unprocessed R,G,B image that requires higher quality and is used for data driven maps
-Linear 8: Refers to a black and white image that has 8 bits to represent an image.
-Linear 16: Refers to a black and white image that has 16 bits and is able to more accurately represent the data being encoded.
Poliigon authors our assets using one of two authoring techniques in a Physically based pipeline. Those two techniques are the Metallic/Roughness workflow or the Specular/Glossiness workflow.
They ultimately do the same thing, its just that one technique is more widely used because of memory optimizations you can utilize in a realtime setting.
So lets get into better understanding the maps provided by Poliigon.
(labeled as '_COL' in our texture map files)
The color map is an sRGB map that represents the diffuse reflected color for dielectrics and the reflectance values of metals. The best way to think about the color map is that its the hue of the object with all lighting directionality removed from the image. In a PBR pipeline Color, BaseMap, Albedo and Diffuse are synonyms to mean the same thing. This map changes depending on how its used in the Metalness workflow or the Specular workflow.
Normal (aka Bump)
(labeled as '_NRM' in our texture map files)
The normal map is an RGB map we use to fake 3d dimensions within a 2d texture. Each value you see in this purple map represents a different axis or direction. This allows an object to feel like it has more detail, when in fact its an illusion that is not represented in the 3d model itself. This technique is typically known as ripping or baking in the industry.
(labeled as '_DISP' in our texture map files)
The displacement map is typically a Linear 16 bit map that fakes 3d dimensionality in a 2d texture. Displacement maps are more memory expensive than normal maps but also have the added benefit of being able to introduce and displace vertices on the fly.
In most cases this solution requires a shader that supports a tesselation algorithm to make full use of this technique. When a model is tesselated it now has more geometry throughout the model that can be displaced using this black and white image to push and pull those vertices.
For this to work and not result in performance slowdowns you will need a GPU that is able to process and displace them in a fast way. This is a great technique for increasing the visuals of assets up close but should be used sparingly.
Notice in the gif above that in contrast to the normal map, which does appear to fake some three dimensionality, the displacement map is actually displacing geometry, which can be easily observed at the edge of the sphere.
Reflection (aka Specularity)
(labeled as '_REFL' in our texture map files)
Reflection maps are sRGB maps and technically known in the industry as specular maps. Reflection maps are only used in the Specular/Glossiness workflow and contain color information only where metals reside aka the reflectance color. The reflection map always works in tandem with the color map to fully render an object. Color map in this case represents the albedo of non-metals while the reflection map represents the color of the metals.
Notice in the gif above that when we adjust the hue and value of the Reflection map, the color of the metal sections of the material change.
Gloss (or Roughness)
(labeled as '_GLOSS' / '_ROUGHNESS' in our texture map files)
The gloss map is a Linear 8 bit image that represents the smoothness of the object. This map will control how reflective a surface is and is typically where you want to spend most of your time authoring. Gloss and Roughness maps are the same texture, they just have inverted values depending on the workflow you use. Gloss for Specular workflow, and Roughness for Metalness.
(labeled as '_METALNESS' in our texture map files)
The metalness map is also a Linear 8 Bit image that represents if your model is a metal or non-metal. Unlike the Specular/Glossiness workflow that need two textures to represent these states, the Metal/Roughness workflow uses a singular map to do the same thing. If you see black that means that part of the image is a non-metal and if you see white it means that area is a metal. Its then up to the shader to determine how the light reacts. If something feels off, in all likelihood you have gray in your metal map, try updating the texture to black or white and you will solve your shading issues.
In the gif above, notice that when we adjust the values in the metalness map to entirely black, the material now resembles a dielectric; a non-metal.
(labeled as '_AO' in our texture map files)
Fakes self shadowing and how specular highlights impact the final render.
(labeled as '_MASK' in our texture map files)
Simulates how transparent an object is or where the lower poly model shouldn't render.
(labeled as '_EMISSION' in our texture map files)
Fakes how an object can glow. Typically found in lightbulbs.
We've covered the main types of maps, let's take a look at some of the additional ones that will be found on some of our materials.
Subsurface Scatter (_SSS): Fakes how light penetrates the surface of the model. Common in skin and other semi transparent objects. Some models contain a translucency map instead, which has a similar effect.
Fuzziness Map (_FUZZ): Used to change how the light reacts on the surface of the model at glancing angles. Most often used with fabrics, hence the name.