- Substance 3D home
- Ecosystems and Plugins
- Home
- Game Engines
- Unreal Engine
- Unreal Engine 5
- Unreal Engine 5 overview
- Unreal Engine 5 Release Notes
- Plugin Overview - UE5
- Plugin Settings - UE5
- Substance Input Image - UE5
- Material Instance Definition - UE5
- Material Template Usage - UE5
- Out-of-the-Box Material Templates
- Tiling Substance - UE5
- Substance 3D Plugin Default Templates
- Substance 3D Assets Library Usage - UE5
- Blueprints - UE5
- Unreal Engine 5 Scripting
- Installing to Source Builds
- Unreal Engine 5 overview
- Unreal Engine 4
- Unreal Engine 4 overview
- Unreal Engine 4 plugin release notes
- Unreal plugin 4.27.0.1
- Unreal plugin 4.26.0.21
- Unreal plugin 4.26.0.2
- Unreal plugin 4.26.0.1
- Unreal plugin 4.25.0.5
- Unreal plugin 4.25.0.4
- Unreal plugin 4.25.0.3
- Unreal plugin 4.24.0.3
- Unreal plugin 4.23.0.2
- Unreal plugin 4.23.0.1
- Unreal plugin 4.22.0.33
- Unreal plugin 4.22.0.32
- Unreal plugin 4.21.0.31
- Plugin Overview - UE4
- Plugin Settings - UE4
- Substance Input Image - UE4
- Material Instance Definition - UE4
- Tiling Substance - UE4
- Working with Bump Offset (Parallax) - UE4
- Working with Displacement - UE4
- Source in UE4
- Live Link in UE4
- Blueprints - UE4
- Unreal Engine 4 Scripting
- Unreal Engine 4 overview
- Unreal Engine 5
- Unity
- Unity overview
- Unity Release Notes
- Downloading Substance 3D Plugin in Unity
- Unity Plugin Overview
- Unity Preferences
- Optimization Guidelines
- Upgrading Projects/Known Issues
- Managing Substance Graphs
- Changing parameters
- Generated Textures (Packing)
- Rendering Color Space
- Using Image Inputs
- Publishing for Mobile
- Substance 3D for Unity Scripting
- Scripting in Unity (Deprecated)
- API Overview
- Scripting API
- C# Example Script
- Substance 3D Assets Library Usage
- Removing Substance Plugin
- Substance 3D in Unity Tutorials
- Physical Size in Unity
- Sharing sbsar Files Between Projects
- Unity overview
- Lumberyard
- Roblox
- Unreal Engine
- 3D Applications
- Maya
- 3ds Max
- MODO
- MODO overview
- Modo Plugin Release Notes
- Substance in MODO Overview
- Modo Installation
- Parameters
- Custom Materials
- Working with Normals
- Working with Emissive
- Bump and Displacement
- Working with References
- Animating Substances
- Copy/Duplicate Substance
- Environment and Rendering Setup
- Modo Switch Engine
- Tiling Modo textures
- MODO overview
- Cinema 4D
- Houdini
- Blender
- Blender overview
- Release Notes
- Substance in Blender Overview
- Downloading and Installing the Plugin
- Preferences
- The Substance 3D Panel
- Shortcuts and Navigation
- Workflows
- Physical size in Blender
- Substance 3D Assets Library
- Troubleshooting
- Uninstalling the Add-on
- Substance 3D Add-on for Blender Tutorials
- Blender overview
- Creative Cloud Applications
- Renderers
- Partnerships
Color Management
We will take a simplistic approach in stating that linear space rendering provides the correct math for lighting calculations. It creates an environment that allows light interactions to be represented in a credible real-world manner. For a discussion on linear space rendering, we must introduce the concept of gamma correction. When encoding images for display and storage purposes, gamma correction is the optimization process of reducing bandwidth and bit allocation. This process leverages the human eye’s perception of brightness, which approximately follows the cube root of luminance.
Linear space rendering is a highly complex subject. For more information, please take a look at the free PBR GUIDE VOLUME ONE on Substance Academy.
Color Management
The purpose of this document is to detail the process of working with textures exported from Substance Painter and Substance Designer in 3D software and renderers.
The correct way to interpret an image used as an input to a material channel depends on how the image is used in the scene. The color space, encoding and whether the color values are proportional to scene-referred luminance or display-referred luminance also plays an important role.
- Images used to represent non-color data should not be transformed. These are typically, normal, roughness, metallic, displacement and ambient occlusion maps.
- Images that represent color that we see can have multiple scenarios. For example, images that are already scene-linear typically do not need to be converted such as high-dynamic range images stored in formats like OpenEXR and HDR.
- Images that were created for display (display-referred) will need to have their gamma removed. These include most formats such as PNG, JPEG and BMP. These images are base color, diffuse, specular and emissive.
While this is an over simplification, it can be helpful to think of the process as follows:
- "scene-referred (ex. linear)" : Don't apply a conversion
- "display-referred (ex. sRGB)" : Apply the inverse transform to "linearize" the image for proper calculation
The sRGB decoding function (EOTF) converting from gamma space to linear space is used in Substance Painter and Substance Designer, and is defined by the IEC 61966-2-1:1999 Standard
Substance Designer can be configured to use OpenColorIO for Color Management. This allows you to have consistent color transforms and image display across multiple applications. In this mode, Substance Designer will work internally with linear RGB colors. Since 8-bit depth is usually not enough to represent linear colors, it is recommended to use at least 16-bit depth for color textures in the graph.
When we introduced ACES, we now have two different color spaces, the linear sRGB (the no gamma version of sRGB) and ACEScg, which is a wide-gamut ("scene-referred" or linear) color space better suited for CG rendering.
Gamut plot graphic - https://acescolorspace.com/
Substance Designer also supports Adobe Color Engine (ACE). With ACE, you can choose your working color space between sRGB, linear sRGB and ACEScg. When using sRGB, ACE is pretty much the same as legacy mode. When using a linear color space, ACE is more or less like OpenColorIO.
Substance plugins
When using Substance materials via the Substance Integration plugin, outputs are flagged for linear/gamma automatically via the integration and the host application’s color management. However, it’s important to understand the process: when Substance maps are used as exported bitmaps rather than Substance materials, you may need to manually flag the textures as gamma-encoded or raw depending on the renderer you are using. Usually 8 or 16 bit .png, .jpg, .tga or .tif files are gamma-encoded while sRGB OETF and .exr files are linear.