Generator node

L-System

Generative Lindenmayer-system line art: an editable grammar (axiom + rewrite rules) is expanded into up to a quarter-million line segments, then drawn as GPU-instanced animated strokes with growth, wind, pulse, flow, mandala symmetry, gradients and glow. It ships with 27 artistic presets — from Fractal Plant and Dragon Curve to Lightning and 3D Tree — and exposes its skeleton as live point outputs for Plexus, particles and other consumers. Reach for it for organic growth animations, fractal geometry, and anything that should look grown rather than drawn.

Inputs

PortTypeDefault
EnableOff clears the output to transparent without losing any settings.booltrue
AxiomThe starting symbol string the rules are applied to, usually one or two letters such as X or F.stringX
RulesThe grammar, one rule per line as X -> F+[[X]-X]. Weighted alternatives like (0.6) F | (0.4) FF give stochastic growth; lines starting with # are notes.stringX -> F+[[X]-X]-F[-FX]+X F -> FF
IterationsHow many times the rules are re-applied — each pass multiplies the detail. Clamped to 0…12, and the figure is truncated if it blows past the segment cap.int5
AngleHow far each turn symbol bends the path, in degrees. Any value works; 22.5 is the classic plant, 60 and 90 give geometric fractals.float22.5
SeedFixes the random choices in stochastic rules and in the 3D jitter. Any whole number; the same seed always redraws the same figure.int0
Length FalloffHow much shorter each generation of segments gets. Not clamped; 0.6…1 is the natural range, above 1 branches grow instead of tapering off.float1.0
Branch RollRolls every new branch around its parent, in degrees, turning a flat drawing into a spatial one. 137.5 gives the sunflower spiral; any value works.float0
TwistExtra roll added per segment, in degrees, so long branches corkscrew. Any value works; a few degrees is already visible.float0
Jitter 3DRandom pitch and roll per branch, in degrees, so no two limbs match. Not clamped; about 0…30 stays organic, more scatters the figure.float0
XHorizontal placement on the canvas, in Grafit units where 0 is centre. Any value works.float0
YVertical placement on the canvas, in Grafit units where 0 is centre and positive is up. Any value works.float0
ScaleOverall size of the figure. At least 0.001; 1 fits it to the viewport.float1.0
RotationTurns the whole figure, in degrees clockwise. Any value works; it just keeps spinning.float0
Depth 3DMorphs between the flattened version of the figure and its full 3D form. Clamped to 0…1.float1.0
Rotate YSpins the figure around its vertical axis, in degrees. Any value works, and it only shows once Depth 3D is above 0.float0
TiltTips the figure toward or away from the viewer, in degrees. Any value works, and it only shows once Depth 3D is above 0.float0
Camera DistanceHow strong the perspective is: 0 is flat orthographic, 3 is the natural default, 10 and up almost flat again. At least 0.float3.0
CameraSee this system through a Camera node — the same lens a 3D Scene or Particle System fed the same camera uses, which is what keeps their pictures aligned. Unplugged, Camera Distance and the classic view work exactly as before.structure—
Depth FadeDarkens the parts of the figure furthest from the camera, for depth. Clamped to 0…1, where 1 sinks the far end to black.float0
Fade RangeHow deep the near-to-far darkening ramp reaches, in Grafit units. At least 0.1; small values make the fade abrupt.float2.0
WidthStroke thickness at the trunk, in Grafit units. At least 0.0002; about 0.002…0.03 covers hairline to bold.float0.006
TaperHow much thinner each generation of branches gets. Clamped to 0…1, where 0 is a uniform stroke and 1 makes twigs almost vanish.float0.5
CapsRound or square line ends. Round reads softer and organic, square is crisper on geometric fractals.int0
CopiesRepeats the figure around a circle for mandala symmetry. Clamped to 1…24.int1
Copy AxisWhich axis the copies rotate around: Screen for a flat mandala, Carousel for a ring you look into, Wheel for a spinning wheel. Out-of-range values snap to the nearest.int0
MirrorAdds a mirrored twin of every copy, doubling the symmetry into a kaleidoscope.boolfalse
Copy RotateExtra rotation applied to each copy on top of its share of the circle, in degrees. Any value works.float0
GrowthHow much of the figure is drawn, from root to tips. Clamped to 0…1; animate it for a plant that grows on screen.float1.0
Growth ModeHow the growth advances: Path follows drawing order, By Depth reveals generation after generation, Per Branch lets branches race each other. Out-of-range values snap to the nearest.int0
Growth SoftnessHow long the advancing tip stays half-drawn — the softness of the growth front. Clamped to 0.001…1.float0.15
Grow VariabilityHow unevenly branches grow: 0 is one clean wave, 1 lets each branch set off at its own pace. Clamped to 0…1.float0
WindHow far the branches sway, with the outer twigs moving most. Not clamped; 0 is still, and about 0…1 stays believable.float0
Wind SpeedHow fast the sway cycles. Not clamped; 0 freezes the branches mid-bend and negative values reverse the sway.float1.0
PulseA breathing wave running through the stroke thickness. Not clamped; 0 is off and around 0…1 is the useful range.float0
Pulse SpeedHow fast the thickness wave breathes. Not clamped; negative values run it backwards.float1.0
FlowSpeed the dash pattern travels along the branches, and the metallic highlight sweep. Not clamped; negative flows the other way.float0
ShimmerRandom brightness flicker per segment, like leaves catching light. Not clamped; 0…1 is the useful range.float0
TimeOptional external clock in seconds for wind, pulse, flow and shimmer. Leave it negative to use the node's own clock; cable a Timer to scrub or sync the motion.float-1
ColorThe stroke colour in Solid mode, and the tint the metallic shading is built on.color—
Color ModeSolid paints one colour, Gradient reads the connected gradient, Metallic adds a brushed specular sheen. Out-of-range values snap to the nearest.int0
GradientCable a Gradient node here to colour the strokes. Up to 16 stops are used; with nothing connected the plain Color is used instead.structure—
Gradient ByWhat the gradient is read along: Depth, Path order, Branch, Angle, Length or Height. Out-of-range values snap to the nearest.int0
ShineStrength of the metallic highlight, used only in Metallic mode. At least 0; around 0.3…1.5 reads as brushed metal.float0.5
Opacity FalloffFades the deeper generations of branches out. Clamped to 0…1, where 1 leaves only the trunk solid.float0
DashDash period along the stroke, in path units. At least 0, and 0 draws solid lines; small values give fine ticks.float0
Dash RatioHow much of each dash period is ink rather than gap. Clamped to 0.05…0.95.float0.5
Glow PowerStrength of the bloom halo around the strokes. At least 0; 0 is off and 1…3 is a strong neon glow.float0
Glow CutoffHow bright a pixel must be before it glows. At least 0; low values make everything bloom, high values only the brightest strokes.float0.3
Glow SpreadHow far the bloom reaches. Clamped to 1…5, where 5 is the widest, softest halo.int3

