Beginner Engine Setup

PBR in Unity — Understanding the Standard Shader

Unity's PBR material setup differs from Unreal in two important ways: it has two different render pipelines with different material workflows, and it uses Smoothness instead of Roughness. Get these right and the rest is straightforward. This guide walks through both URP and HDRP setups from a Trumble export.

⏱ ~8 min read · 6 sections · Beginner friendly

Section 01

URP vs HDRP — Which Pipeline Are You Using?

Unity has two modern render pipelines, each with its own material system. Knowing which one your project uses is the first thing to establish — the material setup is different for each.

Universal Render Pipeline (URP)

Optimised for mobile, mid-range PC, and console. Uses the Lit shader. Simpler material setup — separate texture slots for Metallic and Smoothness. Good choice for most indie projects and any mobile target.

High Definition Render Pipeline (HDRP)

Optimised for high-end PC and console. Uses the Lit shader with the Mask Map packed texture convention. More complex but significantly better visual quality. Required for photorealistic targets.

Check which pipeline your project uses by going to Edit → Project Settings → Graphics. The Scriptable Render Pipeline Settings field shows either a URP or HDRP asset. If it's empty, you're on the Built-in pipeline (the older legacy system).

Start a new project with the right pipeline. Switching render pipelines mid-project is painful — all existing materials break and need manual conversion. If you're starting fresh, choose URP for mobile/indie or HDRP for high-end targets before adding any content.
Section 02

URP Material Setup

In URP, create a new Material and set its shader to Universal Render Pipeline/Lit. The Inspector shows the material's texture slots directly — no node graph needed for basic PBR setup.

URP Lit shader — texture connections
T_Name_D Base Map Albedo color texture. sRGB: On at import.
T_Name_N Normal Map Import as Normal Map type. Unity auto-detects and converts.
T_Name_M (R channel) Metallic Map Greyscale metallic. Unity reads R channel. sRGB: Off.
Smoothness slider Smoothness Or use Alpha channel of Metallic map as per-texel smoothness.
T_Name_AO Occlusion Map Standalone AO map. sRGB: Off. Optional but recommended.
URP doesn't use a Mask Map. Unlike HDRP, URP's Lit shader has separate slots for Metallic, AO, and Smoothness — not one packed Mask Map. Trumble's URP export preset outputs separate maps accordingly. Don't use the HDRP Mask Map in a URP project.
Section 03

HDRP Material Setup

In HDRP, create a Material and set its shader to HDRP/Lit. HDRP uses a packed Mask Map texture instead of separate slots — one texture carries Metallic, AO, Detail Mask, and Smoothness across its four channels.

HDRP Lit shader — texture connections
T_Name_D Base Map Albedo. sRGB: On at import.
T_Name_N Normal Map Import as Normal Map type in the texture settings.
T_Name_Mask Mask Map Packed: R=Metallic, G=AO, B=Detail, A=Smoothness. sRGB: Off.
T_Name_E (optional) Emissive Color Map Enable emission in material settings first, then assign.
01

Import textures with correct settings

Base Map: sRGB On. Normal Map: set Texture Type to Normal Map. Mask Map: sRGB Off, Texture Type to Default (not Normal Map or Sprite).

02

Create and configure the material

Right-click in the Project window → Create → Material. In the Inspector, set the shader to HDRP/Lit. Assign your textures to the correct slots.

03

Check the Surface Type

Set Surface Type to Opaque for standard assets. Use Transparent only for glass or other truly transparent surfaces — not for cutout assets, which should use Alpha Clipping instead.

Section 04

The HDRP Mask Map

HDRP's Mask Map is Unity's equivalent of Unreal's ORM texture — a packed texture carrying multiple greyscale maps in one file. The packing convention is different from ORM, which is the most common source of confusion when working across both engines.

ChannelMapValue Range
Red (R)Metallic0 = non-metal, 1 = pure metal
Green (G)Ambient Occlusion0 = fully occluded, 1 = fully open
Blue (B)Detail MaskControls detail layer blending (can be white if not using detail layers)
Alpha (A)Smoothness0 = fully rough/matte, 1 = mirror smooth (inverse of Roughness)

Note that Metallic and AO are in different channels compared to Unreal's ORM (where AO is Red and Metallic is Blue). And instead of Roughness, Unity uses Smoothness — the mathematical inverse of Roughness — in the Alpha channel. Both of these differences require Trumble to output a differently packed texture for Unity HDRP vs Unreal.

Section 05

The Smoothness Trap

The single most common mistake when moving assets between Unreal and Unity is confusing Roughness and Smoothness. They're mathematically inverse — a Roughness value of 0.8 equals a Smoothness value of 0.2. Using a Roughness map in a Smoothness slot (or vice versa) makes polished surfaces look rough and rough surfaces look shiny.

Roughness (Unreal, Godot)

White = rough / matte. Black = smooth / shiny. A value of 1.0 is completely diffuse chalk. A value of 0.0 is a perfect mirror.

Smoothness (Unity)

White = smooth / shiny. Black = rough / matte. The exact inverse. A value of 1.0 is a perfect mirror. A value of 0.0 is completely matte.

Trumble handles this automatically. When you select the Unity HDRP or Unity URP export preset in Trumble, the Roughness channel is inverted before packing — converting it to Smoothness. The exported Mask Map alpha channel contains the correctly inverted Smoothness value. You don't need to do anything manually.
Section 06

Exporting from Trumble for Unity

Trumble has separate export presets for Unity URP and Unity HDRP. Select the correct preset for your project's pipeline and Trumble outputs the right texture format with the right channel packing for each.

Unity URP export

Outputs separate Albedo, Normal, Metallic (greyscale), and AO maps. Smoothness is embedded in the Alpha channel of the Metallic map. sRGB set correctly per map.

Unity HDRP export

Outputs Albedo, Normal, and a packed Mask Map (R=Metallic, G=AO, B=Detail, A=Smoothness). Roughness is inverted to Smoothness automatically.

T_Name_D

Base Color / Albedo. Same for both URP and HDRP. Assign to Base Map slot.

T_Name_N

Normal map in OpenGL convention (Y+). Import as Normal Map type in Unity texture settings.

T_Name_Mask

HDRP Mask Map only. R=Metallic, G=AO, A=Smoothness. Assign to Mask Map slot in HDRP/Lit.

Unity reads normal maps in OpenGL convention (Y+) — the opposite of Unreal's DirectX (Y-). Trumble's Unity export preset outputs the correct convention automatically. If you export the Unreal preset and import it into Unity, the normal map shading will appear inverted. Always use the correct engine preset.