Matter
A node graph that builds PBR materials procedurally: resolution-independent, re-tunable, and exportable as a full map set.
In one line#
Wire procedural nodes together and get a complete PBR material out the other end : base colour, roughness, metallic, normal, height, AO and emissive, at whatever resolution you ask for.
The layout#

| Menu bar | File · Edit · Graph · View · Help · Plugins |
| Graph tabs | one material per tab, + for another |
| Toolbar | select, pan, zoom, fit, add node, connect, frame, undo/redo, grid |
| Left | the node library, searchable |
| Centre | the graph |
| Right | properties for the selected node |
| Bottom left | the 2D preview, one tab per PBR channel |
| Bottom right | the 3D preview |
What you do here#
Build the graph#

Drag a node in from the library, or add it from the toolbar, and connect Output → Input. Every node previews itself on its own body, so the graph is also the contact sheet: you can see what each step did without selecting it.
The library is grouped:
| Color | Color · Gradient · Bitmap (load a PNG/JPEG) · Uniform Color · SVG |
| Noise | Noise (Perlin / fractal) · Clouds (fractal sum abs) · Anisotropic Noise · Grunge Map · White Noise · Blue Noise |
| Patterns | Checkerboard · Wood Rings · Shape · … |
| Filters, adjustments and utilities | levels, blends, blurs, normal-from-height and the rest |
| Output | one per PBR channel |
Recent keeps what you last used at the top, which is most of what you reach for.
Route to channels#
An Output node is a PBR channel target: set its Channel to baseColor,
roughness, metallic, normal, height, ao or emissive. A material is
finished when every channel you care about has an output feeding it.
Tune a node#
The properties panel gives each node its basic parameters, its function bindings (parameters driven by an expression rather than a constant), and its resolution mode: Inherit by default, so one change at the graph level re-renders the whole material at a new size. It also reports the node's last evaluation time, which is how you find the expensive step in a slow graph.
Save to library turns a node, or a subgraph you have built, into something reusable.
Look at the result#

The 2D preview shows one channel at a time, with a zoom and a histogram. The 3D preview renders the material on a mesh: sphere, cube, cylinder, torus, plane, or your own mesh. Pick an environment (HDRI Studio, Soft, Warm, Sky, or the Studio / Outdoor / Sunset presets), set tessellation and edge, and tile the UVs 1×, 2× or 4× to check that the material actually repeats without seams.
The right panel, five tabs#
| Tab | |
|---|---|
| Properties | the selected node's parameters |
| Parameters | the graph's exposed parameters: the knobs a material offers to whoever uses it, rather than to whoever built it |
| Graph | graph-level settings |
| Variants | several versions of one material from the same graph |
| Library | the node and preset library |

A sixth tab, Material Scan, appears while a scan session is open.
Exposed parameters#
A material with exposed parameters stops being a fixed texture and becomes a control panel: rust amount, plank width, wear. This is what makes one graph serve a whole set, and it is the reason to build in Matter rather than paint the result once.
Material Scan#
A photograph of a real surface becomes a material here, and because the capture can be republished, it has a chapter of its own.
The node library, by the numbers#
Two hundred and three nodes, in twenty-three categories. The shape of that list tells you what Matter is:

| Category | Category | ||
|---|---|---|---|
| filters | 44 | blur | 6 |
| generators | 34 | transform | 6 |
| utility | 22 | graph | 6 |
| adjustments | 18 | colour | 5 |
| pattern | 16 | bake | 5 |
| effects | 9 | normal | 4 |
| noise | 6 | analysis | 4 |
plus flood fill (4), channels (3), material (3), scatter (2), blending (2), and one each of script, dynamics, output and library.
Filters outnumber generators, and that is the point: a procedural material is mostly processing, the noise is the easy part, and what makes it read as wood or as rusted steel is the forty-four ways to push it around afterwards.
The script node is the escape hatch for the case the other two hundred do not cover, and bake nodes are what turn an expensive branch into a stored image so the rest of the graph stays interactive.
Material Scan, and what happens when the photo is republished#
A Surface Capture prepared in Inkwell arrives here as a graph, not as a flat image: the scan builds the nodes, and the Material Scan guide walks you through what it built, step by step, pointing at the nodes of each step and marking each output manual or derived.
The interesting case is the second time. When the same capture is republished from Inkwell, Matter notices, it knows the version it holds and the version that arrived, and asks:
| Choice | |
|---|---|
| Update the source | take the new photo into the existing graph |
| Create a variant | keep both |
| Ignore | leave the graph alone |
Updating replaces the source node only. Every node you added downstream, and every setting you changed, is left untouched. That guarantee is what makes re-shooting a surface safe: the work you did on top of the scan is not the thing being replaced.
If nothing about the capture actually changed, the dialog says that too rather than making you compare. And if the capture is missing something it needs, it names the fields instead of building half a graph.
Exporting a material#
Three different things leave Matter, and they are not interchangeable:
| The PBR maps | one image per channel, baseColor, roughness, metallic, normal, height, AO, emissive, in PNG, JPEG, HDR, TGA or TIFF |
A .matter bundle | the graph and its textures, so the material stays editable |
| glTF / GLB, and MaterialX | the material as other software expects it |
Only connected outputs export; the panel says "no connected outputs" rather than writing empty files, and reports what succeeded and what failed by count.
Files it reads and writes#
| Native format | .matter (graph, or a bundle with its textures) |
| Imports | .png, .jpg (Bitmap node), SVG (SVG node), a Surface Capture from Inkwell |
| Exports | PBR maps as PNG · JPEG · HDR · TGA · TIFF; glTF / GLB; MaterialX |
Sending work to other studios#
Produces a PBR material set, and a flat image. Accepts images, pixel art, and a surface capture from Inkwell.
The material set is understood directly by Pigment, Sculpt and Engine: the channels arrive mapped to the right slots rather than as seven loose PNGs you have to reconnect.
Working with someone else#
Matter syncs the whole document, debounced, not node by node. A material graph is a small object and the store keeps no operation log, so a full sync is honest about what it is: last writer wins. Two people should work on different graph tabs, not the same one.
Limits and common snags#
- A slow graph has one slow node. The properties panel reports each node's last evaluation time; look there before lowering the resolution of everything.
- Resolution is inherited. If one node is pinned to a size it will not follow a graph-level change, check its resolution mode.
- Tiling problems show up in the 3D preview, not the 2D one. Set the tile factor to 2× or 4× before calling a material done.
- A Bitmap node is not procedural. It is as sharp as the file you gave it, whatever resolution you render the graph at.