Beginner Engine Setup

PBR in Godot — Setting Up Materials for Game Assets

Godot 4's PBR material system is one of the most straightforward of the three major engines — and it shares the same ORM channel packing convention as Unreal, making it easy to switch between the two. This guide walks through setting up a complete PBR material from a Trumble export.

⏱ ~7 min read · 6 sections · Beginner friendly

Section 01

BaseMaterial3D — Godot's PBR Material

Godot 4's primary material type for 3D assets is BaseMaterial3D (also accessible as StandardMaterial3D — they're the same thing). It's a PBR material with a straightforward Inspector UI — no node graph required for standard use, just texture slots you fill in.

BaseMaterial3D supports the full PBR workflow: albedo, normal, metallic, roughness, AO, emissive, and more. It uses the same ORM packing convention as Unreal Engine (AO in Red, Roughness in Green, Metallic in Blue), which means Trumble's Unreal/Godot export preset works for both engines without any changes.

Godot and Unreal share the ORM convention. Both use AO=R, Roughness=G, Metallic=B. If you've already set up the Unreal export preset in Trumble, the same output works for Godot. One export format, two engines — no repacking needed.
Section 02

Importing Textures in Godot

Drag your texture files into the Godot FileSystem panel to import them. Godot auto-detects most texture types, but you should verify the import settings for each map type to ensure correct color space and compression.

Albedo

T_Name_D — Color (sRGB)

Select the texture in the FileSystem, open the Import tab, and confirm Detect 3D is enabled and the texture is treated as a Color texture. sRGB conversion is applied automatically for color textures in Godot 4.

Normal Map

T_Name_N — Normal Map type

In the Import tab, set Texture Type to Normal Map. This disables sRGB conversion and enables the correct compression (RGTC/BC5) for normal data. Godot uses the OpenGL (Y+) convention — matching Trumble's Godot export.

ORM

T_Name_ORM — Linear, no sRGB

In the Import tab, ensure the texture is not treated as sRGB (set to Linear / Data). This preserves the raw greyscale values in each channel — essential for correct Roughness, Metallic, and AO values.

Reimport after changing settings. After changing import settings in Godot's Import tab, click Reimport at the bottom of the panel. Settings only take effect after reimporting — the visual change in-engine won't appear until the texture is reprocessed.
Section 03

Connecting Maps in BaseMaterial3D

To create a material in Godot: select a MeshInstance3D node, go to the Inspector, click the Material slot, and choose New StandardMaterial3D. This opens the material properties. Alternatively, drag a texture directly from the FileSystem onto a mesh to create a basic material automatically.

BaseMaterial3D — texture connections
T_Name_D Albedo → Texture Under the Albedo section in the material Inspector
T_Name_N Normal Map → Texture Enable Normal Map checkbox first, then assign
T_Name_ORM ORM → Texture Enable Ambient Occlusion, Roughness, and Metallic checkboxes. Set ORM Texture Channel to RGB
T_Name_E (optional) Emission → Texture Enable Emission checkbox first. Set intensity with the Emission Energy slider.
Enable the section before assigning the texture. In Godot's BaseMaterial3D, each feature (Normal Map, ORM, Emission) has an enable checkbox. If you try to assign a texture to a section that isn't enabled, the slot won't appear. Always enable the section first, then drag in the texture.
Section 04

The ORM Workflow in Godot

Godot's ORM section in BaseMaterial3D is designed specifically for the packed ORM texture workflow. When you enable all three sub-features (Ambient Occlusion, Roughness, Metallic) and set the texture source to ORM, Godot reads the correct channels automatically — Red for AO, Green for Roughness, Blue for Metallic — matching exactly what Trumble exports.

ORM ChannelMapGodot reads it as
Red (R)Ambient OcclusionOcclusion factor — darkens areas away from ambient light
Green (G)RoughnessSurface roughness — 0 is mirror smooth, 1 is fully matte
Blue (B)MetallicMetal vs non-metal — 0 is dielectric, 1 is conductor

You can also use separate textures for each channel if you prefer. In the Roughness section, there's a Texture Channel dropdown — set it to Red, Green, Blue, or Alpha to read from a specific channel of a greyscale texture. The ORM approach is more efficient, but the individual approach gives you more flexibility if needed.

Section 05

GLTF Import — Godot's Native Format

Godot 4's preferred import format is GLTF / GLB. Unlike FBX (which requires a separate plugin or conversion), GLTF is natively supported and produces the most reliable import results. When a GLTF file includes embedded or referenced textures, Godot can automatically create BaseMaterial3D materials on import.

GLB

Single-file format — textures embedded

A GLB file bundles the mesh, materials, and textures into one file. Easiest for asset distribution and version control. Drag it into Godot's FileSystem and it imports everything automatically.

GLTF

Multi-file format — textures referenced externally

A GLTF file references separate texture files in the same directory. More flexible for texture updates — swap a texture file without re-exporting the mesh. Keep all files in the same folder for Godot to find the references.

GLTF materials use Roughness/Metallic, not ORM. The GLTF format stores Metallic and Roughness packed into the G and B channels of a single texture (called metallicRoughnessTexture in the GLTF spec). If you import a GLTF that references textures, Godot creates materials automatically — but you may need to manually assign the AO texture separately since GLTF keeps it in a different texture slot (occlusionTexture).
Section 06

Exporting from Trumble for Godot

Trumble's Godot export preset outputs the same ORM convention as the Unreal preset — AO in Red, Roughness in Green, Metallic in Blue. Select the Godot preset at export time and Trumble produces three files ready for the BaseMaterial3D setup described in this guide.

T_Name_D.png

Albedo / Base Color. Import as Color (sRGB). Assign to Albedo → Texture in BaseMaterial3D.

T_Name_N.png

Normal map in OpenGL convention (Y+). Import as Normal Map type. Assign to Normal Map → Texture.

T_Name_ORM.png

Packed ORM — AO in R, Roughness in G, Metallic in B. Import as Linear. Assign to ORM → Texture.

Complete Godot workflow: Export from Trumble with the Godot preset → import three textures with correct settings (Color, Normal Map, Linear) → create a StandardMaterial3D → enable Normal Map and ORM sections → assign each texture to the correct slot → apply material to your MeshInstance3D. Your asset is now correctly rendering with full PBR in Godot 4.