Why Your Textures Look Different in Unreal Engine vs Substance Painter: Color Space Guide
If you’ve spent hours texturing a prop in Substance Painter, only to open it in Unreal Engine 5 and find the colors look completely wrong, washed out, too dark, or shifted, you’re not alone. This is one of the most common issues for game artists, and it has a specific technical cause: Color Space.
In this guide you’ll learn exactly what Color Space is, why Substance Painter and Unreal Engine interpret colors differently, and how to configure both programs to get consistent, physically accurate results across your entire pipeline.
What Is Color Space?
Color Space is a mathematical model that defines how color values are stored and interpreted. The same numerical value (e.g. 0.5) can represent a very different actual color depending on which color space is used to decode it.
The two most important color spaces in a game art pipeline are:
- sRGB: Standard color space for monitors and most image files. It applies a gamma curve that makes mid-tones look brighter to the human eye.
- Linear: Raw light values with no gamma correction. This is what physically based renderers, like Unreal Engine’s, use to calculate lighting correctly.
Why Do Substance Painter and Unreal Engine Disagree?
By default, Substance Painter displays and exports textures in sRGB color space. It applies gamma correction so that colors look good on your monitor. The problem is that not all texture types should be treated as sRGB.
Unreal Engine 5 works in linear space for lighting calculations. When it imports a texture, it needs to know whether to apply gamma correction or not. If you get this wrong, your colors will be off, sometimes dramatically.
Which Textures Use Which Color Space?
This is the key rule every game artist must memorize:
| Texture Type | Color Space | Reason |
|---|---|---|
| Base Color / Albedo | sRGB | Contains visual color information |
| Normal Map | Linear (sRGB OFF) | Stores directional vectors, not colors |
| Roughness | Linear (sRGB OFF) | Scalar value, not color |
| Metallic | Linear (sRGB OFF) | Scalar value, not color |
| AO / Cavity | Linear (sRGB OFF) | Scalar value |
| Emissive | Linear or sRGB | Depends on workflow |
How to Set Up Substance Painter Correctly
When you create a new project in Substance Painter, use the “Unreal Engine 4 (Allegorithmic)” template, it’s still the most compatible option for UE5. This automatically configures the export presets to match what Unreal Engine expects.
Key settings to verify:
- Under Edit > Project Configuration, set Normal Map Format to DirectX (green channel up)
- Use the Metallic/Roughness PBR workflow
- Export with the Unreal Engine 4 (Packed) preset, which packs Roughness, Metallic and AO into a single texture
How to Set Up Unreal Engine 5 Correctly
In Unreal Engine 5, when you import your textures, check the following for each texture in the Texture Editor:
- Base Color:
sRGB = ON, Compression:BC1/BC3 - Normal Map:
sRGB = OFF, Compression:Normalmap (BC5) - ORM (Occlusion/Roughness/Metallic):
sRGB = OFF, Compression:Masks (BC4/BC5)
UE5 will often auto-detect these settings based on the texture suffix, which is another reason to follow naming conventions like _D for diffuse, _N for normal, _ORM for packed masks.
Quick Checklist: Color Space Pipeline
- ✅ Use Unreal Engine template in Substance Painter
- ✅ Normal Map set to DirectX format
- ✅ Export with Metallic/Roughness workflow
- ✅ Base Color → sRGB ON in UE5
- ✅ Normal + ORM → sRGB OFF in UE5
- ✅ Use consistent naming conventions for auto-detection
Once you get this right, your textures will look identical between Substance Painter and Unreal Engine 5, and your renders will finally match your artistic intent.
