ORM texture packing (Occlusion, Roughness, Metallic) stores three linear grayscale maps in one RGB file so Unreal and Unity sample once instead of three times. It is a build step, not a look-dev step. This guide is the channel-order cheat sheet for both engines, plus how to pack Locker3d’s separate maps without destroying roughness.

Why channel packing exists
Albedo needs RGB color and sRGB. Roughness, metalness, and ambient occlusion are single-channel and linear. Packing those three into one texture cuts sampler count and memory on mobile, VR, and large Unreal levels. Normals stay in their own file (they need three vector channels). Height usually stays separate because many materials never displace. If the slots are new, read the complete PBR textures guide before you merge anything. Never pack albedo into the ORM: you would force one color space and one compressor on color and data.
Unreal ORM: R occlusion, G roughness, B metallic
Unreal’s frequent convention is ORM: red = ambient occlusion, green = roughness, blue = metallic. In the material, sample the packed texture with sRGB off, then split the channels. Some studios swap AO and metallic—write the order in a comment on the master material. Use BC7 or another format that keeps channels independent. BC1/DXT1 will smear roughness into metalness and you will get sparkling metal on concrete. Do not generate mipmaps as if the texture were sRGB. After packing, test a chrome sphere and a matte concrete that share the same ORM file; if concrete picks up metal flecks, the blue channel leaked.
Unity URP versus HDRP mask maps
URP often still uses separate maps or a custom pack you define. HDRP’s Mask Map is not ORM. A common HDRP layout is metallic (R), occlusion (G), detail mask (B), and smoothness (A). Smoothness is the inverse of roughness. If you pack Locker3d roughness into a Unity smoothness channel without inverting, every surface will look wet or dusty. Confirm the current HDRP docs for your editor version before you batch-convert a library. URP Shader Graph can unpack any order you choose—just label the subgraph.
- Unreal ORM: R AO, G roughness, B metallic; sRGB off.
- HDRP Mask: often metallic, AO, detail, smoothness; invert roughness.
- Keep albedo (sRGB) and normal (linear) as their own textures.
- PNG or TGA for the packed file; avoid JPEG banding.
How to pack from separate Locker3d maps
Locker3d gives you individual CC0 files. Keep them separate until the look is approved. To pack, composite in an image editor or Blender’s Compositor: AO → R, roughness → G, metallic → B (or white/black if the material is a pure dielectric). Save one RGB PNG. In Blender look-dev, you can still use separate Image Texture nodes; if you must preview an ORM, add Separate Color and route the channels. Wiring habits: how to apply PBR textures in Blender. Wood and stone should have a black metallic channel. Raw metal should be white where the surface is still metal.
When packing helps—and when it hurts
Pack for a game cook, a mobile budget, or an engine function that expects a mask. Do not pack while you are still swapping roughness files. Offline Cycles archviz often gains nothing; disk is cheap and separate 4K maps are easier to color-correct. If you tile a packed map, every channel must wrap. Related packing notes: PBR texture packing.
CC0 sources and a documented pipeline
Pull maps from the Locker3d catalog—metal, concrete, wood. Packing inside your game build is allowed under CC0; you still cannot claim the original scans. Details: CC0 textures: what you can and cannot do. Write the channel order in the material comment so the next artist does not swap G and B six months later. More pipeline posts: blog.
Frequently asked questions
What is the Unreal ORM channel order?
Unreal’s common ORM layout is R = ambient occlusion, G = roughness, B = metallic. Document that order in the material. Do not assume Unity uses the same channels.
Does Unity HDRP use the same ORM packing as Unreal?
No. HDRP Mask Map often stores metallic, AO, detail mask, and smoothness (not roughness) in a different order. Convert roughness to smoothness (1 − roughness) before you pack for HDRP.
Do Locker3d downloads come as ORM files?
No. Locker3d ships separate CC0 maps so any engine can read them. Pack ORM or a Unity mask in your pipeline after the material is approved.