Skip to content

Export Presets & Engine Targets

The engine preset decides three things: the packed-map layout, the default normal-map orientation, and the file-name style.

PresetPacked mapNormal defaultName prefixChannel suffix style
Generic PBRORMOpenGL (Y+)noneLong (BaseColor, Normal, Roughness…)
Unreal EngineORMDirectX (Y-)T_Short (D, N, R, M, O, H, A, S, G, CC, CCR, T)
Unity URPMetallicSmoothnessOpenGL (Y+)noneLong
Unity HDRPMask MapOpenGL (Y+)noneLong
GodotORMOpenGL (Y+)noneLowercase (albedo, normal, roughness…)
glTF / three.jsORMOpenGL (Y+)noneLong
LayoutRGBAUsed by
ORM (_ORM)AORoughnessMetallic(no alpha)Generic, Unreal, Godot, glTF
MetallicSmoothness (_MetallicSmoothness)MetallicAO0Smoothness (1 - Roughness)Unity URP
Mask Map (_MaskMap)MetallicAO0 (detail slot, unused)Smoothness (1 - Roughness)Unity HDRP

Notes on packing:

  • The packed map is built from the brightness of each source channel, so color information in a source is discarded.
  • A channel that has no image fills with its engine-neutral value: AO is white, Metallic is black, Roughness is mid gray. Smoothness slots invert whatever roughness resolved to.
  • The packed image is square. Its side is taken from the widest real (non-constant) contributor; if every contributor is a flat constant, the export resolution is used. Narrower sources are resized to match.
  • The packed map is written only when at least one of its source channels resolves to something.
  • Unity URP’s MetallicSmoothness file is meant to be assigned to both the Metallic and Occlusion material slots; the dialog’s toggle label says so.

Individual (split) maps and the packed map together

Section titled “Individual (split) maps and the packed map together”
  • With both toggles on, you get one file per channel plus the packed file, including separate AO, Roughness and Metallic files that duplicate what is inside the packed map.
  • With Individual maps off and the packed map on, the channels folded into the packed layout are dropped from the individual set; channels the packed layout does not carry (Base Color, Normal, Height, Emissive, Opacity, Clearcoat, Clearcoat Roughness, Thickness) are also not written, because turning off individual maps turns off all individual files.
  • With both off, nothing is written and the Export button is disabled.

Names are built as:

[engine prefix] + <your prefix> + "_" + <suffix> + "." + <extension>

Examples, with the prefix rusty_plate:

PresetBase ColorNormalPacked map
Generic / glTF / Unityrusty_plate_BaseColor.pngrusty_plate_Normal.pngrusty_plate_ORM.png / _MetallicSmoothness / _MaskMap
UnrealT_rusty_plate_D.pngT_rusty_plate_N.pngT_rusty_plate_ORM.png
Godotrusty_plate_albedo.pngrusty_plate_normal.pngrusty_plate_ORM.png

Per-channel suffixes:

ChannelLong (default)UnrealGodot
Base ColorBaseColorDalbedo
NormalNormalNnormal
RoughnessRoughnessRroughness
MetallicMetallicMmetallic
AOAOOao
HeightHeightHheight
Emissiveemissiveemissiveemissive
OpacityOpacityAopacity
SpecularSpecularSspecular
GlossinessGlossinessGglossiness
ClearcoatClearcoatCCclearcoat
Clearcoat RoughnessClearcoatRoughnessCCRclearcoat_roughness
ThicknessThicknessTthickness

Emissive is the odd one out: it has no entry in any of the three suffix tables, so every preset falls back to the raw channel id and suffixes the file _emissive, lowercase, in every naming style - including Unreal’s, where the rest of the set is single letters. Rename the file afterwards if your pipeline matches on case.

A Custom Output ignores all of this and writes <prefix>_<node-label-slug>.<ext>. The slug is the node’s label, lowercased, with runs of non-alphanumeric characters replaced by underscores and leading/trailing underscores trimmed; a label with no letters or digits falls back to output. Rename the node in the Properties panel to control the name.

Surface Labs renders normal maps internally in DirectX (Y-) orientation. At export time the green channel is inverted whenever the target orientation differs, so OpenGL (Y+) targets get a flipped green channel and DirectX (Y-) targets are written as rendered. In practice that means Unreal exports untouched, and Generic / Unity URP / Unity HDRP / Godot / glTF exports flipped.

The Normal format control in the Export dialog overrides this per export: pick Engine default (the table above), OpenGL (Y+), or DirectX (Y-) explicitly. The override is saved with the project’s export settings.

The flip applies only to the Normal map file. Packed maps are never green-flipped.