Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/GraphiteEditor/Graphite/llms.txt

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

Procedural design in Graphite means describing how artwork is generated rather than placing every element by hand. Instead of manually copying a shape twenty times around a circle, you tell the computer how many copies to make and at what radius — and it does the work. Change a single parameter and the entire composition updates automatically, instantly. This approach scales from simple repetition patterns all the way to complex generative systems driven by math, randomness, and time.

How Procedural Design Works

Every action you take with Graphite’s tools creates or modifies nodes behind the scenes. When you draw a shape with the Pen tool, a Path node is created. When you apply a color, a Fill node is wired to it. You can see this underlying structure at any time by opening the node graph with the button in the top-right corner of the viewport (or pressing Ctrl`). The node graph is a flowchart where data travels from left to right. Each node is a box that takes inputs on its left side, performs an operation, and emits outputs on its right side. By adding more nodes and connecting them, you build a pipeline — a procedure the engine executes to generate your artwork. Because nothing is baked into pixels, any node’s parameters can be changed at any time.

Example: Repeat Radial

The Repeat Radial node distributes copies of a shape evenly around a center point. Here is how to build a circular pattern from scratch:
1

Draw a shape

Use the Pen tool (P) to draw a small curved or angular shape on the canvas. Close the path to make it fillable.
2

Apply a fill color

With the shape selected, set a fill color in the control bar or by using the Fill tool (F). A Fill node is automatically wired into the graph.
3

Open the node graph

Press Ctrl` to open the overlaid node graph. You should see a Path node feeding into a Fill node, which feeds into the layer output.
4

Add the Repeat Radial node

Right-click in the node graph and search for Repeat Radial. Place it between the Fill node output and the layer output by inserting it into the wire.
5

Adjust the parameters

Select the Repeat Radial node and open the Properties panel. You will see three key parameters:
  • Count — The number of copies distributed around the circle (e.g., 8 for eight evenly spaced instances).
  • Radius — The distance in pixels from the center to each copy.
  • Start Angle — The angle offset in degrees at which the first copy is placed.
6

Iterate freely

Change Count, Radius, or Start Angle and watch the artwork update in real time. Try 5 instances at a 200 px radius, then 12 at 80 px, then shift the start angle — all without recreating anything.
Hold Alt and click any node in the graph to temporarily preview its output directly in the viewport, bypassing everything downstream. This is invaluable for inspecting intermediate stages of a pipeline without disconnecting wires. Click End Preview in the control bar to restore the full output.

Example: Grid Repeat (Repeat Array)

The Repeat Array node distributes copies of a shape linearly along a direction vector, optionally rotating between copies. You can use it to fill a grid: place one Repeat Array for the horizontal axis (direction: (cell_width, 0), count: columns) and feed its output into a second Repeat Array for the vertical axis (direction: (0, cell_height), count: rows). The parameters include:
  • Direction — A 2D vector specifying the total offset between the first and last copy.
  • Angle — An optional rotation applied across the distribution.
  • Count — How many copies to produce along the direction.
Combining two Repeat Array nodes in series produces a full rectangular grid of any density in a handful of parameters.

Exposing Parameters

Any numeric input on a node can be exposed to the graph — meaning instead of being a hard-coded value you type by hand, it becomes an input connector that can be driven by the output of another node. To expose a parameter, click the small circle (expose button) next to the parameter name in the Properties panel. The parameter becomes a connector on the left side of the node. You can then wire any node that produces a compatible number to that connector — for example, connecting a Math node to the Count input of a Repeat Radial node to compute the instance count from a formula. This is how you build truly dynamic systems: the artwork is always a function of its parameters, and those parameters can themselves be the output of other computations.

Combining Nodes

The power of the node graph comes from chaining operations together. Some useful patterns:
  • Repeat Radial → Transform — Apply a Transform node after a circular repeat to offset the entire pattern or rotate it over time.
  • Repeat Array → Fill (Assign Colors) — Wire the grid output into an Assign Colors node (in the Vector: Style category) to color each copy with a sample along a gradient.
  • Repeat on Points — Place copies of a shape at the anchor points of any vector path, with optional random scale and rotation per instance. This enables organic scatter patterns driven by any path geometry.
  • Copy to Points — Similar to Repeat on Points, but works with the content input exposed so the copied artwork can itself be a procedural subgraph.

Nondestructive Editing

Because every operation is a node in the graph, nothing is ever permanently baked in until you explicitly export or use Make Path Editable. You can:
  • Change the source shape at any point and all downstream nodes (repeats, fills, transforms) immediately reflect the update.
  • Adjust a repeat count from 8 to 24 without recreating the layout.
  • Swap a solid fill for a gradient, or change blend modes, at any time.
  • Delete intermediate nodes to simplify the pipeline while preserving the remaining connections.

Reusable Subgraphs

Complex chains of nodes can be collapsed into a subgraph (also called a grouped node). Select a set of connected nodes, right-click, and choose Group into Subgraph. The group appears as a single node with the same external connectors as the original boundary connections. This keeps large graphs manageable and lets you reuse the same processing chain across multiple layers or documents.
Nested documents as fully reusable custom nodes — with their own published interfaces — are on the roadmap for Beta 1.

Working with Nodes

Connecting, organizing, and previewing nodes in the graph

Node Reference

Complete listing of all available nodes and their parameters

Build docs developers (and LLMs) love