Intermediate Workflow

How to Export Textures for Unity, Unreal, and Godot

Getting your textures out of a tool like Trumble and into your game engine correctly is the final step in the PBR workflow — and it's where a lot of artists get tripped up. Each engine has its own expected formats, channel conventions, and import settings. This guide covers exactly what each engine needs so your materials look right the first time.

⏱ ~10 min read · 6 sections · Unity · Unreal · Godot

Section 01

File Formats — What to Export As

Before looking at engine-specific requirements, it helps to understand the texture file formats you'll be working with. Different maps have different needs when it comes to color space and compression compatibility.

FormatBest forNotes
PNG All maps — the safe universal choice Lossless, supports alpha channel, widely supported everywhere. Larger file size than JPG but no quality loss.
JPG / JPEG Albedo / color maps only Lossy compression — never use for normal maps, roughness, or metallic. The compression artifacts will cause visible shading errors.
TGA All maps — preferred by some pipelines Lossless, supports alpha, fast to read. Older format but still widely used especially in Unreal pipelines.
EXR HDR maps, emissive, displacement 16 or 32-bit float precision. Overkill for standard PBR maps but essential for HDR emissive or height data.
WebP Web-based games, browser engines Smaller file size than PNG with near-lossless quality. Good for WebGL projects targeting fast load times.
Default recommendation: PNG for everything. It's lossless, universally supported, and works in every engine without issues. Switch to TGA if your pipeline specifically calls for it, or EXR for any HDR data.
Color space matters: Albedo and emissive textures should be exported in sRGB color space. Normal maps, roughness, metallic, and AO maps are linear data — export them in linear color space and mark them as linear/non-color in your engine to avoid incorrect gamma correction darkening your maps.
Section 02

Channel Packing — Saving Texture Memory

Channel packing is the technique of storing multiple grayscale maps in the R, G, B, and A channels of a single RGBA texture. Since roughness, metallic, and AO are all single-channel grayscale data, you can combine three maps into one texture — reducing texture samples from three to one and saving significant GPU memory and bandwidth.

Without channel packing

Three separate texture samples: one for Roughness, one for Metallic, one for AO. Three texture lookups per pixel in the shader. More GPU memory used.

With channel packing (ORM)

One texture, three channels: R = Occlusion, G = Roughness, B = Metallic. One texture lookup per pixel. Roughly 3× the memory efficiency.

The most common channel packing convention is called ORM — Occlusion in Red, Roughness in Green, Metallic in Blue. This is what Unreal Engine expects by default. Unity uses a slightly different packing called MADS for its Mask Map. Knowing which convention your engine uses prevents you from plugging channels in incorrectly.

Green channel is most important: The green channel has the highest bit precision in most texture compression formats (DXT/BC). Always put your most visually critical grayscale data — usually roughness — in the green channel for best quality.
Section 03

Exporting for Unity

Unity's Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP) both use PBR materials. The standard Lit shader in both pipelines accepts the following maps:

Unity URP / HDRP Standard Lit Shader
Base Map (Albedo)
Format: PNG, sRGB color space. RGB = color, A = opacity if needed. Name: T_AssetName_D or _BaseColor
Normal Map
Format: PNG, linear. Mark as Normal Map in Unity's texture import settings — Unity auto-converts to DXT5nm format. Name: T_AssetName_N
Mask Map (HDRP)
Channel packed MADS format. R = Metallic, G = AO, B = Detail Mask, A = Smoothness (inverted roughness). Name: T_AssetName_M
Metallic (URP)
Format: PNG, linear. In URP, Metallic goes in the R channel and Smoothness (inverted roughness) in the A channel of the same texture. Name: T_AssetName_MetallicSmooth
Occlusion Map
Format: PNG, linear, grayscale. Plug into the Occlusion Map slot in the material inspector. Name: T_AssetName_AO
Emissive
Format: PNG or EXR, sRGB. Plug into Emission Map slot and enable Emission in the material. Name: T_AssetName_E

Unity HDRP Mask Map Channel Layout

Red
Metallic
Green
AO
Blue
Detail
Alpha
Smooth¹

¹ Smoothness = inverted roughness (1 − Roughness). Invert your roughness map before packing into the Alpha channel.

Mark non-color maps as linear in Unity: When importing normal maps, roughness, metallic, and AO into Unity, always set the Texture Type to "Default" and uncheck sRGB (color texture). For normal maps, set type to "Normal Map". Failing to do this will make Unity apply gamma correction to your linear data, washing out your normal maps and blowing out your roughness.
Section 04

