Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/armory3d/armorpaint/llms.txt

Use this file to discover all available pages before exploring further.

Export presets tell ArmorPaint how to map its internal PBR channels — base color, normal, occlusion, roughness, metallic, height, and more — into the specific texture layout expected by a target game engine or renderer. Each preset is a small JSON file that lists one or more output textures and defines which source channel fills each RGBA slot of that texture. The active preset is selected from the Preset dropdown in the Export dialog, and the same preset editor is available on the Presets tab.

Preset JSON Format

Each preset file lives in the export_presets/ data folder and follows this schema:
{
  "textures": [
    {
      "name": "base",
      "channels": ["base_r", "base_g", "base_b", "1.0"],
      "color_space": "linear"
    }
  ]
}
FieldTypeDescription
namestringSuffix appended to the output filename (e.g. _base, _orm). Use "" for no suffix.
channelsstring[4]Source channel for each of R, G, B, A in the output texture.
color_spacestringCurrently "linear" for all built-in presets.

Available Channel Values

These are the valid values for each entry in the channels array, as recognised by export_texture.c:
ValueSource
base_rBase color — red channel
base_gBase color — green channel
base_bBase color — blue channel
nor_rNormal map — red (X) channel
nor_gNormal map — green (Y) channel — OpenGL convention
nor_bNormal map — blue (Z) channel
nor_g_directxNormal map — green channel inverted for DirectX convention
occAmbient occlusion
roughRoughness
metalMetallic
smoothSmoothness (inverted roughness)
emisEmission
heightHeight / displacement
opacOpacity / alpha
diff_rComputed diffuse color — red channel (derived from base color × (1 − metallic))
diff_gComputed diffuse color — green channel
diff_bComputed diffuse color — blue channel
spec_rComputed specular color — red channel (derived from base color × metallic + 0.04 × (1 − metallic))
spec_gComputed specular color — green channel
spec_bComputed specular color — blue channel
0.0Constant black (channel filled with 0)
1.0Constant white (channel filled with 255)
nor_g_directx inverts the green channel of the normal map to convert from OpenGL-style normals (Y-up) to DirectX-style normals (Y-down). Use this for any engine that expects DirectX normal maps — most notably Unreal Engine. Failing to flip the green channel produces lighting errors that look like inverted bumps.

Built-in Presets

ArmorPaint ships with eight presets that cover the most common real-time rendering workflows.
The default preset. Outputs each PBR channel as a separate grayscale or RGB texture with no channel packing.
{
  "textures": [
    { "name": "base",  "channels": ["base_r", "base_g", "base_b", "1.0"],  "color_space": "linear" },
    { "name": "nor",   "channels": ["nor_r",  "nor_g",  "nor_b",  "1.0"],  "color_space": "linear" },
    { "name": "occ",   "channels": ["occ",    "occ",    "occ",    "1.0"],  "color_space": "linear" },
    { "name": "rough", "channels": ["rough",  "rough",  "rough",  "1.0"],  "color_space": "linear" },
    { "name": "metal", "channels": ["metal",  "metal",  "metal",  "1.0"],  "color_space": "linear" }
  ]
}
Output files: _base, _nor, _occ, _rough, _metal

Custom Presets

You can create your own presets to target any engine or pipeline.
1

Open the Export dialog

Press Ctrl+E and switch to the Presets tab.
2

Create a new preset

Click New, enter a name (e.g. my_engine), and press OK. ArmorPaint creates a minimal template preset with a single base-color texture entry and opens it in the preset editor.
3

Edit channels

The preset editor shows a row for each output texture. You can:
  • Edit the texture name (output filename suffix).
  • Change the R, G, B, A dropdowns to any supported channel value.
  • Set the Color Space (currently linear for all channels).
  • Click Add to append a new texture row, or right-click a row and select Delete to remove it.
Changes are saved to disk automatically as you edit.
4

Import an existing JSON preset

Click Import on the Presets tab to browse for a .json file. ArmorPaint copies it into the export_presets/ folder and makes it available immediately.

Manual Editing

Preset files are stored as plain JSON in the export_presets/ folder inside ArmorPaint’s data directory. You can also create or edit them with a text editor and restart ArmorPaint, or place them in the folder while ArmorPaint is running and click Import to load them without restarting. The template written when you click New looks like this:
{
  "textures": [
    { "name": "base", "channels": ["base_r", "base_g", "base_b", "1.0"], "color_space": "linear" }
  ]
}
Extend it by adding more objects to the textures array. Each output texture generates one image file per export.
Creating engine-specific presets is one of the most effective ways to streamline your export pipeline. A well-crafted preset means you can hit Ctrl+EExport and immediately get correctly packed textures without any post-processing steps in the engine.

Build docs developers (and LLMs) love