Outputs

PortType
Imageimage
WidthStroke thickness at the trunk, in Grafit units. At least 0.0002; about 0.002…0.03 covers hairline to bold.float
Heightfloat
Pointsstructure
Tipsstructure
Live Tipsstructure
Structurestructure
Countint
Truncatedbool

Live Preview

Interactive — Iterative growth and branching angle

How It Works

The pipeline has a CPU half and a GPU half. On the CPU, the Axiom string is rewritten by the Rules for Iterations passes (clamped 0–12, bounded at 1 000 000 symbols — overflow sets the Truncated output instead of failing silently). Rule syntax is one rule per line with # comments; both -> and = are accepted, and stochastic rules use weight-tagged alternatives: X -> (0.6) F[+X] | (0.4) F[-X]. Stochastic choices use a seeded RNG, so the same Seed always replays the same figure.

The expanded symbol string is walked by a 3D turtle (ABOP-standard alphabet):

SymbolsAction
F G A BDraw forward
f gMove forward without drawing
+ -Yaw ± Angle
`\`Yaw 180°
& ^Pitch ± Angle (3D)
\ /Roll ± Angle (3D)
[ ]Push / pop turtle state (start / end a branch)
!Stroke width × 0.75
'Color index + 1 (shifts the gradient coordinate)
> <Segment length × 1.25 / × 0.8
anything elseStructural no-op (X, Y placeholders)

Three turtle-level parameters add 3D character to any grammar without editing its rules: Branch Roll rolls the frame at every [ (137.5° gives golden-angle phyllotaxis — planar plants become 3D bushes), Twist rolls after every drawn segment (flat curves become spatial ribbons), and Jitter 3D applies seeded random pitch/roll per branch. The figure is normalized root-anchored: the start point sits at the origin and the longest bounding-box side is scaled to 1.6 Grafit units. Segment count is capped at 250 000.

Geometry is rebuilt only when a grammar/turtle input changes (hash-cached); everything else — growth reveal, wind, pulse, dash flow, symmetry copies, perspective — is computed per frame in a single instanced GPU draw call from baked per-segment attributes, at zero CPU cost. A planarized twin of the figure is baked alongside the 3D form, and Depth 3D morphs between them entirely on the GPU (0 = flat, 1 = full 3D).

Growth (0–1) reveals the figure. Three modes:

Growth ModeValueBehavior
Path0A distance wave from the root: a segment starts growing exactly when its parent's tip finishes, so the figure is a connected tree at every growth value — no floating pieces
By Depth1Reveal front keyed on bracket-nesting depth, softened by Growth Softness
Per Branch2Branches appear in a stable pseudo-random order, each sweeping along its own length

Grow Variability (Path mode) gives each branch a seeded random growth speed that compounds down the hierarchy, so branches race organically while staying connected.

Color Mode — Solid (the Color port), Gradient (a connected Gradient node sampled by Gradient By: Depth, Path, Branch, Angle, Length, or Height, offset by ' color indices), or Metallic (cylindrical shading with anisotropic specular controlled by Shine). Dash cuts strokes into a dash pattern (Dash Ratio = filled fraction) and Flow animates it along the path; Flow without Dash becomes a traveling brightness wave. Wind is a position-only displacement field (so parent and child segments can never tear apart at joints), Pulse breathes the stroke width, Shimmer adds per-segment brightness sparkle. All animation defaults to 0 — nothing moves by itself; the Time port (< 0 = internal clock) lets you drive or scrub the clock externally.

Copies (1–24) plus Copy Axis build symmetry: Screen (mandala in the screen plane), Carousel (copies fanned around the vertical axis), Wheel (around the horizontal axis). Mirror doubles everything with an X-flip, and Copy Rotate adds per-copy rotation. Camera Distance applies per-endpoint perspective (0 = orthographic), and Depth Fade darkens far elements toward black over Fade Range.

Beyond Image / Width / Height (figure bounding box × Scale), the node emits its skeleton as structures: Points (all segment endpoints), Tips (terminal endpoints), Live Tips (the tips of the currently grown tree — in Path mode slot-stable, one point per final tip, so index-paired consumers never flicker), Structure (an ordered bundle { root, tips, forks, liveTips } — open it with Get by Name), Count (segment count), and Truncated. All point outputs pass through the exact same transform chain as the rendered figure (including wind and perspective), capped at 10 000 points per category. Output is premultiplied alpha, and Enable = false clears the texture.

Parameters in Depth

Grammar

PortDefaultMeaning
EnabletrueOff clears the output texture
AxiomXStarting symbol string
RulesX -> F+[[X]-X]-F[-FX]+X / F -> FFRewrite rules, one per line; `\ alternatives with (weight) prefixes; #` comments
Iterations5Rewrite passes, clamped 0–12
Angle22.5Turn angle in degrees for + - & ^ \ /
Seed0Drives stochastic rules and Jitter 3D — fully deterministic per seed
Length Falloff1.0Segment length multiplier per branch depth (< 1 = branches shrink)
Branch Roll0Degrees of roll per [ — 137.5 = phyllotaxis, makes planar grammars 3D
Twist0Degrees of roll per drawn segment — flat curves become spatial ribbons
Jitter 3D0Seeded random pitch/roll per branch, degrees

Transform & 3D

PortDefaultMeaning
X / Y0 / 0Root position in Grafit units (the figure is root-anchored)
Scale1.0Uniform scale (figure is pre-normalized to 1.6 units on its longest side)
Rotation0Degrees, clockwise
Depth 3D1.0GPU morph between flat twin (0) and full 3D form (1)
Rotate Y0Spin around the vertical axis, degrees
Tilt0Tilt around the horizontal axis, degrees
Camera Distance3.0Perspective strength; 0 = orthographic, higher = weaker perspective
Depth Fade00 = off … 1 = far elements go black
Fade Range2.0Z span of the near-to-far darkening ramp, Grafit units

Stroke, Symmetry & Growth

PortDefaultMeaning
Width0.006Base stroke width, Grafit units
Taper0.50–1: deeper branches thin down to 12 % of base width
Caps00 Round · 1 Square stroke caps
Copies1Symmetry copies, 1–24, evenly spaced
Copy Axis00 Screen · 1 Carousel · 2 Wheel
MirrorfalseX-mirrored duplicate of every copy
Copy Rotate0Extra per-copy rotation, degrees
Growth1.00–1 reveal; 1 = fully drawn
Growth Mode00 Path · 1 By Depth · 2 Per Branch
Growth Softness0.15Soft-front width for Depth/Branch modes
Grow Variability00 = uniform wave · 1 = branches race at random seeded speeds

Animation, Color & Glow

PortDefaultMeaning
Wind0Sway amplitude; grows with distance from the root
Wind Speed1.0Wind time scale
Pulse0Stroke-width breathing wave along the path
Pulse Speed1.0Pulse time scale
Flow0Dash travel speed (or a brightness wave when Dash = 0)
Shimmer0Per-segment random brightness sparkle
Time-1External clock in seconds; < 0 = internal clock
Color(0.65, 0.95, 0.55, 1.0)Solid stroke color
Color Mode00 Solid · 1 Gradient · 2 Metallic
Gradient—Gradient-node stops (max 16), used by Gradient mode
Gradient By00 Depth · 1 Path · 2 Branch · 3 Angle · 4 Length · 5 Height
Shine0.5Metallic specular sharpness/strength
Opacity Falloff0Deeper branches fade toward 12 % opacity
Dash0Dash period in Grafit units (0 = solid strokes)
Dash Ratio0.5Filled fraction of each dash period (clamped 0.05–0.95)
Glow Power0Post-process bloom intensity
Glow Cutoff0.3Brightness threshold for bloom
Glow Spread3Bloom radius, 1–5

Presets

The inspector's preset dropdown writes into the ports (Axiom, Rules, Angle, Iterations, Length Falloff, Taper, Rotation, Branch Roll, Twist) — an editable starting point, not a mode. The 27 presets:

Botanical: Fractal Plant, Fern, Bushy Tree, Weeping Willow, Wild Grass, Grass Clump, Vine, Root System, Seaweed, Conifer.

Geometric / fractal: Dragon Curve, Koch Snowflake, Koch Island, Sierpinski, Hilbert Curve, Gosper Curve, Levy C Curve, Pentaflake, Crystal, Cross Fractal.

Artistic / organic: Lightning, Coral, Mandala, Snow Crystal, Circuit Board, Feather, 3D Tree.

Use Cases

  • Growing plant: Fractal Plant preset, Time → LFO (sawtooth) → Growth in Path mode with Grow Variability 0.5 — a tree that grows connected from the root, branches racing organically
  • Audio-reactive fractal: Audio FFT → Remap → Wind and Pulse on a Fern, with Glow Power for a concert visual
  • Mandala engine: any preset + Copies 8–12 on Copy Axis Screen, Rotation driven by Time — instant kaleidoscopic symmetry; switch to Carousel and add Rotate Y for a 3D crown
  • Plexus hybrid: L-System Live Tips → Plexus Points — a constellation web that rides the advancing growth front (slot-stable in Path mode, so it never flickers)
  • Particle emitter skeleton: Structure → Get by Name (forks or tips) → a particle system's emitter points, so sparks pour from branch junctions
  • Neon signage: Dragon Curve preset, Color Mode Metallic with high Shine, Dash 0.05 + Flow 2 for marching neon dashes, plus Glow

Tips

  • The Image output needs a Canvas node to be visible; Width/Height report the figure's bounding box (× Scale), so a Canvas can wrap it exactly
  • Iterations is exponential — going from 5 to 7 can multiply segments by 16×. Watch the Truncated output (and the inspector warning) and back off rather than pushing the 250 000-segment cap
  • Path growth mode guarantees a connected tree at every Growth value; By Depth and Per Branch are stylistic fronts that may reveal detached pieces mid-animation
  • Wind is deliberately visual-only for point outputs on static patches; cable the Time port if downstream point consumers must sync exactly with the swaying image
  • Branch Roll 137.5 is the single most effective knob: it turns any flat preset into a believable 3D bush — then spin it with Rotate Y
  • A preset is a starting point: edit the Rules text afterwards and the dropdown flips to Custom without losing your changes
  • Glow, like all generator bloom, is a post-process; AA is global (the app-wide AA multiplier), with no per-node quality settings

Open L-System in the interactive catalog →

L-System is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Generator nodes