Beginner Engine Setup

PBR in Unreal Engine 5 — How the Material Editor Works

Unreal Engine 5's Material Editor can look overwhelming at first. But for a standard PBR game asset from Trumble, you only need to know five input slots and one texture packing convention. This guide walks through the complete material setup from texture import to a working in-engine material.

⏱ ~8 min read · 6 sections · Beginner friendly

Section 01

The Material Editor

Unreal's Material Editor is a node-based shader graph. You build materials by connecting texture samples and other nodes to the input slots of the main Material output node. That output node represents the final shaded surface — its inputs correspond directly to PBR channels.

To open a material, double-click any material asset in the Content Browser. A new material opens in the Material Editor. The large node on the right side of the graph is your Material output — everything you add connects into it. The preview sphere on the left updates in real time as you build the graph.

Keep it simple first. The Material Editor has hundreds of node types, but a standard PBR material needs only Texture Sample nodes and the main Material output. Don't get distracted by the complexity — three texture nodes and five connections is all you need to get started.
Section 02

Importing Textures Correctly

Getting import settings right is just as important as the material graph itself. Incorrect import settings cause subtle but significant shading errors that are hard to diagnose after the fact.

Albedo

T_AssetName_D — sRGB: On, Compression: Default

Albedo is a color texture and should be imported in sRGB color space. Unreal applies gamma correction automatically when sRGB is enabled. Leave compression as Default (DXT1 for no alpha, DXT5 for RGBA).

Normal Map

T_AssetName_N — sRGB: Off, Compression: Normal Map

Normal maps must be imported with sRGB disabled and Compression set to Normal Map (BC5). This applies the correct DirectX Y-flip convention automatically and uses an optimized compression format for normal data.

ORM

T_AssetName_ORM — sRGB: Off, Compression: Masks

The ORM packed texture contains greyscale data — not color — so sRGB must be off. Set Compression to Masks (BC4/BC5) to avoid color compression artifacts corrupting the greyscale channel data.

sRGB on ORM breaks your material. If you import the ORM texture with sRGB enabled, Unreal applies gamma correction to what it thinks is a color image — which corrupts the Roughness, Metallic, and AO values and makes every surface look physically wrong. Always check sRGB is Off on any non-color texture.
Section 03

Connecting Your Maps

With textures imported, open your material and add Texture Sample nodes for each map. Right-click in the graph and search for "Texture Sample" to add one, then set its texture in the Details panel on the left.

Standard PBR material connections — Unreal Engine 5
T_Name_D (RGB) Base Color Connect the RGB output of the Albedo texture sample
T_Name_N (RGB) Normal Connect RGB output directly — no additional nodes needed
T_Name_ORM (R) Ambient Occlusion Red channel only — use the R output pin on the texture node
T_Name_ORM (G) Roughness Green channel only — use the G output pin
T_Name_ORM (B) Metallic Blue channel only — use the B output pin
T_Name_E (RGB) — optional Emissive Color Only needed for emissive assets. Multiply by a scalar for intensity control.
One ORM texture, three connections. Add a single Texture Sample node for your ORM texture. From that one node, connect the R pin to Ambient Occlusion, the G pin to Roughness, and the B pin to Metallic. Three connections from one texture — that's the efficiency of channel packing.
Section 04

The ORM Texture Convention

Unreal Engine's standard PBR workflow uses the ORM convention — Occlusion in Red, Roughness in Green, Metallic in Blue. This is the format Trumble's Unreal export preset outputs automatically, so if you export from Trumble with the Unreal preset, the texture is already packed correctly.

ChannelMapMaterial InputValue Range
Red (R)Ambient OcclusionAmbient Occlusion0 = fully occluded, 1 = fully open
Green (G)RoughnessRoughness0 = mirror smooth, 1 = fully matte
Blue (B)MetallicMetallic0 = non-metal, 1 = pure metal

The Green channel gets the most bits in DXT/BC compression formats because human vision is most sensitive to green. Roughness — which has the most subtle variation and needs the most precision — is placed in Green for exactly this reason. It's a deliberate technical decision, not an arbitrary convention.

Section 05

Material Instances

Once your base material is working, you should almost never apply it directly to assets. Instead, create Material Instances — child materials that inherit the parent's graph but expose specific parameters you can tweak without touching the base material.

01

Convert texture slots to parameters

In the Material Editor, right-click each Texture Sample node → Convert to Parameter. Give it a name (BaseColor, Normal, ORM). Now the texture can be swapped per-instance without editing the material graph.

02

Create a Material Instance

Right-click the base material in the Content Browser → Create Material Instance. Name it MI_AssetName. Open it to see all your exposed parameters — swap the texture parameters to your asset's specific texture files.

03

Apply the instance to the mesh

Drag the Material Instance onto your Static Mesh asset (or assign it in the mesh's material slot). Every asset uses its own instance with its own textures — all sharing the same base material graph.

Why instances matter for performance. Unreal can batch draw calls for meshes that share the same base material, even if they use different Material Instances. Instances are cheap. Unique base materials are expensive. One solid base PBR material with instances for every asset in your project is the correct production approach.
Section 06

Exporting from Trumble for Unreal

Trumble's Unreal Engine export preset produces everything you need for this material setup in one download. Select the Unreal preset at export time and Trumble outputs:

T_Name_D.png

Albedo / Base Color. sRGB color space. Import with sRGB: On in Unreal. Connect RGB to Base Color.

T_Name_N.png

Normal map in DirectX convention (Y-flipped for Unreal). Import with Compression: Normal Map. Connect RGB to Normal.

T_Name_ORM.png

Packed ORM — AO in R, Roughness in G, Metallic in B. Import with sRGB: Off, Compression: Masks.

Complete workflow: Export from Trumble with the Unreal preset → import three textures into UE5 with the correct settings above → create a base PBR material → add three Texture Sample nodes → connect as shown in Section 03 → create a Material Instance → assign your textures → apply to your mesh. That's the full pipeline from Trumble to in-engine material.