All guides

Why packed ORM exists

One texture for occlusion, roughness and metallic — fewer samplers, a third of the VRAM, and a shader that Unreal already expects.

The packing

Unreal and glTF both treat ORM as R = ambient occlusion, G = roughness, B = metallic. ARM is the same pixels with a different name. RMA swaps the channels — confirm the material graph before you batch-convert a library.

VRAM

Three 4K BC7 maps with mips are ~64 MiB. One packed ORM is ~21 MiB. You also free two samplers, which matters on mobile and on dense master materials.

Invert roughness

Glossiness maps are 1 − roughness. Tick invert on that channel rather than rebuilding the map in Photoshop. The packer does it per pixel in the browser.

Tools for this task