Texturing

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