sRGB vs Linear
Colour-space encoding for textures
Also known as: Linear color space · sRGB color space · Gamma
Definition
sRGB is the gamma-corrected colour space monitors display in; linear is the colour space in which lighting math is correct. Albedo and other colour-data textures store values in sRGB; normal, roughness, metalness, masks, and data textures must be flagged as linear because they store numeric values, not colour. Tagging a normal map as sRGB silently corrupts every bump on every surface — one of the most common beginner texturing bugs.
In production
In UE5: Texture asset → Compression → sRGB checkbox. Tick it for albedo/diffuse, untick for everything else. Unity uses the same pattern in its Texture Importer's "sRGB (Color Texture)" toggle. Tagging a normal map as sRGB silently corrupts every bump on every surface — one of the most common beginner texturing bugs — because the engine applies a gamma decode curve to what are actually linear XYZ vector values, flattening steep normals and exaggerating shallow ones. The same mistake on a roughness or metalness mask shifts material response across the entire asset, often making metal look plastic-y or vice versa, and is notoriously hard to spot without a dedicated debug view. Substance Painter and Substance Designer both default export presets to the correct colour space per channel, but re-importing a manually exported PNG without checking the flag is a frequent source of bug reports.
Learn sRGB vs Linear in
Tools that use sRGB vs Linear
See also
Albedo
Base colour without lighting
Normal Map
Per-pixel surface detail
PBR
Physically Based Rendering
Channel Packing
One texture, multiple maps
Normal Map Compression Settings in Unreal
Why Unreal textures look blocky or wrong
Textures Look Different in Unreal Than in Substance Painter
Why the same maps shade differently
Washed-Out Colors in Unity
Scene looks too bright, flat or too dark
Texture Import Settings
How Unity processes an imported texture