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
- PBR Channel Packer — Pack occlusion, roughness, and metallic into one texture.