Skip to content

Export Texture

Export Texture
Export

Export Texture writes a whole texture set to disk, one file per map, in the naming and channel packing of the Destination you pick. Export Image and Export Batch refuse a set at the wire and point here. Nothing is written until you press Export.

Destination is the naming and packing convention the folder is written in: ArcBrush, Substance Painter, Blender, Poly Haven, ambientCG, Megascans, glTF, Unity Built-in / URP, Unity HDRP, Unreal, Godot, and your own saved presets, under Yours. Texture Folder’s Source offers the same list, so a folder written here reads straight back there.

The line under the combo says what the destination writes, for example:

Reads BaseColor, Normal, Mask, Height, Emissive. Packs Mask: Metallic in R, Ambient Occlusion in G, detail mask constant 1.0 in B, 1 - Roughness in A.

Each destination has a guide with the exact files written and the steps to take in that tool: ArcBrush, Substance Painter, Blender, Poly Haven, ambientCG, Megascans, glTF, Unity Built-in and URP, Unity HDRP, Unreal, Godot, and your own destination.

Folder is where the files go. Filename Template names each file: {name}_{channel} by default, T_{name}_{channel} under Unreal.

The two tokens that name a set’s files:

  • {name}: the set’s asset name. A set with no name takes the name of the node feeding it, then this node’s own name, then texture_set.
  • {channel}: the Channel Name of the row being written, in the destination’s own spelling: base_color under ArcBrush, BaseColor under Substance Painter, BaseMap under Unity, diff under Poly Haven.

So a set named oak_bark writes oak_bark_base_color.png under ArcBrush, and T_{name|pascal}_{channel} under Unreal writes T_OakBark_BC.png. A line under the template says what {name} came out as and where it came from.

Naming with Tokens has the Unreal recipe, and the Token Reference lists every token, including this node’s own label ({this.label}). Transforms need ArcBrush 1.7.0 or later.

Each row is a file, not a map. It has a checkbox, an editable Channel Name, a Format, a Bit Depth, and the resulting file name, which updates as you type.

Under it, the lane strip shows one chip per channel of the file, so a packed file says what it holds without being opened: R - Metallic, G - Ambient Occlusion, A - Roughness (inverted). A lane whose role the set lacks turns amber and states the value written instead. Two rows that would resolve to one file name are marked red, and Export is disabled until one is renamed.

Click the chevron or the lane strip to edit a row in place. File picks the layout (Gray, RGB, RGBA, or separate R, G, B, and A lanes), and each lane has a Source and a Transform. An RGB lane offers the color and normal roles; a single lane offers the single-value roles, Height, Opacity (per the Opacity row), Constant 0.0, Constant 1.0, and Unused, so a role can never land in a channel that cannot hold it.

Opacity (per the Opacity row) is the lane a destination declares for the cutout: it carries the set’s Opacity only where the Opacity option delivers it to this file, and is opaque otherwise. The plain Opacity item always writes the set’s Opacity. Transform is None or Invert (1 - x), which is how a smoothness lane is written from a roughness map.

The checkbox decides whether the file is written. Untick a row and the file is left out while the row keeps its name, lanes, format, and depth. That is how a destination’s packed extra is dropped. It is a choice about this export, not an edit to the destination, so the Destination combo keeps its name.

A row that will not be written is faded and says why where its file name would be:

  • Not written: turned off
  • Not written: not in this set, when every map the row reads is missing
  • Not written: no lanes assigned
  • Not written: needs 32-bit (Float) Mode, for EXR or Radiance HDR in an 8-bit document

Not written, under the table, lists roles the set carries that the destination has no file for, such as Not written: Height (glTF has no slot for it), with an Add Map button beside it.

Change a name, a lane, a format, a depth, the template, or the Normal Convention and the Destination combo reads Custom, naming the destination it started from. Three ways back: pick the destination again, press Reset to Destination, or click the small arrow beside a row to reset only that row.

  • Save as Preset… stores the whole list under your own name, under Yours here and in Texture Folder’s Source combo.
  • Manage Presets… deletes one; a node made from a deleted preset keeps its rows and reads Custom.

Auto is the first item in both the Format and Bit Depth dropdowns and names what it resolves to, such as Auto (PNG).

MapAutomatic
Base Color, Emissive8-bit PNG
Normal16-bit PNG
Roughness, Metallic, Ambient Occlusion, Opacity16-bit PNG
Height inside 0 to 116-bit PNG
Height that runs below zero or above one16-bit (half) EXR
Packed file8-bit PNG

Formats, above the table, sets one format and depth on every row at once: Auto (from the destination), PNG 8-bit, PNG 16-bit, TIFF 16-bit, EXR 16-bit, or EXR 32-bit. JPEG, TGA, BMP, WebP, and HDR are 8-bit; PNG is 8 or 16-bit; TIFF is 8, 16, or 32-bit float; EXR is 16-bit half or 32-bit float. A depth the format cannot hold moves to the nearest one it can.

Anything above 8-bit, and EXR itself, needs 32-bit (Float) Mode, the default for new projects; an 8-bit document gets the 8-bit sibling of each choice. A Height outside 0 to 1 written to a format that cannot hold it is remapped to 0 to 1, and the node reports the two numbers that undo the remap instead of clamping. The engine destinations write Height into an ordinary unsigned file for the same reason. Half float carries about three decimal digits, so pick EXR 32-bit on the Height row when a pipeline needs finer steps.

