ORM Texture Packer
Pack ambient occlusion into red, roughness into green, and metallic into blue without sending the source maps off the device.
Channel sources to Packed ORM preview
Upload AO, roughness, and metallic maps; pack them into R, G, and B; preview each channel; convert smoothness when needed; and download a PNG.
Privacy: image decoding, pixel processing, preview, and PNG download run locally in the browser.
What is an ORM texture?
An ORM texture stores ambient occlusion in the red channel, roughness in green, and metallic in blue. Packing three scalar maps into one RGB image can reduce texture samples and file management when the destination material expects this exact layout. The packer rescales smaller inputs to the largest selected pixel grid; missing AO defaults to white, roughness to mid-gray, and metallic to black.
- Red
- Ambient occlusion
- Green
- Roughness
- Blue
- Metallic
- Import
- Linear / non-color
How to use the ORM Texture Packer
Add scalar maps
Upload AO, roughness, and metallic images. Each source is reduced to luminance before it is written into its destination channel.
Confirm roughness direction
If the green source is smoothness or gloss, enable exact inversion before packing.
Review dimensions and defaults
The largest input sets the output pixel grid. Missing channels receive explicit neutral defaults instead of undefined data.
Download and bind by contract
Import the PNG as linear data and connect R, G, and B to the slots expected by the destination material.
Common packed material layouts
Channel packing is a contract, not a universal image meaning. Confirm the destination before export.
| Layout | Channels | Typical use |
|---|---|---|
| ORM | R = AO, G = roughness, B = metallic | Unreal-style workflows and shared material pipelines |
| glTF metallic-roughness | G = roughness, B = metallic; occlusion is a separate texture reference | glTF 2.0 assets |
| Unity HDRP Mask Map | R = metallic, G = AO, B = detail mask, A = smoothness | Unity HDRP |
| Minecraft MER | R = metallic, G = emissive, B = roughness | Minecraft Bedrock RTX texture sets |
ORM Texture Packer FAQ
Do the three input maps need the same dimensions?
Matching dimensions are best. This tool uses the largest selected input as the output grid and resamples smaller files, while reporting the dimension mismatch for review.
What happens when a channel is missing?
Missing AO becomes 255, missing roughness becomes 128, and missing metallic becomes 0. Those defaults mean no baked occlusion, medium roughness, and dielectric material.
Can I pack a smoothness map into green?
Yes. Select Smoothness input and the packer writes 255 minus the source value into the roughness channel.
Should an ORM texture use sRGB?
No. Every ORM channel stores scalar material data, so the packed texture should normally be imported as linear or non-color data.