Skip to content

About

MaterialCraft: An open-source, node-based material designer written from scratch in pure Rust

Resources

Stars

33 stars

Watchers

1 watching

Forks

Repository files navigation

ArtCraft

MaterialCraft icon: an engraved rhino on a teal tile

MaterialCraft

Procedural materials; an open-source, node-based material designer, built in pure Rust.

Build tileable PBR materials from noises, patterns and filters in a node graph, watch them update live in 2D and on a 3D model, and export the maps for any engine. It runs natively on macOS, Windows, Linux and FreeBSD, and in the browser via WebAssembly. Built by the ArtCraft team.

Status: in active development Written in pure Rust Runs on macOS, Windows, Linux, FreeBSD and the web MCP server for agents License: MIT OR Apache-2.0

Join the ArtCraft community on Discord

MaterialCraft on getartcraft.com · ArtCraft · All Crafting Apps


The MaterialCraft workspace: the explorer and node library on the left; a brick wall material as a node graph with live thumbnails in the middle, over a 3D view of a rounded cube in red brick and a 2D view of the base color; the brick generator's parameters on the right
The workspace: explorer, library, node graph, 3D view, 2D view and properties

Note

ArtCraft is a community of artists from all walks of life. Painters, sculptors, game artists, material and texture artists, photographers, filmmakers, illustrators, designers, hobbyists, and people who picked up a stylus last week. If you make things, you belong here. Come say hi on Discord.

A look around · Made in MaterialCraft · Why MaterialCraft · Quick start · Status · Downloads · The Crafting Apps · License

A look around

A wood planks graph: anisotropic noise warped by Perlin noise and multiplied over a plank pattern, shown on the rounded cube and in the 2D view

Wood planks: anisotropic grain, warped and laid over planks

A lava rock graph: Voronoi plates with cracks and glowing seams, as dark rock with orange emissive cracks on the rounded cube

Lava rock: cracked plates over glowing emissive seams

The New graph dialog: template spheres for empty, PBR, brick wall, stone tiles, wood planks, painted metal plates, rusty metal, lava rock, polished marble, wicker weave, woven fabric and mossy ground, with the graph name and size

New graph: start from a PBR template or a sample material

A mossy ground graph: stones height-blended with dirt and moss grown in the crevices, on the rounded cube and in the 2D view

Mossy ground: stones and dirt height-blended, with moss in the gaps

Made in MaterialCraft

Every material below is a node graph that ships with MaterialCraft as a template, built only from its own procedural nodes (no photos, scans or textures from anywhere else) and rendered by materialcraft-cli render --scene sphere --full --hq (the height output displaces the mesh, with ray-traced ambient occlusion and a shadowed key light).

Eight material spheres: red brick, lava rock with glowing cracks, blue painted metal plates with rivets, wood planks, wicker weave, mossy ground, cracked stone tiles and polished white marble

Brick wall · Lava rock · Painted metal plates · Wood planks
Wicker weave · Mossy ground · Stone tiles · Polished marble

Why MaterialCraft

  • Familiar. The layout, panels, menus and gestures material artists already know: a package explorer, a library of nodes with previews, the node graph with live thumbnails, a 3D view, a 2D view and a properties panel with base and specific parameters. Space opens the node search.
  • Fast. Every node cooks on every CPU core, and a content-addressed cache means an edit re-cooks only what lies downstream: the brick wall sample cooks in about 40 ms at preview size. Cooking runs on a worker thread, so the UI never waits.
  • Tileable by design. Noises and patterns live on whole-number lattices, so everything tiles seamlessly at any resolution, from 16 px to 8K.
  • Robust. No panics in shipped code, every command tested with hostile input, every node cooked with odd inputs in tests, unlimited undo from snapshots, and lossless .mcraft packages.
  • Open. Export base color, normal, roughness, metallic, height and ambient occlusion as PNG, JPEG, TGA, TIFF, BMP, WEBP, EXR or HDR at 8, 16 or 32 bits, with your own file name pattern.
  • Works with TextureCraft. File ▸ Send to TextureCraft puts a material on TextureCraft's shelf as a portable .mcmat; painted onto a mesh there, its graph inputs stay live sliders and colors, re-cooked by MaterialCraft at the texture set's resolution with the mesh's baked maps feeding the graph's input nodes.
  • Agent-native. Every menu item and edit is a command you can drive from the CLI, a JSON control channel (including synthetic mouse and keyboard input) or an MCP server, so Claude and other agents can build materials the way a person does.
  • Everywhere. One codebase for the desktop apps and the same UI in the browser.

Quick start

git clone https://github.com/storytold/materialcraft
cd materialcraft

cargo run --release -p materialcraft                          # desktop app (opens the brick wall sample)
cargo run --release -p materialcraft -- package.mcraft        # open a package
cargo run --release -p materialcraft -- --control 7878        # + JSON control channel
cargo run --release -p materialcraft-cli -- mcp               # MCP server (stdio)
cargo run --release -p materialcraft-cli -- new wood wood.mcraft
cargo run --release -p materialcraft-cli -- render wood.mcraft wood.png --scene sphere --full --hq
cargo run --release -p materialcraft-cli -- export wood.mcraft textures --format png --depth 16
cargo run --release -p materialcraft-cli -- export my.mcraft out --set wear=0.7    # with a graph input "wear" set first
cargo run --release -p materialcraft-cli -- run my.mcraft file.exportMaterial '{"path": "my.mcmat", "size": 2048}'   # for TextureCraft
cd apps/materialcraft-web && trunk serve                      # web build
cargo xtask ci                                                # fmt, clippy, tests, layering, wasm

You need Rust 1.95 or newer. The app opens with the brick wall sample; File ▸ New ▸ Graph... starts from a PBR template or one of the sample materials.

