Materials in ArmorPaint define what gets painted onto the mesh surface. Each material is a node graph that drives the full PBR (Physically Based Rendering) channel set—base color, roughness, metallic, normal, occlusion, height, emission, subsurface, and opacity—allowing procedurally generated textures, color ramps, image lookups, and mathematical operations to feed directly into paint output. Materials are stored in the project’s material list and can be assigned as fill materials for fill layers.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.
PBR Channels
Each material slot (slot_material_t) exposes per-channel toggles that control which texture channels the material writes to when painting or filling. All channels default to enabled when a new material is created.
Base Color — `paint_base`
Base Color — `paint_base`
Controls the diffuse/albedo color of the surface. Stored in the
texpaint (base channel) texture of the layer. Applicable in all three workflows (PBR, Base Color, Sculpt).Opacity — `paint_opac` + `paint_opac_mode`
Opacity — `paint_opac` + `paint_opac_mode`
Controls the transparency of the painted result. The Opacity Mode (
Applicable in all workflows.
paint_opac_mode) switches between:| Mode | Value | Description |
|---|---|---|
| Alpha | OPACITY_MODE_ALPHA = 0 | Standard alpha-blend transparency. |
| Translucency | OPACITY_MODE_TRANSLUC = 1 | Subsurface-style translucency rendering. |
Occlusion — `paint_occ`
Occlusion — `paint_occ`
Ambient occlusion channel. Packed into the Red channel of the
texpaint_pack texture. Darkens areas in crevices for more realistic shading. PBR workflow only.Roughness — `paint_rough`
Roughness — `paint_rough`
Microsurface roughness. Packed into the Green channel of
texpaint_pack. Values near 0 produce a mirror-like specular reflection; values near 1 produce diffuse/matte surfaces. PBR workflow only.Metallic — `paint_met`
Metallic — `paint_met`
Controls whether a surface behaves as a metal or a dielectric (non-metal). Packed into the Blue channel of
texpaint_pack. PBR workflow only.Normal — `paint_nor`
Normal — `paint_nor`
Tangent-space normal map data, stored in the
texpaint_nor texture. Adds surface detail without additional geometry. PBR workflow only.Height — `paint_height`
Height — `paint_height`
Parallax/displacement height information, packed into
texpaint_pack. Used for height-based displacement or parallax occlusion mapping effects. The paint_height_blend flag (on layers) controls whether height values blend or replace. PBR workflow only.Emission — `paint_emis`
Emission — `paint_emis`
Self-emission glow channel. Packed into
texpaint_pack. Emissive areas appear to glow and are unaffected by scene lighting. PBR workflow only.Subsurface — `paint_subs`
Subsurface — `paint_subs`
Subsurface scattering amount. Packed into
texpaint_pack. Simulates light penetrating translucent materials such as skin, wax, or foliage. PBR workflow only.Workflows
ArmorPaint supports three distinct painting workflows, selected in Preferences or project settings:- PBR (Metallic/Roughness)
- Base Color Only
- Sculpt
WORKFLOW_PBR = 0The full physically based rendering pipeline. All nine material channels are available: Base Color, Opacity, Occlusion, Roughness, Metallic, Normal, Height, Emission, and Subsurface. This is the default and most common workflow for game assets and visualization.Material Slots
Every project contains a list of material slots displayed in the Materials panel of the sidebar. Each slot (slot_material_t) holds:
- Node canvas (
canvas) — the node graph that defines the material’s look. - Preview image (
image,image_icon) — a rendered sphere preview at 200×200 px (full) and 50×50 px (icon). - Channel flags — individual
paint_*booleans controlling which channels are written. - Opacity mode —
paint_opac_modefor Alpha or Translucency rendering.
Managing Material Slots
| Action | How |
|---|---|
| New material | Click + (New) in the Materials panel. |
| Import material | Click Import to load a .arm material file. |
| Duplicate | Right-click → Duplicate or Ctrl+D in the panel. |
| Delete | Right-click → Delete (requires at least two materials). |
| Reorder | Drag and drop a material slot to a new position. |
| Select by shortcut | Shift+[1–9] (select_material) selects materials by index. |
Node-Based Materials
Each material is driven by a node graph opened via the Nodes button in the Materials panel (orTab shortcut to toggle the node editor). The node canvas connects texture nodes, color operations, math nodes, and other procedural generators to a final Output Material PBR node that feeds each PBR channel.
For a full reference of available material nodes, see the Material Nodes page.
Fill Material
Assigning a material to a layer converts it into a Fill Layer. The fill layer’s content is generated procedurally by the material’s node graph rather than storing hand-painted brush strokes.Create a fill layer
In the Layers panel, click
+ (New) and choose Fill Layer. A new layer is created with the currently active material assigned as its fill_material.Change the fill material
Select the fill layer. Switch to the desired material in the Materials panel. Right-click the layer and choose To Fill Layer to reassign it to the newly active material.
Adjust tiling and projection
Right-click the fill layer to access UV Scale, Angle, and UV Type (UV Map, Triplanar, or Project) controls in the context menu.