Modular layouts
Walls, towers and houses placed by the graph, while you control the overall shape.
Connect nodes, adjust parameters and see the result update in your scene. Visual graphs for most jobs, a C# API when you need it.
200+ nodes in the box, from scattering to splines, meshes and physics queries.
Browse the node catalogConnect nodes, adjust parameters and see the result update in your scene. Every graph is a regular asset in your project.
New to OctoShaper? The getting-started tutorial builds a reusable graph step by step, with a video companion.
Layouts, buildings, vegetation, splines and meshes, each generated by a graph.
Walls, towers and houses placed by the graph, while you control the overall shape.
Floors, windows and roofs from your own modular pieces, stacked by the graph.
Grass and small plants over large areas, drawn with GPU instancing.
Bridges, walls and paths: your meshes placed and instanced along a curve.
Points sampled on meshes and terrain, culled by slope, with props that sit on the ground.
Landmarks like this arena, generated from a few parameters instead of modelled.
Use the OctoShaper skill to make a stylised rock graph. Expose the seed, point count and roughness.
I'll look up the nodes I need, then build and render the graph.
unity command octoshaper --operation catalog --request_json '{"query":"convex hull"}'→ Mesh.ConvexHull · Convex Hull Meshunity command octoshaper --operation iterate --request_file rock.iterate.json✓ saved Assets/Graphs/StylisedRock.asset✓ rendered perspective.pngDone. StylisedRock is saved, with Seed, Point Count and Roughness exposed.
Bezier paths live in the graph settings. Drag their handles in the Scene view and the graph follows.
Try ideas in an isolated stage without touching your open scene. Pin the preview to any node, and another node's points and edges as gizmos.
Drop one graph into another like any node, preview included. Each copy gets its own parameter values.
[NodeDefinition(Id = "mygame.jitter", Name = "Jitter Positions")]
public static void JitterPositions(ElementSet elements, float magnitude = 0.5f)
{
// Parameters show up as ports in the graph.
}if (executor.TrySetParameterOverride("Seed", seed))
executor.Evaluate(); // or await EvaluateAsync()Short, practical articles and video tutorials. Install, build your first graph, then pick the topic you need.
Dates are targets, not promises. The devlog has the details.
The full Unity package, with a stable set of features and public docs.
ShippedProcedural meshes, colours, textures and per-instance material overrides.
ShippedMixed instancing and async GPU rendering, for scenes with a lot more stuff in them.
Up nextThe same node graphs, made for the Godot engine.
In development