Skip to content

Texturing Guides

These guides cover sending a texture set out of ArcBrush and reading one back in, one destination at a time. Export Texture writes a set as one folder of files, and its Destination decides what the files are called, which maps share a file, and which conventions they use. Texture Folder reads the same list backwards: pick the matching Source and every role comes back.

Each guide lists the exact files written, what every packed file holds, and the steps to take in the receiving tool. Inside ArcBrush, picking the destination is the only setting. How texture sets work in general is in Texture Sets.

You are sending the asset toPick this DestinationFiles for a full setPacked files
Back into ArcBrush, or a folder you will re-importArcBrush8none
Substance 3D PainterSubstance Painter7none
Blender, with Node Wrangler’s Principled Texture SetupBlender8none
A folder that reads like a Poly Haven downloadPoly Haven9arm
A folder that reads like an ambientCG downloadambientCG8none
A folder that reads like a Megascans downloadMegascans7none
A glTF or GLB materialglTF4metallicRoughness
Unity, Built-in render pipeline or URPUnity Built-in and URP6MetallicSmoothness
Unity, High Definition Render PipelineUnity HDRP5Mask
Unreal EngineUnreal5ORM
GodotGodot5orm
A studio convention of your ownYour own destinationyoursyours

The same list works for import, except Blender, which is export only and reads back as ArcBrush. To bring a downloaded material in, point Texture Folder at the folder and leave Source on Auto (the line under the combo says what it matched and by how much), or pick the source by name. Each guide ends with a section on reading its folder back.

Every table writes the same imaginary asset: a set named oak_bark carrying all eight roles (Base Color, Normal, Roughness, Metallic, Ambient Occlusion, Height, Opacity, and Emissive). A set with fewer roles writes fewer files, and a row whose every map is missing reads Not written: not in this set where its file name would be.

File names come from the Filename Template, {name}_{channel} everywhere except Unreal (T_{name}_{channel}). {channel} is the row’s Channel Name, which is editable, so a studio convention that differs by one name is one edit away. Put {name} in the Folder path too and each asset of a library gets a folder of its own. Every template token is listed on Export Texture.

The tables show the automatic choice: 8-bit PNG for Base Color and Emissive, 16-bit PNG for the Normal and every grayscale map, 16-bit (half) EXR for a Height that runs below zero or above one, and 8-bit PNG for every packed file, because that is what the engines and formats in these guides read.

The four engine destinations (both Unity entries, Unreal, and Godot) write Height into an ordinary unsigned image, because none of them samples a float container for height. A height outside 0 to 1 is remapped into that range, and the panel reports the two numbers that undo the remap.

The Encoding column says how each file’s values are stored. The panel’s Engine Import section lists the same split for the set you have connected, as Data files (read as linear, never sRGB): ... and Color files (sRGB): ...:

  • Color: sRGB in an ordinary image, working-space values in a float one (Base Color and Emissive).
  • Packed normal: in the convention the destination reads.
  • Linear data: exactly the numbers the map holds (Roughness, Metallic, Ambient Occlusion, Height, Opacity, and every packed file). These are the files to untick sRGB on in an engine.

A packed file with three lanes (ORM, orm, arm, metallicRoughness) is written as an RGB image with no alpha channel, in every format. A packed file with a fourth lane, such as Unity’s MetallicSmoothness or HDRP’s Mask, keeps its alpha, because that is where the fourth lane is.

A set has one Opacity, its cutout, and it follows the destination’s own rows:

  • Where the destination has an Opacity file (ArcBrush, Substance Painter, Blender, Poly Haven, ambientCG, Megascans), any set that is not fully opaque writes its Opacity there.
  • Where it has none but its color file declares an alpha lane (every engine destination does), the Opacity is written into the color file’s alpha.
  • A fully opaque set writes no Opacity at all.

The panel’s Opacity row names what Auto resolved to; the four explicit choices all write the same Opacity. A declared alpha lane always holds the Opacity where it is delivered there and full opacity elsewhere, never the color map’s own alpha, so Texture Folder can read it back as the set’s Opacity without guessing.

Untick the box at the start of a row to drop that file from this export; the row fades, reads Not written: turned off, and keeps its settings. That is how a Poly Haven folder goes out without its packed arm. Unticking is not an edit to the destination, so the combo keeps its name, and a preset always saves every row turned on. Untick every row and Export reports Every map is turned off.

A role the destination has no slot for is listed under the table as Not written: <role> (<destination> has no slot for it), with an Add Map button. Adding it, or editing a name, lane, container, template, or Normal convention, flips the Destination combo to Custom, since the folder no longer matches the destination. Save as Preset… keeps the result under your own name on both nodes. See Your own destination.