Exporting for Unreal Engine

Unreal Engine uses a well-established PBR convention that most texturing tools — including Trumble — target by default. Unreal's standard material inputs are straightforward, and its ORM packing convention is widely supported.

Unreal Engine 5 Standard PBR Material
Base Color
Format: PNG or TGA, sRGB. Connect to the Base Color pin. Name: T_AssetName_D or _BC
Normal Map
Format: PNG or TGA, linear. Set Compression to Normalmap in texture settings. Connect to Normal pin. Name: T_AssetName_N
ORM (packed)
R = AO, G = Roughness, B = Metallic. Set Compression to Masks, sRGB off. Connect R→AO, G→Roughness, B→Metallic in Material Editor. Name: T_AssetName_ORM
Emissive
Format: PNG or EXR, sRGB. Connect to Emissive Color pin. Multiply by a scalar to control brightness. Name: T_AssetName_E

Unreal ORM Channel Layout

Red (R)
Occlusion
Green (G)
Roughness
Blue (B)
Metallic
Alpha (A)
Unused
Unreal naming conventions matter: Unreal's texture auto-import system looks for suffixes like _D (diffuse/base color), _N (normal), _ORM (packed mask). Using these suffixes means Unreal will automatically assign textures to the correct material slots when you drag a mesh into the editor.
Section 05

Exporting for Godot

Godot 4's StandardMaterial3D uses a clean Metal/Roughness PBR workflow and accepts separate maps for each channel — no channel packing required, though packing is supported via the ORM texture option. Godot is one of the most straightforward engines to set up PBR materials in.

Godot 4 StandardMaterial3D
Albedo Texture
Format: PNG, sRGB. Assign to Albedo → Texture in StandardMaterial3D. Godot handles sRGB conversion automatically.
Normal Map
Format: PNG, linear. Enable Normal Map in the material and assign your texture. Set Normal Map Depth to control intensity (default 1.0).
Roughness Texture
Format: PNG, linear, grayscale. Enable Roughness in material, assign texture, set channel to Red (or whichever channel holds your roughness data).
Metallic Texture
Format: PNG, linear, grayscale. Enable Metallic in material, assign texture, set channel to Red (or your packed channel).
AO Texture
Format: PNG, linear, grayscale. Enable AO in material and assign. Use AO Light Affect slider (0–1) to blend AO strength.
ORM Texture (packed)
Optional packed format: R = AO, G = Roughness, B = Metallic. Enable ORM in material properties to use packed format and save texture samples.
Godot's import settings: When Godot imports a texture, check the Import panel in the editor. Set Compress Mode to VRAM Compressed for runtime textures. For normal maps, Godot will prompt you to convert them — always accept the conversion to Godot's internal normal map format for correct results.
Section 06

Exporting from Trumble

Trumble's export system is built around these engine conventions. Rather than exporting raw channels and figuring out packing yourself, Trumble's export presets handle the channel layout, format, color space, and naming for your chosen target engine automatically.

Export PresetMaps GeneratedFormat
Unity URP Base Color (sRGB), Normal (linear), Metallic+Smoothness (R+A), AO (linear) PNG
Unity HDRP Base Color (sRGB), Normal (linear), Mask Map MADS (R=Metal, G=AO, B=Detail, A=Smooth) PNG
Unreal Engine Base Color (sRGB), Normal (linear), ORM packed (R=AO, G=Rough, B=Metal) PNG / TGA
Godot 4 Albedo (sRGB), Normal (linear), Roughness (linear), Metallic (linear), AO (linear) PNG
Roblox Color Map, Normal Map, Roughness Map, Metalness Map PNG
Raw PBR All channels exported separately — no packing. For custom pipelines. PNG

Select your target engine in the Export panel, choose your output resolution, and Trumble generates the complete set of correctly formatted, correctly named texture maps ready to drop straight into your project. No manual channel packing, no color space headaches, no renaming files.

Naming conventions

Each preset applies the correct suffix conventions for that engine — _N for normals, _ORM for packed masks in Unreal, _BaseColor for Unity — so auto-import systems work as expected.

Color space handled automatically

Trumble tags sRGB maps correctly and exports linear maps without gamma encoding. You don't have to remember which maps are which — the presets handle it.

You're ready to ship: Select your engine preset, hit Export, and drop the files into your project. If you've followed correct PBR values throughout your texturing workflow — physically accurate roughness, correct metallic values, linear albedo — your asset should look great in engine on the first import with no adjustments needed.