Channel Packing Clarification for Unreal 5?

  1. Hi all, I wanted your thoughts on how channel packing works in Unreal 5. I know the unreal standard is the ORMA structure (Occlusion, roughness, metallic, alpha / opacity). But I wanted to know if there are other variants of that or how it would work for color maps since channel packing is an RGBA map?

I ask this because I am also working on a projectwith Unity and their channel packing is completely different. With Unity:

R - Metallic

G - AO

B - Detail Mask

A - Smoothness

They also have a setup for detail texture maps using RGBA like so:

R - Albedo (desaturated)

G - Normal Y

B - Smoothness

A - Normal X

Hence why I ask what ORMA setup makes the most sense for unreal and if unreal has any additional setups similar to unreal for things like detail texture maps?

  1. On a separate note, I wanted to clarify my detail texturing setup. I’m creating a stylized hand painted environment and texturing with Substance Painter and Substance Designer. Currently I have a detail texturing setup for a previous project which simply has detail texturing as a toggle on all my materials. The toggle includes:
  • detail texture toggle

  • Detail albedo map + controls

  • Detail normal map + controls

  • Details roughness map + controls

2a. I don’t know if I need a detail

Roughness map at all or the detail albedo

2b. I also don’t know if it’d be better to pack all my detail textures together to save memory?

Thanks in advance and looking forward to your insight!

Channel packing in UE5 works in the same way as UE4 ( as far as I’m aware ). It’s definitely better to pack, otherwise you’re wasting 32 bits of data space representing 8 bits of data. Also, it cuts down the number of texture sample nodes you use in your material.

Apart from that, you can pack things in any order you fancy, because you’ll be writing the materials in the engine, and so can unpack in the same order :slight_smile:

The only time the order matters, is if you ( or others ) will be setting these textures as parameters for material instances that expecting a certain order.

I haven’t used Unity, so don’t really get the bit about detail texturing? You also might have difficulty splitting the normal map up like that ( x, y ), not really sure. Might be easiest to stick to the standard PBR pipeline, but you can have the channels in any order.

( I just checked, you can have the normal in two channels, but one is easier )

General consensus that works among the industry is:
Occlusion, Roughness, Metal
If you can keep the alpha empty, that’s better, as it uses a lot of memory.

The green channel has 1 bit more, and since roughness is the most important one, it makes sense to use it there.

Don’t pack normals; it breaks mipmapping to some extent, and the compression typically used for normal maps yields much better visual fidelity.

The only reason you’d wanna pack normal maps is for low-end mobile.

there’s some more info you can read here:

2 Likes