Texture Channel Packer

Upload loose maps, a ZIP, or an MCPACK; assign any source component to R, G, B, or A; then export a lossless PNG or a documented package.

Free workflow: local processing and 256px or 512px export are included after sign-in. Mapper+ unlocks output above 512px.

Start the browser workflow

Privacy: image decoding, archive inspection, channel processing, and package creation run in the browser.

What does a texture channel packer do?

A texture channel packer copies a chosen component or grayscale value from separate source maps into the red, green, blue, and alpha components of one image. The preset is a shader contract: Unreal ORM and glTF ORM use R=AO, G=roughness, B=metallic; Unity HDRP Mask Map uses R=metallic, G=AO, B=detail mask, A=smoothness; Minecraft uses MER or MERS.

Supported channel-packing contracts

Supported channel-packing contracts
PresetChannelsImport requirement
Unreal ORMR AO, G roughness, B metallicDisable sRGB; use mask/data compression.
Minecraft MERR metalness, G emissive, B roughnessReference with metalness_emissive_roughness.
Minecraft MERSMER plus A subsurfaceResolve metal/subsurface overlap per pixel.
Unity HDRP Mask MapR metallic, G AO, B detail, A smoothnessDisable sRGB. Invert roughness for alpha.
glTF ORMR occlusion, G roughness, B metallicReference the same image from two glTF texture slots.

How to use Texture Channel Packer

  1. Load and confirm map roles

    Drop loose images, ZIP, or MCPACK. Filename detection is a suggestion, so confirm ambiguous files.

  2. Choose the destination contract

    Apply a preset, then override source file, component, inversion, or neutral constant for any channel.

  3. Inspect packed and isolated channels

    Review RGBA and each grayscale component, plus mismatch and resampling warnings.

  4. Download PNG or documented ZIP

    ZIP adds a machine-readable channel manifest, import README, and preset-specific metadata.

Texture Channel Packer FAQ

Can I upload a ZIP?

Yes. ZIP and MCPACK archives are CRC-checked and expanded locally, with map-count and expanded-size limits to avoid unsafe browser memory use.

What happens when maps have different sizes?

The largest active source defines the native output grid. Smaller inputs are resampled and named in the export manifest.

Should a packed map use sRGB?

Usually no. ORM, MER, MERS, and Mask Map channels are scalar material data and should be sampled as linear or non-color data.

How does glTF use one ORM image?

The same image is referenced by occlusionTexture and metallicRoughnessTexture; the first reads red and the second reads green and blue.

Primary technical sources