ORM maps explained (channel packing)

An ORM map is a memory-saving trick: instead of three separate grayscale textures for ambient occlusion, roughness, and metallic, you pack each into one color channel of a single image. ORM stands for Occlusion, Roughness, Metallic — in that channel order.

The short answer

Each of AO, roughness, and metallic is a grayscale (single-channel) map, so storing three as separate RGB images wastes two-thirds of the data. An ORM texture packs Occlusion into the red channel, Roughness into green, and Metallic into blue — one texture, one sampler, a third of the memory. It's the same data, just bundled.

Why channel packing exists

Grayscale maps only need one channel, but image files carry three or four. Packing three grayscale maps into one RGB texture cuts texture memory and the number of texture samples the GPU does per pixel.

That's a real performance win, especially in games and on the web where memory and bandwidth are tight.

What goes in each channel

The ORM convention is Occlusion in red, Roughness in green, Metallic in blue. Some pipelines tuck a height map or extra mask into the alpha channel.

Unreal Engine commonly uses ORM-style packing, and Godot 4 reads a packed ORM texture directly in StandardMaterial3D. Always confirm the exact channel order your target engine expects — conventions occasionally differ.

Authoring ORM maps

You author AO, roughness, and metallic as normal grayscale channels, then pack them at export time. You generally don't paint an ORM texture directly.

A tool like Mixos keeps each channel editable and can export them individually or assemble the ORM pack for engines that want it — so you never have to hand-shuffle channels in an image editor.

Frequently asked questions

What does ORM stand for?

Occlusion, Roughness, Metallic — packed into the red, green, and blue channels of one texture, respectively.

Why use an ORM map instead of three textures?

Memory and performance. Three grayscale maps stored as one RGB texture uses a third of the memory and fewer GPU samples, with no loss of data.

Which engines use ORM maps?

Unreal commonly uses ORM-style packing, and Godot 4's StandardMaterial3D reads a packed ORM texture directly. Always check the exact channel order your target expects.

Export individual channels or a packed ORM map for your engine — Mixos handles both, in the browser.

Start free