What it does
Procedural PBR material generator. Materials are JSON node graphs (fractal noise, Voronoi cells, bricks/tiles/planks, stripes, rivet grids, a tile sampler that scatters pebbles, leaves and chips with max-height stacking, warps, slope blur, directional smears, curvature, levels, blend modes, height blend, gradient maps, per-piece color variation) evaluated in numpy on the torus, so every map tiles with no seam by construction. From one height field it derives consistent normal (DirectX for Unreal, plus OpenGL), multi-radius AO and 16-bit height at a real physical scale (tile_m meters per tile, depth_cm of relief). Writes an Unreal texture set (T_Name_BC sRGB, _N, _ORM = AO/roughness/metallic, _H) plus separate linear maps and a manifest. Previews: a review sheet (maps, 2x2 tiling check, renders), Cycles renders in a background Blender (sphere and beveled cube, a raking-light close-up with true displacement, or the material box-projected at world scale onto any obj/fbx/glb/blend model), and a self-contained interactive three.js viewer page. In Unreal every material gets real depth: `unreal` (or generate unreal=true) imports the set and builds a shared Parallax Occlusion Mapping master material with the material's measured relief. References: a catalog of ~2,900 CC0 scanned materials (Poly Haven, ambientCG) with real sizes, searched with `references`; `reference` measures any photo; generate with reference= compares the result to a real surface at the same scale (palette, color, pattern size, contrast, roughness, grain) with a verdict and advice, and can match its colors. Ships 8 presets (brick, cobblestone, rusted painted metal, oak planks, forest floor, marble tiles, board-formed concrete) whose vars restyle them; new materials are written as graphs.
Capabilities
What it's capable of
List
The preset materials: description, tags, tile size and the vars each exposes for restyling (colors, counts).
Nodes
Every graph op with its parameters and output channels, and the recipe format, for writing a new material.
Generate
Build a material and write its texture set to out/<name>/. Returns the Unreal files, value ranges, `sheet` (read it: maps, 2x2 tiling, renders; ~1.5-2k tokens), `renders` and `viewer` (interactive HTML). About 1-5 s to evaluate at 1024 plus ~5 s per Blender render on a GPU. Give the shell command a timeout of 600 s.
References
Search the CC0 reference library (~2,900 scanned materials from Poly Haven and ambientCG with real sizes; a measured library of the most popular per category): names, categories, width, palette, feature size, roughness. show=true fetches the top hits onto one contact sheet (`read`) to look at before writing a recipe.
Reference
Measure one reference image (path, URL or library id): palette, color spread, feature size in cm (with width_m), grain direction, roughness when known. Returns a small sheet (`read`).
Unreal
Put a generated material into the open Unreal Editor with real depth: imports T_*_BC/_N/_ORM/_H with the right settings, builds the shared M_MatGen master (Unreal's Parallax Occlusion Mapping driven by the height) once, and makes MI_<Name> with the material's own relief (HeightRatio = depth_cm / tile_m) and UVScale = 1 / tile_m (for UV0 in meters). Needs Project Settings > Plugins > Python > Enable Remote Execution. Every generate also writes <out>/unreal_import.py for File > Execute Python Script.
Under the hood
What Claude can ask it to do
listThe preset materials: description, tags, tile size and the vars each exposes for restyling (colors, counts).nodesEvery graph op with its parameters and output channels, and the recipe format, for writing a new material.generateBuild a material and write its texture set to out/<name>/.referencesSearch the CC0 reference library (~2,900 scanned materials from Poly Haven and ambientCG with real sizes; a measured library of the most popular per category): names, categories, width, palette, feature size, roughness.referenceMeasure one reference image (path, URL or library id): palette, color spread, feature size in cm (with width_m), grain direction, roughness when known.unrealPut a generated material into the open Unreal Editor with real depth: imports T_*_BC/_N/_ORM/_H with the right settings, builds the shared M_MatGen master (Unreal's Parallax Occlusion Mapping driven by the height) once, and makes MI_<Name> with the material's own relief (HeightRatio = depth_cm / tile_m) and UVScale = 1 / tile_m (for UV0 in meters).
Get MatGen and every other tool
One key and one pasted prompt. The Toolbox keeps itself up to date.
Install with your key