Color is a rule here, not a dropdown. A texture is an asset another renderer decodes, so the view transform is never baked in. Base Color and Emissive are written as sRGB in an integer format (PNG, JPEG, WebP, TGA, BMP, and TIFF at 8 or 16-bit) and as working-space values in a float one (EXR, HDR, 32-bit TIFF). Every other role is written literally, and the Normal always as packed directions.

  • Normal Convention (OpenGL or DirectX) starts at the destination’s own value and is never locked. The set’s convention is converted on the way out.
  • Opacity decides where the set’s cutout goes. Auto, the default, writes only what the set needs: to the destination’s Opacity file if it has one, otherwise into the alpha lane its color file declares, and nothing at all for a fully opaque set. The Auto item names its answer: “Auto (Opacity file)”, “Auto (Base Color alpha)”, or “Auto (nothing to write)”. Opacity File, Base Color Alpha, Both, and None force a choice; every one writes the same Opacity, so Both writes two identical copies. Auto skips a row that will not be written and says where the cutout went instead. A declared alpha lane always holds the cutout where it is delivered and full opacity elsewhere, never a map’s own stray alpha.
  • Embed Recipe writes the graph into every file whose format can carry one, with Private Paths (on by default) deciding whether the recipe keeps full file paths; see Recipes in exported images.

Engine Import, under the options, says in plain words what to do in the destination after the files land, such as which textures to mark as normal maps and which to untick sRGB on. Two lines under it list this export’s data files (read as linear) and color files (sRGB).

Format settings appear only for formats the table uses: PNG Compression, Quality for JPEG and WebP, TIFF Compression, WebP Lossless, and TGA RLE.

Output Files lists every file the plan writes, and Export writes them. Overwrite and skip handling, cancellation, and the per-file report work as in Export Batch, and a partial export is never reported as complete. Export Selected and Export All on the canvas include Export Texture nodes.

A library exports one asset at a time, each under its own name, in frame order, with one asset in memory however large the library. The button counts both numbers (“Export 12 texture sets (96 files)”), the destination is checked before the first file is written, two assets that would share a name are kept apart, and an asset that cannot be read is named and skipped without stopping the rest.

A plain image, or a batch of images, is read as a Base Color only set, so a folder of pictures can go out through this panel too.

Pins

TextureTexture
InputRequired

Export

FolderText

Folder the Export action writes into.

Accepts {name}, {this.label}, {this.id}, {graph}, {date}, {time} and {project_dir}; {name} is the set's asset name, so a library can write one folder per asset, and {this.label|or:this.id} names this node. Per-file tokens such as {channel} belong in Filename Template. Add a transform such as {name|snake}.

Filename TemplateText
Default: {name}_{channel}

Name of each written file, without the extension.

{channel} is the name of the row being written in the Maps table and {name} is the set's asset name; the line under this field says where {name} came from. Also accepts {label} (the source node's label), {this.label}, {this.id}, {graph}, {date}, {time}, {width} and {height}. Add a transform such as T_{name|pascal} or a fallback such as {label|or:name}.

Maps

DestinationText
Default: ArcBrush

Which pipeline this folder is written for. A destination sets the file names, which maps are packed into which channels, each file's format, the filename template and the normal convention.

ArcBrush writes one file per map and re-imports with every map restored. Editing any row below switches the destination to Custom, which still exports.

FormatsData

Every file this export writes, one row per file. The row's name is what {channel} resolves to, and the chips under it show which map goes into which channel.

The checkbox sets whether the file is written. Auto picks the container and bit depth for that file.

Options

Normal ConventionChoice
Default: OpenGL Range: OpenGL / DirectX

Convention the exported Normal map is written in. The set's own convention is converted on the way out.

  • OpenGL: green points up.
  • DirectX: green points down.
OpacityChoice
Default: Auto Range: Auto / Opacity File / Base Color Alpha / Both / None

Where the set's Opacity is written.

  • Auto: an Opacity file when the destination has one, otherwise Base Color's alpha. A fully opaque set writes none.
  • Opacity File: a separate Opacity file.
  • Base Color Alpha: the alpha of the Base Color file.
  • Both: the Opacity file and Base Color's alpha.
  • None: no Opacity is written.
Embed RecipeToggle
Default: false
PNG, WebP, JPEG, TIFF

Embed this graph into every exported file's metadata so it can be reopened in ArcBrush.

Includes all node settings, notes, and input files; Private Paths decides how their paths are stored. Adds a few KB per file.

Private PathsToggle
Default: true
Embed Recipe = on

Store only file names in the recipe, so the exported file is safe to share.

Turn off to keep full file paths, including those in Project variables, for your own machine or a trusted studio.

Container Settings

PNG CompressionInteger
Default: 6 Range: 0–9
When a map is written as PNG

zlib level

QualityInteger
Default: 90 Range: 0–100
When a map is written as JPEG or WebP

JPEG/WebP quality

TIFF CompressionChoice
Default: None Range: None / LZW / Deflate / PackBits
When a map is written as TIFF

TIFF compression codec

WebP LosslessToggle
Default: false
When a map is written as WebP

Lossless WebP encoding

TGA RLEToggle
Default: true
When a map is written as TGA

TGA RLE compression

  • Pick the Destination first, then read Engine Import for the settings to change in that tool.
  • Untick a row to skip one file for this export. Edit a row only when the convention itself should change, and keep the result with Save as Preset….
  • A folder written with the ArcBrush destination reads back through Texture Folder with every map and the cutout restored.
  • To list the files a set was written to, wire the same set into Export Data and pick the Material Maps preset.
  • Name the set on its Texture node, or with Set Name on Texture Layer, so files are not called texture_set.