Skip to content

Channel Types

Rev Oconner edited this page Apr 30, 2026 · 4 revisions

Channel Types

Every texture in UV Texture Repacker carries a channel — a label that says what kind of data the texture holds (Albedo, Normal, Roughness, Metallic, Height, …). The channel is what determines:

  • Which atlas image the texture goes into. Each channel produces its own atlas (atlas_Albedo.png, atlas_Normal.png, …).
  • Whether the texture is treated as a tangent-space normal map and re-shaded under UV rotation.
  • The colour of the pill that shows in the outliner.

This page is about how channels are assigned and how to customise that. For the dialog that controls which channels are available in your project, see Active Texture Types.

Setting a channel manually

Click the coloured pill at the right end of any texture row in the Outliner. A popover opens listing every active channel. Click one to assign it.

Multi-row tip: if you have multiple texture layers selected (Ctrl- or Shift-click in the outliner), clicking the channel type dropdown list on any one of them re-types every layer in the selection.

Filename auto-assign

When you add a texture, the app guesses its channel from the filename. The guess is based on a priority-ordered table of canonical channel names and their common abbreviations.

The match rules:

  • Single-letter aliases (D, S, R, M, N, G, E, H, O, …) only fire after a separator — whitespace, underscore, hyphen, or dot — or at the start of the stem. So wall_D.png is recognised as Albedo, but wood.png and dragon.png are not.
  • CamelCase boundaries are split before matching. wallM.png becomes wall_M, so the trailing M reliably maps to Metallic.
  • Trailing trash is peeled off: (1), .0001, _v01, lone trailing digits. So wall_normal_v01.0001.png matches Normal cleanly.
  • US and GB spellings both match: color and colour, gray and grey.
  • Specific normals (WSN, OSN, BN, TN) take precedence over the generic Normal rule. wall_WSN.png becomes World Space Normal, not Normal.
  • Specular Color sits above Albedo so wall_specular_color.png is not caught by Albedo's color variant.
  • The match is case-insensitive.

If no rule fires (the filename is just wood.png, say), the texture is assigned to whatever is first in your Active Texture Types list — usually Albedo.

If a rule fires for a channel that is not in your Active list, the rule is skipped and the next one is tried. Channels you have not enabled never get auto-assigned.

Common matches at a glance

Filename ends with Channel
_albedo, _basecolor, _BC, _color, _diffuse, _D Albedo
_normal, _N, _nrm Normal
_normal_world, _WSN World Space Normal
_normal_object, _OSN Object Space Normal
_roughness, _R, _rough Roughness
_glossiness, _G, _gloss Glossiness
_metallic, _M, _metal Metallic
_specular, _S, _spec Specular Level
_specular_color, _specularColor Specular Color
_height, _H, _disp Height
_AO, _ambient_occlusion, _O Ambient Occlusion
_emissive, _E, _emit Emissive
_opacity, _alpha Opacity
_curvature Curvature

This is a partial list. The full set of canonical names is visible in the Available column of the Active Texture Types dialog.

Custom channels

The app reserves ten slots called custom0 through custom9 for channels that do not have a canonical name. A common use is ORM (Occlusion / Roughness / Metallic packed into a single texture) — there is no canonical "ORM" channel, but you can rename custom0 to "ORM" and use it.

image

To rename a custom slot:

  1. Open Preferences (title bar) → the Channel match rules section.
  2. Find the row for the custom slot.
  3. Click the small pencil icon next to the slot's display name.
  4. Type the new label.

The rename is purely cosmetic on your machine. The project file (.muvp) stores the slot key (custom0), not the renamed label, so a project shared with someone who has different rename labels still loads correctly.

Default regex auto assign rules

The default auto assign rules are described here in details

Custom regex per channel

In PreferencesChannel match rules, every channel has an optional Regex field. When you put a non-empty pattern there:

  • That regex replaces the built-in rule for that one channel.
  • Other channels keep their built-in rules.
  • If your regex fails to compile (typo, unclosed bracket), the channel ends up with no rule — textures matching what you intended will fall through to the first-active fallback, but the built-in rule is still suppressed (so the failure is visible).

The pattern is matched case-insensitively against the filename stem (without extension or trailing trash). Use this when:

  • Your studio's filename convention differs from the built-in rules.
  • You want a custom slot (ORM, MRA, etc.) to auto-assign from a specific suffix.

Disabling auto-assign

If you would rather assign every channel by hand, open PreferencesScene and turn off Auto-assign channels from filename. Newly added textures will all default to the first-active channel; you can re-type them via the pill popover.

Tangent-space normals

The app treats a texture as a tangent-space normal map when its channel name contains "normal" but not "world" or "object". The classification matters for one feature: when Allow 90 UV rotation is on and the packer rotates a shell, the corresponding pixels in the tangent-normal atlas are automatically re-encoded so the lighting on that rotated shell looks identical to the unrotated form. Object- and world-space normal maps are not re-shaded — their encoded frame is independent of UV orientation.

This is automatic. There is no per-row "Kind" picker because most artists do not know that tangent-space normals need this re-shade. Naming a normal channel sensibly (normal, WSN, OSN) is enough.

See also

Clone this wiki locally