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.

Add the scalar channel maps

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

  1. Add scalar maps

    Upload AO, roughness, and metallic images. Each source is reduced to luminance before it is written into its destination channel.

  2. Confirm roughness direction

    If the green source is smoothness or gloss, enable exact inversion before packing.

  3. Review dimensions and defaults

    The largest input sets the output pixel grid. Missing channels receive explicit neutral defaults instead of undefined data.

  4. 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.

Common packed material layouts
LayoutChannelsTypical use
ORMR = AO, G = roughness, B = metallicUnreal-style workflows and shared material pipelines
glTF metallic-roughnessG = roughness, B = metallic; occlusion is a separate texture referenceglTF 2.0 assets
Unity HDRP Mask MapR = metallic, G = AO, B = detail mask, A = smoothnessUnity HDRP
Minecraft MERR = metallic, G = emissive, B = roughnessMinecraft 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.