Docs 3D and Particles

ParticlesGpuUltimate

A GPU particle system driven by images: a thresholded source emits particles, look, life, turbulence, wind and force fields shape them, a fluid simulation can carry them, with raw colour, position and optical-flow inputs and one rendered output.

⁂ 3D and Particles ◆ Patreon:Pro

This tool unlocks with Patreon. It installs through the same picker as everything else and unlocks with the Patreon Pro tier or higher, connected from inside TouchDesigner. Everything else in the toolkit stays free and MIT, and the membership is what keeps that work moving.

Join on Patreon → How unlocking works →

What it is

ParticlesGpuUltimate turns an image into a particle system and renders it. The source image is thresholded to decide where particles are born and what colour they carry; Look sets their material, size and fades; Life how long they last and how their life maps to size and alpha; Turbulence and Wind push them with fields that read the image's dark and bright sides differently; Forces adds point, radial or directional fields you place; and the Fluid page runs a fluid simulation the particles can ride, fed by the image, by a raw colour, position or optical-flow input, or by its own splats. The whole thing composites over the source or a background colour and comes out as one TOP.

It is a member of the FNS operator family: pick it from the FNS tab of the OP Create dialog and it lands as one node.

Inputs and output

  • in_main (TOP): the source image.
  • in_fluid (TOP): optional; an image that drives the fluid simulation.
  • in_col_raw, in_pos_raw, in_optflow_raw (TOP): optional raw colour, position and optical-flow maps that replace the ones derived from the source.
  • bg (TOP): the rendered particles over the background.

Parameters

Source

ControlType / defaultWhat it does
Source ResSourceres xyzw0 Resolution the source image is sampled at.
Source Thresh
ComparatorComparator menuLess How pixels are compared with the threshold to decide where particles are born.
Options: Less, Greater, Less or Equal, Greater or Equal, Equal, Not Equal
Source ThresholdSourcethreshold number0.5 The brightness a pixel needs, by the comparator, to emit particles.
Source Mix
OverUnderLay SourceMenu menuInput What is composited with the particles: the input, the thresholded source, or the fluid.
Options: Input, Thresholded, Fluid
Under OpacSourceunderopac number1 Opacity of the source image underneath the particles.
OperationOperand menuMultiply How the source and the particles are composited.
Options: Add, Atop, Average, Brightest, Burn Color, Burn Linear, Chroma Difference, Color and 38 more
OpacOpacity2 number1 Opacity of the composited source.
Comp Over Background ColorCompover on / offoff Composite the result over the background colour.
BgcolorBgcolor colour0 The background colour.

pGpu

ControlType / defaultWhat it does
Render ResRes xyzw0 The render resolution.
CreateCreate menuname1 Specify how particles are being created. You can either create a certain number of particles all at once or create a certain number of particles on a per frame basis.
Options: By Total Number of Particles, By Particles per Frame
Max Particles in SimulationMaxparticles number409600 How many particles the simulation holds at once.
BirthBirth number10000 The number of particles spawned each frame. Only available when the Create parameter is set to "By Particles per Frame".
Random InitPosRandominitpos on / offon Birth particles at random positions inside the source instead of in order.
CameraCamera operatorempty The camera the particles are rendered through.
Projection BlendProjectionblend number0 Blend between perspective (0) and orthographic (1) projection.
LightLight operatorlight1 The light used when rendering the particles.
Hit BehaviourHit menuBounce on Contact Specify what the particle should do when leaving the bounding box.
Options: None, Die on Contact, Bounce on Contact, Avoid Bounds, Stick, Fade Out
SpeedSpeed number1 Overall speed of the simulation.
DragDrag number1 How quickly particles lose speed.
PausePause on / offoff Freeze the simulation.
ResetReset button Reset the particle system.

Look

ControlType / defaultWhat it does
MaterialMaterial menuConstant Select which material type should be used for the particle system render.
Options: Constant, Phong, Line, PBR
Open MATOpen button Open the particle material to edit it.
SOPSop menuPoint The shape drawn for each particle: a point or a box.
Options: Point, Box
Particle Size MaxParticlesizemax number1 Specify the maximum size of the particle.
CompositingCompositing menuOrder-Independent Transparency How particle transparency is resolved when rendering.
Options: Alpha To Coverage, Discard Alpha, Order-Independent Transparency, No Depth Test
Alpha ThresholdAlphathreshold number0.8 Pixels of a particle below this alpha are discarded.
Fade
Fade InFadein number0.001 Specify the time in seconds a particle fades in after being spawned.
Fade OutFadeout number1 Specify the time in seconds a particle fades out before dying.
Fade to Color (Mult Alpha)Fadetocolor number1 How far particles fade toward black (multiplied alpha) over their life.
Fade to AlphaAlphafade number0 How far particles fade out over their life.
Fade to SizeFadetosize number0 How far particles shrink over their life.
Col to Size MapColtosizemap menuRed Which channel of the source colour sets particle size.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more
Col to Size CrossLumtosize number0 Blend between a fixed size and a size taken from the source colour.
Exponent ValueExpval number2 Exponent on the colour-to-size mapping: 1 is linear.
Size Mod InvertSizemodinvert number0 Invert the colour-to-size mapping, so darker areas give bigger particles.

Life

