Skip to content

Material Texture Baker

Module: Art · Category: Bake · Tool ID: UniversalBakeSuite

A three-tab material baking suite. High → Low transfers a high-poly mesh’s material onto a low-poly mesh’s UV layout. Material → Texture flattens material channels (BaseColor, Normal, Roughness, Metallic, AO, Emissive) into individual textures. Batch runs the same flattening operation across a folder of meshes.

⚠️ This is NOT projection / mesh-to-mesh / cage baking.

This tool bakes material channels by sampling a material graph onto a UV layout. It does not raycast from a low-poly through a cage to a high-poly to extract geometric Normal / AO / Curvature / Thickness / Cavity (the Substance Painter / Marmoset Toolbag / xNormal workflow).

The “Normal” output is the material graph’s normal output, not a normal map derived from high-poly surface geometry. For projection baking, use a dedicated DCC.

Also does not bake: lightmaps, distance fields, Nanite, HLOD, physics, or shader caches.

Screenshot 01 — Hero shot — Tool open on Material → Texture tab with a static mesh selected, channel checkboxes set, output folder visible.


  • Flattening a complex Material graph into individual textures (e.g., to ship a final material as a simpler PBR set)
  • Cross-mesh material transfer — sampling material A onto mesh B’s UV layout
  • Batch flattening every material in a folder — preparing assets for an external pipeline that expects raw textures
  • Don’t use this for high-to-low projection baking — the “Normal” output here is the material graph’s normal, not a geometric normal from a high-poly mesh. Use Substance / Marmoset / xNormal for projection baking.
  • Don’t expect lightmap / distance-field baking — those have dedicated UE workflows
  • Don’t expect Nanite or HLOD baking — those have their own systems

  1. Open the EQLabs Hub and search for Bake or Material Texture (or browse to Art → Bake)
  2. Click the tool card
  3. Use the tab bar: High → Low, Material → Texture, or Batch

Bake one mesh’s material onto another mesh’s UV layout.

FieldWhat it doesDefault
High Mesh pickerSource mesh whose material is sampled(empty)
Low Mesh pickerTarget mesh whose UV layout is used(empty)
ResolutionOutput texture size2048
Bake NormalToggle Normal channeltrue
Bake AOToggle AO channeltrue
Bake BaseColorToggle BaseColor channelfalse
Bake RoughnessToggle Roughness channelfalse
Bake MetallicToggle Metallic channelfalse
BakeRuns the cross-mesh material transfer
  1. Pick the high-poly mesh (source material)
  2. Pick the low-poly mesh (target UV layout)
  3. Pick channels to bake
  4. Click Bake
  5. New textures are saved to the configured output directory

Flatten a single material’s channels to individual textures.

FieldWhat it doesDefault
Mesh pickerThe mesh whose material to flatten(empty)
Material Slot comboWhich material slot on the mesh0
ResolutionOutput texture size2048
Bake BaseColorToggle BaseColortrue
Bake NormalToggle Normaltrue
Bake RoughnessToggle Roughnesstrue
Bake MetallicToggle Metallicfalse
Bake EmissiveToggle Emissivefalse
BakeFlattens the chosen channels

Screenshot 02 — Material → Texture — Tab 2 with a mesh selected, material slot 0, four channel checkboxes ticked, baked textures visible in the output folder.

  1. Drop a static mesh
  2. Pick the material slot (most meshes have only slot 0)
  3. Choose the channels you need
  4. Set resolution (2048 for hero assets, 1024 for environment dressing)
  5. Click Bake

Folder-level batch baking — runs the Material → Texture flow on every mesh under a path.

FieldWhat it doesDefault
Batch Folder PathFolder of meshes to process/Game/
Batch Bake ModeMaterial to Texture (V1; more modes planned)Material to Texture
Batch ResolutionOutput resolution applied to all meshes2048
Channel togglesSame as Material → Texture tab
Process FolderWalks the folder, runs the bake on each mesh
Batch Result listPer-mesh result: name, path, status (OK / Error / Skipped), message
  1. Set the batch folder
  2. Pick channels
  3. Click Process Folder
  4. Walk the result list to confirm everything succeeded

FieldDefault
Output Directory/Game/EQLabs/Bake

512, 1024, 2048, 4096, 8192 (per-tab default: 2048)

Settings are persisted to [Project]/Saved/EQLabs/Settings/UniversalBakeSuite.json.


  • New UTexture2D assets — one per baked channel, saved to the configured Output Directory
  • Naming<MeshName>_<Channel> (e.g., SM_Chair_BaseColor, SM_Chair_Normal)
  • Compression — appropriate per channel (Normal uses TC_Normalmap, BaseColor uses TC_Default, Roughness/Metallic use TC_Masks)
  • Batch result list — in-panel; cleared on each new batch

  • The “Normal” output is from the material graph, not from geometry — read the warning at the top of this doc carefully if you’re confused about why your high-poly detail isn’t in the bake
  • Resolution × channel count = memory4096 × 6 channels = ~400 MB during the bake. Use lower resolution if you’re hitting memory limits
  • Cross-mesh transfer (Tab 1) requires both meshes to have valid UV layouts — verify with UV & Texel Suite before baking
  • Compression is set per channel automatically — overrides happen via the standard Texture editor afterward if needed
  • Display name is “Material Texture Baker” — but the tool ID and class name are still UniversalBakeSuite for registration history continuity

  • Smart Mask & Texture Processor — for normal-map blending and mask generation, complementary to material flattening
  • UV & Texel Suite (Modeling module) — verify UV layouts before baking
  • Atlas Studio — pack multiple baked outputs into a single atlas

Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.