The 3D Handbook
Key term

Channel packing (ORM)

Storing several greyscale maps in the red, green, blue and alpha channels of one texture, such as occlusion, roughness and metallic (ORM). Covers the common layouts in Unreal, Unity (HDRP mask map, URP) and Godot, import settings, and the trade-offs.

materialstexturingoptimisation

Channel packing means storing several greyscale maps in the separate red, green, blue (and sometimes alpha) channels of one texture. The best-known layout is ORM: occlusion in red, roughness in green, metallic in blue. World of Level Design calls the same Unreal layout ARM: ambient occlusion, roughness, metallic (World of Level Design: How to Export Substance Painter Textures and…).

#Why pack

Most PBR maps are greyscale: ambient occlusion, roughness, metallic, height, masks. Storing each as a full RGB texture wastes two thirds of it. Packing three or four into one texture means fewer files, fewer texture samples in the shader and less memory. Godot calls its ORM texture "a more efficient replacement" for separate occlusion, roughness and metallic textures (Godot Engine: BaseMaterial3D).

Adobe's Unreal export preset is described as packing textures "with the lowest possible memory footprint" (Substance 3D Painter documentation: Default Output templates).

#Common layouts

A grid with columns R, G, B and A. Unreal's usual ORM row: occlusion, roughness, metallic, alpha free. Godot ORMMaterial3D: occlusion, roughness, metallic, alpha ignored. glTF 2.0: occlusion, roughness, metallic, alpha ignored. Unity HDRP mask map: metallic, occlusion, detail mask, smoothness, with metallic and smoothness highlighted in orange.
Unreal, Godot and glTF agree on ORM. Unity's HDRP mask map puts metallic first and stores smoothness, the inverse of roughness, in alpha.Diagram by the handbook author
Engine or format R G B A Source
Unreal Engine (usual ORM convention) Occlusion Roughness Metallic free World of Level Design (World of Level Design)
Godot ORMMaterial3D Occlusion Roughness Metallic ignored Godot class reference (Godot Engine)
glTF 2.0 Occlusion Roughness Metallic ignored glTF spec (Khronos Group)
Unity HDRP mask map Metallic Occlusion Detail mask Smoothness Unity HDRP manual (High Definition Render Pipeline manual 17.0)
Unity URP Lit Metallic Occlusion (if the same texture is also set as Occlusion Map) unused Smoothness ("Metallic Alpha") Unity URP manual and shader source (Unity Manual; Unity Graphics repository)

Notes on each engine and format:

#Import settings

Packed textures hold data, not colour, so import them as linear:

#Example

#Trade-offs

#Common mistakes

texture maps explained · texture formats, compression and mipmaps · roughness map · metallic map · ambient occlusion · master materials and instances · shaders for artists

#Further reading and watching

Shows how far packing can go, including the small cost to normal map quality; watch once the basic ORM layout is familiar. Watch on YouTube

References

  1. AlexG · How to Export Substance Painter Textures and Import into UE5 · World of Level Design, 2024 · article · accessed 2026-10-21
  2. Godot Engine contributors · BaseMaterial3D (class reference source) · Godot Engine (GitHub) · docs · accessed 2026-10-21
  3. Adobe · Default Output templates (export presets) · Substance 3D Painter documentation · docs · accessed 2026-10-21
  4. Khronos Group · glTF 2.0 Specification · Khronos Group (GitHub) · docs · accessed 2026-10-21
  5. Unity Technologies · Mask map and detail map (HDRP) · High Definition Render Pipeline manual 17.0 · docs · accessed 2026-10-21
  6. Unity Technologies · Lit shader material Inspector window reference for URP · Unity Manual (6000.2) · docs · accessed 2026-10-21
  7. Unity Technologies · LitInput.hlsl (URP Lit shader source) · Unity Graphics repository (GitHub) · docs · accessed 2026-10-21
  8. Godot Engine contributors · Standard Material 3D and ORM Material 3D (documentation source) · Godot documentation (GitHub) · docs · accessed 2026-10-21
  9. Epic Games · Texture Compression Settings (Unreal Engine 4.27) · Unreal Engine documentation, 2021 · docs · accessed 2026-10-21
  10. Nathan Reed · Understanding BCn Texture Compression Formats · Nathan Reed's coding blog, 2012 · article · accessed 2026-10-21
  11. Hugh Chew · Your Textures Are Killing Performance, Here's Why · YouTube, 2026 · video · accessed 2026-10-21

Also consulted

Last updated 2026-10-22