Geometry Nodes in Blender: how they work and a first setup, step by step
Short answer
Geometry Nodes is Blender's node system for building and modifying geometry procedurally. You add a Geometry Nodes modifier to an object, then connect nodes between a Group Input and a Group Output in the Geometry Node Editor. Values flow as fields, evaluated for every point or face. The classic first setup scatters objects on a surface with Distribute Points on Faces and Instance on Points.
- Start: Modifier Properties > Add Modifier > Geometry Nodes (bottom of the menu), then New; or the Geometry Nodes workspace.
- Add a node: Shift+A in the Geometry Node Editor.
- Scatter: Point > Distribute Points on Faces, then Instances > Instance on Points.
- Inspect: Shift+Ctrl+click a socket to send it to the Viewer node and the Spreadsheet.
- Group: Ctrl+G to make a node group, Tab to enter or leave it.
Menu names below are checked against the Blender 5.2 manual, its release notes and source code. Geometry Nodes changed a lot between versions, so the version where each feature arrived is given.
What are Geometry Nodes?
Geometry Nodes is a system for modifying the geometry of an object with node-based operations. It lives in a modifier: the Geometry Nodes modifier holds a node group, which you edit in the Geometry Node Editor. Whatever the object looks like before the modifier, its original data or the result of the modifiers above, enters the group through the Group Input node. The nodes process it and hand the result to the Group Output node, which passes it to the next modifier. Nothing is applied to the original mesh: change a value and the whole result updates.
The system first shipped in Blender 2.92, with a release focused on object scattering and instancing. It works on meshes, curves, point clouds, volumes, instances and, since Blender 5.2, empties, which makes it possible to build objects that have no original data at all. Blender's default startup file has a Geometry Nodes workspace, laid out for procedural modeling.
Geometry Nodes vs shader nodes
Both use nodes, but they do different jobs. Shader nodes build materials, which control how a surface looks: its color, its roughness, how light interacts with it. Geometry Nodes change what is there: they create points, move vertices, delete faces, extrude, place thousands of copies. A material cannot add a single vertex; a Geometry Nodes tree does not decide how glass refracts light.
The two meet through attributes. A value computed in Geometry Nodes and stored on the geometry under a name can be read in the Shader Editor with the Attribute node, for example to tint each scattered rock differently. Its Instancer type looks up attributes stored on Geometry Nodes instances. The Shader Editor itself is covered in the guide to materials in Blender.
Fields and attributes
An attribute is data stored per element of a geometry: a position for every vertex, a material index for every face, a radius for every point. Each attribute belongs to a domain (point, edge, face, face corner, curve, instance and so on), and the Spreadsheet editor shows them all.
A field is a function: a set of instructions evaluated many times, once per element. Since Blender 3.0, this is how Geometry Nodes passes values around. A Position node connected to a Set Position node does not hold one position; it means "the position of each point", evaluated by Set Position for every point it processes. The editor shows the difference visually:
- a dashed link carries a field, a solid link a single value or a geometry;
- diamond-shaped sockets accept fields, round ones only single values;
- a solid red link flags an invalid connection between a field and a socket that cannot take it.
Nodes with a geometry input and output, like Set Position, are data flow nodes: they change the geometry. Math nodes and inputs like Position are field nodes: they only describe a calculation, and they are evaluated in the context of the data flow node they feed. The same field connected to two Set Position nodes in a row can therefore give two different results, since the second one sees geometry the first one already moved. To freeze a value at one point of the tree, use Capture Attribute.
Your first setup: scattering objects on a surface
Scattering rocks, trees or debris on a terrain is the classic first Geometry Nodes project. You need a ground mesh, a plane is enough, and an object to scatter, here a rock.
- Select the plane and use Modifier Properties > Add Modifier > Geometry Nodes, at the bottom of the menu, then click New. The Geometry Node Editor now shows a Group Input and a Group Output: the plane passes through unchanged.
- Shift+A > Point > Distribute Points on Faces. Connect the Geometry of Group Input to its Mesh input. Density is the number of points per square meter, Seed draws a different random pattern.
- Shift+A > Instances > Instance on Points. Connect the Points output to its Points input, and its Instances output to the Geometry of Group Output. The plane disappears: there is nothing to instance yet.
- Drag the rock from the Outliner into the node editor: Blender adds an Object Info node for it. Connect its Geometry output to the Instance input. With the default Original transform space, the rock's own position in the scene does not offset the copies.
- For the size, add Utilities > Random Value, keep the Float type, set Min to 0.5 and Max to 1.5, and connect it to Scale. A single number plugged into a vector socket is used for all three axes, so each rock is scaled uniformly.
- For the rotation, add a second Random Value set to Vector, leave Min at 0 and set the Z of Max to 6.283 (a full turn, in radians). Run it through Utilities > Rotation > Euler to Rotation into the Rotation input. To lay the rocks along the surface instead, connect the Rotation output of Distribute Points on Faces.
- To get the ground back, add Geometry > Join Geometry before Group Output and connect both the Group Input geometry and the instances to it.
Distribute Points on Faces gives every point a stable ID, which Random Value and Instance on Points use by default: raise the density and the existing rocks keep their size and rotation. Switch the Distribution Method to Poisson Disk and set Distance Min to keep the rocks from overlapping.
Several different objects
Put the variants in a collection and drag it into the editor to get a Collection Info node. Tick its Separate Children input, connect it to Instance, and tick Pick Instance on Instance on Points: each point then picks one child of the collection, chosen by the point ID unless you connect something to Instance Index.
See what each node produces
Shift+Ctrl+click any node or socket to connect it to the Viewer node: its geometry shows in the 3D Viewport and its values in the Spreadsheet, which helps when a field gives an unexpected result.
In Blender 5.2, Add Modifier > Generate also lists Scatter on Surface, a ready-made node group from the bundled Essentials library that distributes points or instances with density, randomization and Poisson disk sampling, without opening the node editor. Building the setup once by hand is still the best way to understand what it does.
Node groups and assets
Node trees grow fast. Select a set of nodes and press Ctrl+G (Node > Make Group): they collapse into a single group node, with Group Input and Group Output nodes created for the links that cross the selection. Tab enters the group and leaves it again. In the Group tab of the Sidebar, the Group Sockets panel adds, sorts and names the inputs and outputs; a group used as the modifier shows those inputs directly in the modifier panel, where an input connected to a field socket can also read an attribute instead of a single value.
To reuse a group in other files, right-click its name in the header of the Geometry Node Editor and choose Mark as Asset. Node group assets with the Modifier usage enabled appear in the Add Modifier menu, in a category named after their asset catalog. Set the editor's Node Tree Sub-Type to Tool instead and the group becomes a node-based tool, an operator run from the 3D Viewport menus, introduced in Blender 4.0 as a way to extend Blender without Python. Python add-ons remain the other route, see the guide to Blender add-ons.
Zones: simulation, repeat, for each and closures
Zones are pairs of input and output nodes with a colored area between them, where nodes run under special rules. Nodes inside a zone can read values from outside, but cannot send links out except through its output node.
- Simulation zone (Blender 3.6, Add > Simulation > Simulation). The result of one frame feeds the next. Inputs of the Simulation Input node are evaluated once, at the start; then each frame starts from the previous state. Delta Time, the time between frames, keeps the simulation consistent if the frame rate changes. Results are cached during playback and can be baked.
- Repeat zone (Blender 4.0, Utilities > Repeat). Runs its nodes Iterations times, each pass receiving the result of the previous one; the Iteration output counts from 0. The manual's example builds a pyramid one level per pass.
- For Each Element zone (Blender 4.3, Utilities > For Each Element). Runs its nodes once per element, a face or an instance for example, to generate a unique tree per curve or a unique building per face. The manual warns that it is slower than plain fields for small pieces of geometry.
- Closure zone (Blender 5.0, Utilities > Closure). Packages nodes like a function that another node group runs with Evaluate Closure, so a tool can expose part of its behavior for the user to replace without editing the group.
What is new in Blender 5.x
- Blender 5.0: bundles group several values into one link, like a struct in programming, and closures arrive; both also exist in shader nodes. Volume grids can be processed directly with a new grid socket and a set of grid nodes. The Viewer node can show non-geometry data, and new node-group assets join the Essentials library, some of them as modifiers.
- Blender 5.1: Get Bundle Item and Store Bundle Item read and override a single item of a bundle, a Bone Info node reads the pose of individual bones, and node tools made in earlier versions must be opened and saved again in 5.1.
- Blender 5.2 LTS: an experimental physics system focused on hair and cloth; bundles that can be attached to a geometry and travel with it across modifiers and objects; lists, a new core data type next to single values, fields and grids; Geometry Nodes modifiers on empties; a Mesh Bevel node; a Sample Sound Frequencies node to drive animation from audio. The Python API for Geometry Nodes modifier properties also changed.
The rest of these releases, Cycles and EEVEE included, is summarized in the guide to Blender 5.
Performance, instances and rendering
An instance stores a reference to a geometry and a transform, not a copy of the data. The manual is explicit about the consequences: instancing is significantly more efficient than duplicating geometry, it reduces memory use, and render engines like Cycles handle the same geometry in many places better than duplicated data. In Cycles, every instance of a mesh shares one acceleration structure, as explained in the guide to the BVH in Blender.
- Realize Instances only when you must. The node turns instances into real geometry so each copy can be edited separately, but realized instances take more memory, and performance can become much worse with many instances of complex geometry. Most nodes process each unique geometry once, so a Subdivision Surface after Instance on Points subdivides one rock, not a thousand.
- Nested instances, instances of instances, render up to eight levels deep; deeper trees must be realized at the end of the node tree.
- Simulation zones evaluate every frame and add overhead; bake them once the setup is final. The blend-file must be saved before baking, and the manual warns that baked data written by one Blender version is not guaranteed to load in another.
- Where bakes are stored. Since Blender 4.3, bakes are packed into the .blend file by default; the modifier's Bake Target can send them to a folder on disk instead. A packed bake travels with the file, a disk bake needs its folder too. Baked to disk, a simulation can also be rendered out of order, which the manual points out for render farms.
- Find the slow node. The Timings overlay shows how long each node takes; muting nodes one by one isolates the culprit. Performance depends on the hardware, especially the CPU and memory bandwidth.
For the node editor shortcuts shared with the Shader Editor, see the guide to Blender shortcuts.
Frequently asked questions
What are Geometry Nodes in Blender?
Geometry Nodes is Blender's node-based system for creating and modifying geometry. You add a Geometry Nodes modifier to an object and build a node group in the Geometry Node Editor: the geometry enters through the Group Input node, goes through the nodes and leaves through the Group Output node. Everything stays procedural and editable.
What is the difference between Geometry Nodes and shader nodes?
Shader nodes build materials, which control how a surface looks when it is rendered: color, roughness, transparency. Geometry Nodes change the geometry itself, in the modifier stack: they add, move or delete points, faces, curves and instances. Attributes created in Geometry Nodes can then be read by a material with the Attribute node.
How do you scatter objects with Geometry Nodes?
Feed the surface into Distribute Points on Faces, plug its Points into Instance on Points, and connect the object to instance through an Object Info node. Random Value nodes vary the scale and rotation of each copy, and Join Geometry keeps the original surface in the result.
When were simulation nodes added to Blender?
Simulation nodes arrived in Blender 3.6 with the Simulation Input and Simulation Output nodes, which form a simulation zone. The Repeat zone followed in 4.0 and the For Each Element zone in 4.3. Blender 5.2 adds an experimental physics system focused on hair and cloth.
Do instances render faster than real geometry?
They use less memory. An instance only references a geometry and a transform, so a thousand instanced rocks store one rock. The Blender manual notes that render engines like Cycles handle instances better than duplicated data, and that realizing instances takes more memory.
Rendering the animation on TURNA
When a scene is already well optimised and the frame count is what takes the time, the remaining lever is rendering several frames at once. TURNA does this for Blender: an add-on (Blender 4.0 to 5.2, Cycles and Eevee) sends the scene in one click, and the frames are split across 1, 2, 4 or 8 GPUs in parallel, RTX 5090 first and RTX 4090 when none is free. The add-on shows the estimated cost before anything starts. Prices start at €4.90 per hour, billed on the time actually used, with a 2-minute minimum (30 seconds until November 9), and new accounts get €25 of free credit. A single still image is still rendered by one machine, so the gain is on animations. Tiers and worked examples are on the Blender render farm page.