Use it from Claude Code and other agents

Register the MCP server with Claude Code, giving it the folders it may read and write:

claude mcp add materialcraft -- /path/to/materialcraft-cli mcp --read-root /work/materials --write-root /work/materials

To drive the running app instead, start it with --control 7878 and bridge to it:

claude mcp add materialcraft-app -- /path/to/materialcraft-cli mcp --bridge 7878

The details are in docs/control-protocol.md.

Status

MaterialCraft is under active development. ROADMAP.md has the parity estimate by area, the remaining work and what's next.

Where we are (2026-11-02): the node engine and 227 nodes (the atomic nodes including FX-Map, SVG and Text, noises including tileable 3D ones, patterns, filters, the flood fill family, whole-material blending and weathering), function graphs with a visual editor and dynamic parameters, sub-graphs with exposed inputs and presets, the full editor (graph, library, properties, 2D view with histogram, 3D view with your own OBJ/glTF meshes), .mcraft packages, texture export, portable .mcmat materials that TextureCraft paints with (inputs stay editable there), the browser build with file I/O, the CLI, the control channel and the MCP server all work today. We estimate about two thirds (≈ 67%) of a material artist's daily workflow works end to end; docs/target-app-parity.md has the breakdown.

What's missing: the rest of the node library, a GPU 3D view with tessellation and lights, mesh-based nodes, translations and the first signed release. The ranked list is in docs/gaps.md.

Workspace: crates/{core, image, geom, nodes, eval, formats, engine, render, automation, ui-egui} and apps/{materialcraft, materialcraft-cli, materialcraft-web}. The egui frontend is its own crate, so the UI can be swapped without touching the engine; docs/architecture.md explains how it fits together.

Agent and contributor rules (clean room, the asset policy, no panics in shipped code, quality gates) are in AGENTS.md. Every bundled asset is listed with its licence in ATTRIBUTION.md.

Downloads

New to MaterialCraft? Download it from the MaterialCraft page on getartcraft.com. That's the easiest way to install it.

Want a specific build or format? On GitHub, the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.

Windows

Build Installer Portable
x64 (64-bit Intel/AMD) materialcraft-<ver>-windows-x64.msi materialcraft-<ver>-windows-x64-portable.zip
arm64 (Snapdragon and other ARM PCs) materialcraft-<ver>-windows-arm64.msi materialcraft-<ver>-windows-arm64-portable.zip
x86 (32-bit) materialcraft-<ver>-windows-x86.msi materialcraft-<ver>-windows-x86-portable.zip

macOS

Build File Notes
App, universal (Apple silicon + Intel) materialcraft-<ver>-macos-universal.dmg Signed and notarized
Command-line tool, universal materialcraft-cli-<ver>-macos-universal.zip Signed and notarized

Linux

Format x86_64 aarch64 (ARM64) Notes
AppImage materialcraft-<ver>-linux-x86_64.AppImage materialcraft-<ver>-linux-aarch64.AppImage Runs anywhere; updates itself with AppImageUpdate (.zsync files)
Flatpak materialcraft-<ver>-linux-x86_64.flatpak materialcraft-<ver>-linux-aarch64.flatpak Sandboxed; flatpak install --user <file>
Debian/Ubuntu materialcraft-<ver>-linux-x86_64.deb materialcraft-<ver>-linux-aarch64.deb
Fedora/RHEL/openSUSE materialcraft-<ver>-linux-x86_64.rpm materialcraft-<ver>-linux-aarch64.rpm
Tarball materialcraft-<ver>-linux-x86_64.tar.gz materialcraft-<ver>-linux-aarch64.tar.gz Unpack anywhere

FreeBSD

Build File
x86_64 materialcraft-<ver>-freebsd-x86_64.tar.gz

Web (WebAssembly)

Build File Notes
Static site materialcraft-web-<ver>.zip Runs in a modern browser; host it on any static server

The Crafting Apps

MaterialCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.

App What it's for Code Learn more
PhotoCraft Image editing: layers, masks, type and real PSD files GitHub Website
VectorCraft Vector illustration GitHub Website
TextureCraft 3D texture painting GitHub Website
MaterialCraft Procedural materials with node graphs · you are here GitHub Website
FilmCraft Video editing, color and sound GitHub Website
LightCraft Photo library and raw development GitHub Website
PdfCraft Reading, organizing and protecting PDFs GitHub Website
EffectCraft Motion graphics and visual effects GitHub Website
DesignCraft Page layout and publishing GitHub Website
GridCraft Spreadsheets and data GitHub Website

And ArtCraft itself, our AI image and video studio for artists who want real control.


Join the ArtCraft community on Discord

Come make things with us

Our Discord is where artists of every kind hang out: people who paint, sculpt, model, build materials, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.

discord.gg/artcraft · getartcraft.com · The Crafting Apps · MaterialCraft

Star history

Star History Chart

License and credits

MaterialCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the MaterialCraft contributors. Required notices are in NOTICE.

Bundled icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.

Every material, noise, pattern, environment, library preview and mesh shown is generated procedurally by MaterialCraft itself; no third-party textures, scans or models appear in the screenshots. MaterialCraft is an independent, clean-room implementation of a node-based procedural material workflow and is not affiliated with any other software vendor.

The app icon (an engraved rhino on MaterialCraft teal #178a9c) is original artwork made for this project by its owner; its files and notes are in assets/app-icon/.

The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as part of this repository and MaterialCraft, under docs/brand/LICENSE-brand.txt. Forks and modified versions must remove them.

Join the ArtCraft community on Discord

ArtCraft
Made by the ArtCraft team and community.

About

MaterialCraft: An open-source, node-based material designer written from scratch in pure Rust

Resources

Stars

33 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages