Nodes
The v1 node catalog — 66 kinds, grouped by namespace. Rendered
directly from @pylinka/graph.
input.*
Read particle and emitter state — position, velocity, age, life, time, spawn index.
input.age Age | in — out out:f32 |
input.ageNormalized Age (normalized) | in — out out:f32 |
input.emitterPosition Emitter position | in — out out:vec2 |
input.emitterVelocity Emitter velocity | in — out out:vec2 |
input.frame Frame | in — out out:f32 |
input.life Life | in — out out:f32 |
input.position Position | in — out out:vec2 |
input.spawnIndex Spawn index | in — out out:f32 |
input.time Time | in — out out:f32 |
input.velocity Velocity | in — out out:vec2 |
param.*
Read a project knob by reference.
param.ref Param | in — out out:f32 |
gen.*
Generators: stable/per-frame randomness and value, colour, and scale curves over life.
gen.colorOverLife Color over life | in from:color, to:color out out:color |
gen.curveOverLife Curve over life | in from:f32, to:f32 out out:f32 |
gen.frameRandom Frame random | in — out out:f32 |
gen.noise med Noise | in scale:f32, speed:f32 out out:f32 |
gen.random Random | in — out out:f32 |
gen.randomRange Random range | in min:f32, max:f32 out out:f32 |
gen.randomVec2 Random vec2 | in min:vec2, max:vec2 out out:vec2 |
gen.scaleOverLife Scale over life | in from:f32, to:f32 out out:f32 |
math.*
Arithmetic and vector helpers.
math.abs Abs | in x:f32 out out:f32 |
math.add Add | in a:f32, b:f32 out out:f32 |
math.clamp Clamp | in x:f32, min:f32, max:f32 out out:f32 |
math.component Component | in v:vec2 out out:f32 |
math.cos Cos | in x:f32 out out:f32 |
math.div Divide | in a:f32, b:f32 out out:f32 |
math.length Length | in v:vec2 out out:f32 |
math.mad Multiply-add | in a:f32, b:f32, c:f32 out out:f32 |
math.makeVec2 Make vec2 | in x:f32, y:f32 out out:vec2 |
math.makeVec4 Make vec4 | in x:f32, y:f32, z:f32, w:f32 out out:vec4 |
math.max Max | in a:f32, b:f32 out out:f32 |
math.min Min | in a:f32, b:f32 out out:f32 |
math.mix Mix | in a:f32, b:f32, t:f32 out out:f32 |
math.mul Multiply | in a:f32, b:f32 out out:f32 |
math.normalize Normalize | in v:vec2 out out:vec2 |
math.rotate2d Rotate 2D | in v:vec2, angle:f32 out out:vec2 |
math.sin Sin | in x:f32 out out:f32 |
math.splat Splat | in x:f32 out out:vec2 |
math.sub Subtract | in a:f32, b:f32 out out:f32 |
math.swizzle Swizzle | in v:vec2 out out:vec2 |
field.*
Analytic force fields that accumulate into a particle's motion.
field.directional Directional (wind) | in strength:f32, angle:f32 out force:vec2 |
field.drag Drag | in coefficient:f32 out drag:f32 |
field.gravity Gravity | in g:vec2 out force:vec2 |
field.radial Radial | in center:vec2, strength:f32 out force:vec2 |
shape.*
Spawn shapes, emitter-relative, feeding output.spawnPosition.
shape.burstRing Burst ring | in radius:f32 out pos:vec2 |
shape.circle Circle | in radius:f32 out pos:vec2 |
shape.point Point | in offset:vec2 out pos:vec2 |
shape.polygonalChain Polygonal chain | in start:vec2, end:vec2 out pos:vec2 |
shape.rectangle Rectangle | in size:vec2 out pos:vec2 |
shape.torus Torus | in innerRadius:f32, outerRadius:f32 out pos:vec2 |
output.*
Sinks — where results are written. Every system needs spawnPosition and initLife.
output.addForce Add force | in force:vec2 out — |
output.drag Drag | in drag:f32 out — |
output.initLife Init life | in life:f32 out — |
output.initTexIndex Init texture index | in index:f32 out — |
output.initVelocity Init velocity | in vel:vec2 out — |
output.killIf Kill if | in cond:bool out — |
output.killIfOutOfRect Kill if out of rect | in min:vec2, max:vec2 out — |
output.reflectInRect Reflect in rect | in min:vec2, max:vec2 out — |
output.setVelocity Set velocity | in vel:vec2 out — |
output.spawnPosition Spawn position | in pos:vec2 out — |
output.writeAlpha Write alpha | in alpha:f32 out — |
output.writeColor Write color | in color:color out — |
output.writePosition Write position | in pos:vec2 out — |
output.writeRotation Write rotation | in rot:f32 out — |
output.writeScale Write scale | in scale:f32 out — |
tex.*
Texture selection for rendering.
tex.random Random texture | in — out — |
tex.single Single texture | in — out — |
Reading a node
Each input port has a default value you can scrub inline or wire from another node's output.
Ports are typed; an f32 splats into a vec2/vec4, and
color interchanges with vec4, but other narrowing needs an explicit
math.component or math.swizzle. Nodes tagged med/high
cost more on low-tier devices.