Texturing

Channel Packing

One texture, multiple maps

Also known as: ORM packing · Texture packing

Definition

Channel packing is the practice of storing multiple grayscale maps inside the R, G, and B channels of a single texture, reducing texture lookups in the shader and saving GPU memory. The most common scheme is ORM: Occlusion (R), Roughness (G), Metalness (B). Glossiness or height can take the alpha channel.

In production

Pack at export time using Substance Painter's "Channel Pack" preset or via a Photoshop action. The engine's material then samples one ORM texture and unpacks each channel into the right input — three operations replaced by one, multiplied across millions of pixels per frame. Unreal Engine 5's default material template expects this exact ORM layout, while Unity's URP/HDRP Lit shader instead favors a Metallic-Smoothness pack with the smoothness value inverted from roughness in the alpha channel, so assets moving between engines often need a re-pack rather than a straight texture copy. A common mistake is packing channels that need different colour spaces into the same file: albedo must stay in sRGB while roughness, metalness, and AO must be sampled as linear data, so packed masks are always exported as an untagged linear PNG or TGA with the engine's texture import settings set to treat it as non-colour data. Getting this wrong silently gamma-corrects the mask channels and shifts every roughness and metalness value in the scene.

Learn Channel Packing in

Tools that use Channel Packing

See also