DLG v1.2.1

Summary

DLG (Differential Line Growth) is a GPU-accelerated simulation that creates organic branching line patterns through iterative edge subdivision based on neighbor proximity. This operator generates complex, brain coral-like structures by splitting edges when vertices become too crowded, allowing the line to grow and fold upon itself in intricate ways. The algorithm checks each vertex against its neighbors within a maximum distance, and subdivides edges when density thresholds are exceeded, creating natural-looking growth patterns.

The simulation operates on line strips (open or closed loops) and can optionally use curvature information to influence growth direction, creating more varied branching behavior. You control growth characteristics through parameters like growth strength (subdivision rate), max distance (neighbor search radius), max neighbors (crowding threshold), and vertex limits to cap complexity. The line is smoothed each iteration using gaussian or other filter types to maintain organic curves, with adjustable edge distance and smoothing effect controlling the final aesthetic.

DLG supports constraint systems to guide growth within specific regions: geometry constraints project vertices onto surfaces (creating growth confined to objects), while volume constraints use 2D/3D textures to define allowed growth spaces with force-based repulsion. Optional noise can replace the Mass attribute to create more varied growth patterns, with full control over perlin noise parameters including harmonics, amplitude, and animation. Bounding limits allow clamping growth to specific XYZ ranges, making DLG ideal for organic decoration, procedural lace patterns, coral structures, brain-like forms, and abstract linear art.

Parameters

Page: DLG

Target Line Update POP Lineupdatepop Reference to a POP node downstream in the network. This reference will cause a feedback loop and re-injects the line geometry next frame.
Max Number of Vertices Maxverts Vertex limit to prevent infinite growth and control complexity.
Growth Strength Growthstrength Rate of edge subdivision and line growth per iteration.
Mass Mass Per-vertex mass controlling resistance to growth forces.
Max Distance Maxdistance Search radius for neighbor proximity checks (smaller = denser growth).
Distribution Distribution Distribution method for neighbor search queries.
Num Hash Buckets Numhashbuckets Number of hash buckets for spatial neighbor lookups.
Max Neighbors Maxneighbors Maximum neighbor count before edge subdivision triggers.
Line Strips Linestrips Close (connected loops) or Open (line segments with endpoints).
Close closelinestrips
Open openlinestrips
Filter Type Filtertype Smoothing filter algorithm (gaussian, box, etc.) for line curves.
Edge Distance Filterdist Smoothing kernel size along edges (larger = smoother curves).
Smooth Effect Effect Blend amount between original and smoothed positions (0-1).
Initialize Initializepulse Pulse to reset simulation with initial line geometry.
Start Startpulse Pulse to begin simulation from initialized state.
Play Play Toggle continuous simulation playback.
Step Steppulse Pulse to advance simulation by one iteration while paused.

Page: Collisions

Limit Type Minimum Mintype Method for enforcing the minimum position limit per axis.
Off off
Clamp clamp
Loop loop
Zig Zag zigzag
Limit Type Maximum Maxtype Method for enforcing the maximum position limit per axis.
Off off
Clamp clamp
Loop loop
Zig Zag zigzag
Minimum Value Min Lower bound for XYZ position limits.
Minimum Value Min1
Minimum Value Min2
Minimum Value Min3
Maximum Value Max Upper bound for XYZ position limits.
Maximum Value Max1
Maximum Value Max2
Maximum Value Max3
Collision Type Collisiontype Selects the collision geometry type for constraining line growth.
None none
POP (Windows Only) pop
Box box
Plane plane
Sphere sphere
Torus torus
3D SDF 3dsdf
T3D t3d
2D SDF 2dsdf
T2D t2d
Collision Damping Collisiondamping Amount of velocity dampening applied when vertices collide with the collision geometry.
Solid Solid Treats the collision geometry as a solid volume, preventing vertices from passing through.
Project Project Projects vertices onto the surface of the collision geometry.
Collision POP Collisionpop Reference to a POP containing the collision geometry when using POP collision type.
Collision Offset Collisionoffset Offset distance from the collision surface to prevent z-fighting artifacts.
Size Size Size of the box collision geometry.
Size Sizex
Size Sizey
Size Sizez
Radius Radius Radius of the collision geometry per axis.
Radius Radiusx
Radius Radiusy
Radius Radiusz
Corner Radius Cornerradius Radius of rounded corners on the box collision geometry.
Collison TOP Collisontop Reference to a TOP texture used as the collision field for SDF and texture collision types.
Use Custom Bounds Usecustombounds Enables custom bounding box for the collision texture instead of using the texture's native bounds.
Lower Bounds Lowerbounds Lower bounds of the collision volume in world space.
Lower Bounds Lowerboundsx
Lower Bounds Lowerboundsy
Lower Bounds Lowerboundsz
Upper Bounds Upperbounds Upper bounds of the collision volume in world space.
Upper Bounds Upperboundsx
Upper Bounds Upperboundsy
Upper Bounds Upperboundsz
Transform Order Xord Sets the order of scale, rotate, and translate operations for the collision geometry transform.
Scale Rotate Translate srt
Scale Translate Rotate str
Rotate Scale Translate rst
Rotate Translate Scale rts
Translate Scale Rotate tsr
Translate Rotate Scale trs
Rotate Order Rord Sets the order of rotation operations for the collision geometry transform.
Rx Ry Rz xyz
Rx Rz Ry xzy
Ry Rx Rz yxz
Ry Rz Rx yzx
Rz Rx Ry zxy
Rz Ry Rx zyx
Translate T Translation of the collision geometry in world space.
Translate Tx
Translate Ty
Translate Tz
Rotate R Rotation of the collision geometry in degrees.
Rotate Rx
Rotate Ry
Rotate Rz
Scale S Scale of the collision geometry per axis.
Scale Sx
Scale Sy
Scale Sz
Pivot P Pivot point for the collision geometry transform.
Pivot Px
Pivot Py
Pivot Pz
Uniform Scale Scale Uniform scale factor applied to the collision geometry.
Display Geometry Displaygeo Shows the collision geometry in the viewport for visualization.
Display Color Displaycolor Display color for the collision geometry visualization.
Display Color Displaycolorr
Display Color Displaycolorg
Display Color Displaycolorb

Page: Noise

Apply Noise Applynoise Replaces the Mass attribute with noise to create varied growth patterns.
Type Type Noise algorithm type and dimensionality.
Perlin 2D (GPU) perlin2d
Perlin 3D (GPU) perlin3d
Perlin 4D (GPU) perlin4d
Simplex 2D (GPU) simplex2d
Simplex 3D (GPU) simplex3d
Simplex 4D (GPU) simplex4d
Seed Seed Numerical value that initializes the randomization.
Period Period Period (scale) of the noise field.
Harmonics Harmon The number of higher frequency components to layer on top of the base frequency. 0 harmonics give the base shape.
Harmonic Spread Spread The factor by which the frequency of a harmonic increases relative to the previous harmonic.
Harmonic Gain Gain Amplitude of the Harmonics layered on top of the base frequency.
Amplitude Amp The noise values amplitude (a scale on the values output).
Exponent Exp Sets the exponent. The internal value is raised by the power of the exponent.
Offset Offset Constant added to noise output for bias adjustment.
Animate Animate Time-based noise evolution speed for animated variation.

Page: Common

Free Extra GPU Memory Freeextragpumem Free memory that has accumulated when output memory has grown and shrunk.

Inputs

Input 0 POP LineStrip In
Input 1 POP Constraint Geometry
Input 2 TOP Constraint Volume

Outputs

Output 0 POP LineStrip Out