ControlType / defaultWhat it does
Life TypeLifetype menuConstant How life is set: the same for every particle, random, or read from an effector image.
Options: Constant, Random, Effector
LifeLife number2 The number of seconds a particle will be alive.
Life MaxLifemax number0 The longest a particle can live, in seconds.
LifevarianceLifevariance number2 A delta number of seconds that will be added or subtracted from the expected lifetime, specified in the Life parameter, of a particle.
Exponent ValueExpval2 number2 Exponent on the life effector mapping: 1 is linear.
To RangeTorange number0 The range the life effector is mapped to.
Works only with Random InitPos=Off
Random InitPosRandominitpos2 on / offon Birth particles at random positions (mirrors Random InitPos on the pGpu page).
InitPos/CurrPosEffectorswitchliferead-only on / offon Where the effector image is sampled: at the position a particle was born (off) or where it is now (on).
RGBRgb menuRed Which channel of the life effector image is read.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more

Turb

ControlType / defaultWhat it does
Turb GainTurbgain number1 Overall strength of the turbulence.
Trub Effector ExponentTurbexpval number2 Exponent on the turbulence effector image: 1 is linear.
Turb SeedTurbseed1 number0 Random seed of the turbulence noise.
Turb PeriodTurbperiod1 number0.5 Scale of the turbulence noise: larger periods give broader swirls.
Turb Trans SpeedTurbtrans xyzw0 How fast the turbulence noise moves on each axis.
RgbRgbturb menuLuminance Which channel of the turbulence effector image is read.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more
Dark Side
TurbTurb xyzw0 Turbulence on the dark side of the effector image, per axis.
Turb MagTurbmag number0 Strength of the dark-side turbulence.
Bright Side
TurbTurb1 xyzw0 Turbulence on the bright side of the effector image, per axis.
Turb MagTurbmag1 number0 Strength of the bright-side turbulence.
InitPos/CurrPosEffectorswitchturb on / offon Where the effector image is sampled: at the position a particle was born (off) or where it is now (on).

Wind

ControlType / defaultWhat it does
WindgainWindgain number0 Overall strength of the wind.
Wind Effector ExponentWindexpval number2 Exponent on the wind effector image: 1 is linear.
RgbRgbwind menuLuminance Which channel of the wind effector image is read.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more
Dark Side
WindWind1 xyzw0 Wind direction on the dark side of the effector image.
WindMagWindmag1 number0 Strength of the dark-side wind.
Wind VarianceWindvariance number0 Random variation of the dark-side wind.
Bright Side
WindWind xyzw0 Wind direction on the bright side of the effector image.
WindMagWindmag number0 Strength of the bright-side wind.
Wind VarianceWindvariance1 number0 Random variation of the bright-side wind.
InitPos/CurrPosEffectorswitchwind on / offon Where the effector image is sampled: at the position a particle was born (off) or where it is now (on).

Forces

ControlType / defaultWhat it does
ForcesForces sequence0 Extra forces placed in the scene, one block each.
Force TypeForces0forcetype menu2 The shape of this force: radial, axial, vortex or spiral.
Options: Radial, Axial, Vortex, Spiral
ForceposForces0forcepos xyzw0 Where this force sits.
Force RadiusForces0forceradius number1 How far this force reaches.
Force AmountForces0forceamount number0 Strength of this force; negative pulls instead of pushes.
ForcedirForces0forcedir xyzw0 The axis this force acts along, for the axial, vortex and spiral types.
Force TypeForces1forcetype menu2 The shape of this force: radial, axial, vortex or spiral.
Options: Radial, Axial, Vortex, Spiral
ForceposForces1forcepos xyzw0 Where this force sits.
Force RadiusForces1forceradius number1 How far this force reaches.
Force AmountForces1forceamount number0 Strength of this force; negative pulls instead of pushes.
ForcedirForces1forcedir xyzw0 The axis this force acts along, for the axial, vortex and spiral types.

FLUID

ControlType / defaultWhat it does
Output ResOutputres xyzw1920 Resolution of the fluid output.
Sim ResSimres xyzw256 Resolution the fluid is simulated at: lower is faster.
Optical Flow MagnitudeOptflowmag number0.01 Magnitude of the optical flow input force.
Enable FluidEnablefluid on / offoff Run the fluid simulation.
Fluid as SourceProgress number0 Blend between the plain source (0) and the fluid (1) as what emits particles.
VerticalstrengthVerticalstrength number0 Strength of the vertical push in the velocity map.
Force Map Velocity StrengthForcemapvelocitystrength number0.5 How strongly the force map drives the fluid velocity.
Output Max LumOutputmaxlum number1.5 Brightness cap of the fluid output.
Palette FlowFlow1 number0.01 How much the palette colours flow in the fluid.
Splat FlowFlow2 number0.2 How much splats flow in the fluid.
Density FlowFlow3 number0.2 How much density flows in the fluid.
DecayDecay1 number0.001 How quickly the fluid fades.
Pressure PassesPressurepasses number50 Pressure solver iterations: more is more accurate and slower.
Color DiffusionColordiffusion1 number0 How fast colour spreads through the fluid.
Velocity DiffusionVelocitydiffusion1 number0 How fast velocity spreads through the fluid.
VorticityVorticity1 number8 Strength of the swirls kept in the fluid.
PressurePressure1 number0.8 Pressure of the fluid.
PulsePulse button Add a splat to the fluid.
TimeTime number0 The fluid simulation clock.

Edit this page on GitHub →