reckfellENGINE

GpuParticles3D

A 3D particle emitter.

On this page
class GpuParticles3DReckfellSharpInherits GeometryInstance3D

A 3D particle emitter.

3D particle node used to create a variety of particle systems and effects. GpuParticles3D features an emitter that generates some number of particles at a given rate. Use GpuParticles3D.ProcessMaterial to add a ParticleProcessMaterial to configure particle appearance and behavior. Alternatively, you can add a ShaderMaterial which will be applied to all particles.

Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.

Constructors1

GpuParticles3DConstructor
# GpuParticles3D
C#
public GpuParticles3D();

Properties32

AmountProperty
# Amount
C#
public int Amount { get; set; }

Capacity, at least 1. Changing it in the current RenderingDevice implementation frees particle data and resets phase for reallocation. Use AmountRatio for emission fraction without changing capacity. Not an exact visible-particle count.

AmountRatioProperty
# AmountRatio
C#
public float AmountRatio { get; set; }

Emission fraction of allocated Amount; supply 0 to 1. Does not reduce allocated capacity or instantly remove live particles. Birth behavior also depends on the simulation material.

CollisionBaseSizeProperty
# CollisionBaseSize
C#
public float CollisionBaseSize { get; set; }

Base particle collision size. Distinct from mesh scale and VisibilityAabb; the material CollisionUseScale controls scale participation. CollisionMode and a GPU-particle collider are required.

DrawOrderProperty
# DrawOrder
C#
public GpuParticles3D.DrawOrderEnum DrawOrder { get; set; }

Particle draw order. Note: GpuParticles3D.DrawOrderEnum.Index is the only option that supports motion vectors for effects like TAA. It is suggested to use this draw order if the particles are opaque to fix ghosting artifacts.

DrawPass1Property
# DrawPass1
C#
public Mesh DrawPass1 { get; set; }

First drawing-pass mesh. Its surface determines appearance separately from ProcessMaterial. Null hides this pass geometry but does not stop simulation.

DrawPass2Property
# DrawPass2
C#
public Mesh DrawPass2 { get; set; }

Mesh that is drawn for the second draw pass.

DrawPass3Property
# DrawPass3
C#
public Mesh DrawPass3 { get; set; }

Mesh that is drawn for the third draw pass.

DrawPass4Property
# DrawPass4
C#
public Mesh DrawPass4 { get; set; }

Mesh that is drawn for the fourth draw pass.

DrawPassesProperty
# DrawPasses
C#
public int DrawPasses { get; set; }

The number of draw passes when rendering particles.

DrawSkinProperty
# DrawSkin
C#
public Skin DrawSkin { get; set; }
EmittingProperty
# Emitting
C#
public bool Emitting { get; set; }

Controls new particle births. False neither removes live particles nor pauses simulation; a one-shot can report false before its effect disappears. Use Restart for a new cycle: repeated true during an active one-shot can cancel its Finished notification.

ExplosivenessProperty
# Explosiveness
C#
public float Explosiveness { get; set; }

Birth-interval compression: 0 distributes births through the cycle, 1 concentrates them at the burst start. Does not set travel velocity or ProcessMaterial forces.

FixedFpsProperty
# FixedFps
C#
public int FixedFps { get; set; }

Fixed simulation-step rate, not a drawing frame-rate limit. A positive value selects steps of 1/FPS. At 0, current RD uses variable delta for ordinary particles, while trails can require an internal fixed step. Defaults to 30; the example explicitly selects 60.

FractDeltaProperty
# FractDelta
C#
public bool FractDelta { get; set; }

Refines the DELTA fraction for a particle born within a step. This is neither general float precision nor draw interpolation. Current RD applies it during ordinary emission-phase calculation; do not assume identical effects for all manual/sub-emission paths.

InterpToEndProperty
# InterpToEnd
C#
public float InterpToEnd { get; set; }

Value supplied to a particle shader as INTERPOLATE_TO_END, clamped to 0–1. Built-in ParticleProcessMaterial uses it in age calculation; a custom ShaderMaterial must apply it explicitly. It is neither Lifetime duration nor Interpolate frame smoothing.

InterpolateProperty
# Interpolate
C#
public bool Interpolate { get; set; }

Draw interpolation between simulation steps. It neither replaces FixedFps nor adds process() calls and is distinct from InterpToEnd. Current RD uses it when applying the time remainder to instance data.

LifetimeProperty
# Lifetime
C#
public double Lifetime { get; set; }

Lifetime/cycle duration in seconds, strictly greater than zero. Along with Amount and birth timing affects density; not the time until Emitting stops or an exact frame count.

LocalCoordsProperty
# LocalCoords
C#
public bool LocalCoords { get; set; }

If true, live particles follow the emitter transform; if false, spawned particles remain in world space as it moves. Choose the space before starting: switching a live effect does not guarantee preserving its appearance.

OneShotProperty
# OneShot
C#
public bool OneShot { get; set; }

One cycle instead of looping. Finished reports one-shot completion, not every manual stop of a continuous emitter. An explosive cycle can stop spawning before its particles expire.

PreprocessProperty
# Preprocess
C#
public double Preprocess { get; set; }

Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting. Note: This can be very expensive if set to a high number as it requires running the particle shader a number of times equal to the GpuParticles3D.FixedFps (or 30, if GpuParticles3D.FixedFps is 0) for every second. In extreme cases it can even lead to a GPU crash due to the volume of work done in a single frame.

ProcessMaterialProperty
# ProcessMaterial
C#
public Material ProcessMaterial { get; set; }

Simulation material, such as ParticleProcessMaterial. Controls behavior rather than the mesh surface. A visible effect separately needs a draw-pass mesh with a surface material.

RandomnessProperty
# Randomness
C#
public float Randomness { get; set; }

Emission randomness ratio.

SeedProperty
# Seed
C#
public uint Seed { get; set; }

Particle random seed. To preserve it across Restart, enable UseFixedSeed or pass keepSeed=true. The seed alone does not fix all simulation conditions and steps.

SpeedScaleProperty
# SpeedScale
C#
public double SpeedScale { get; set; }

Simulation progression scale. Zero pauses ordinary progression but does not hide live geometry. Camera motion and transforms with LocalCoords can change the image while paused. Not rendering FPS. 1.0.0 timing limitation: after a long SpeedScale = 0 pause and resuming to 1, the tested one-shot can emit Finished while GPU particles are still visible. The scene timer multiplies accumulated elapsed time by the current speed scale; it is not a GPU-expiry fence. Do not recycle a time-scaled effect from this signal alone. Keeping a simple one-shot at fixed speed avoids this particular pause/resume case; validate a separate lifecycle policy when changing simulation time.

SubEmitterProperty
# SubEmitter
C#
public EntityPath SubEmitter { get; set; }

Path from this emitter to an existing target GpuParticles3D. Assign after both Entities exist; births also require the primary ProcessMaterial mode. Does not create an Entity per particle. Avoid self-links/cycles; revalidate after hierarchy changes.

TrailEnabledProperty
# TrailEnabled
C#
public bool TrailEnabled { get; set; }

Enables trail history. Requires compatible mesh poses and UseParticleTrails on the effective surface. The current RenderingDevice rebuilds data when this setting is assigned; do not update it every frame as a cheap animation.

TrailLifetimeProperty
# TrailLifetime
C#
public double TrailLifetime { get; set; }

History duration in seconds, not particle Lifetime or rest-mesh length. Minimum approximately 0.01; the current RD backend caps history at 10 seconds although the scene getter stores the request. Changes rebuild data/phase; account for motion, step and budget.

TransformAlignProperty
# TransformAlign
C#
public GpuParticles3D.TransformAlignEnum TransformAlign { get; set; }

Alignment of the rendered particle transform. YToVelocity is the example starting point for directional geometry/trails. Does not change velocity or guarantee freedom from twisting/flattening on every path.

TransformAlignAxisProperty
# TransformAlignAxis
C#
public RenderingServer.ParticlesTransformAlignAxis TransformAlignAxis { get; set; }

When using transform align local billboard, which axis to use for the billboarding. Supports only X or Y.

TransformAlignChannelFilterProperty
# TransformAlignChannelFilter
C#
public RenderingServer.ParticlesTransformAlignCustomSrc TransformAlignChannelFilter { get; set; }

In the case of billboarded particles, which custom channel to read from to calculate their angle.

UseFixedSeedProperty
# UseFixedSeed
C#
public bool UseFixedSeed { get; set; }

Preserves the assigned Seed during ordinary restarts. Helps repeat an effect but does not guarantee bitwise determinism across drivers, time steps or builds.

VisibilityAabbProperty
# VisibilityAabb
C#
public Aabb VisibilityAabb { get; set; }

Custom culling bound for the whole emitter. If offscreen, it can hide otherwise visible particles. Not current-frame CaptureAabb, a trajectory clamp or a collider; cover the entire effect and mesh sizes.

Methods65

CaptureAabbAabb
# CaptureAabb
C#
public Aabb CaptureAabb();

Reads current active particle bounds. Observing a running effect does not cover all future trajectories or automatically assign VisibilityAabb. GPU readback can have a cost.

Returns Aabb

Aabb of the current state; inspect multiple times and extreme settings before using it for culling.

ConvertFromParticlesvoid
# ConvertFromParticles
C#
public void ConvertFromParticles(Entity particles);

Sets this node's properties to match a given CpuParticles3D node.

Parameters
NameTypeDefault
particlesEntity—
EmitParticlevoid
# EmitParticle
C#
public void EmitParticle(Transform3D xform, Vector3 velocity, Color color, Color custom, uint flags);

Requests manual emission of one GPU particle. Flags identify supplied fields; custom start() code must respect RESTART_POSITION/ROT_SCALE/VELOCITY/COLOR/CUSTOM to preserve them. A particle is not a new Entity. Available capacity, ProcessMaterial, draw material and correct bounds are required; the method does not return visibility confirmation.

Parameters
NameTypeDefault
xformTransform3D—
velocityVector3—
colorColor—
customColor—
flagsuint—
xform

Particle transform. Position and RotationScale flags select translation and basis separately; do not apply EMISSION_TRANSFORM again to already-world-space data.

velocity

Initial velocity when the Velocity flag is set; match its space to LocalCoords.

color

Particle COLOR when the Color flag is set. The draw surface must use it.

custom

Four CUSTOM components when the Custom flag is set. C# uses Color as a carrier; the shader defines their meaning.

flags

Bitwise GpuParticles3D.EmitFlags combination explicitly cast to uint. An absent flag requires the corresponding field to be initialized in start().

GetAmountint
# GetAmount
C#
public int GetAmount();

Returns Amount. Capacity, at least 1. Changing it in the current RenderingDevice implementation frees particle data and resets phase for reallocation. Use AmountRatio for emission fraction without changing capacity. Not an exact visible-particle count.

Returns int

Current Amount value in the described units; account for the property limitations.

GetAmountRatiofloat
# GetAmountRatio
C#
public float GetAmountRatio();

Returns AmountRatio. Emission fraction of allocated Amount; supply 0 to 1. Does not reduce allocated capacity or instantly remove live particles. Birth behavior also depends on the simulation material.

Returns float

Current AmountRatio value in the described units; account for the property limitations.

GetCollisionBaseSizefloat
# GetCollisionBaseSize
C#
public float GetCollisionBaseSize();
Returns float
GetDrawOrderGpuParticles3D.DrawOrderEnum
# GetDrawOrder
C#
public GpuParticles3D.DrawOrderEnum GetDrawOrder();
Returns GpuParticles3D.DrawOrderEnum
GetDrawPassMeshMesh
# GetDrawPassMesh
C#
public Mesh GetDrawPassMesh(int pass);

Returns the Mesh that is drawn at index pass.

Parameters
NameTypeDefault
passint—
Returns Mesh
GetDrawPassesint
# GetDrawPasses
C#
public int GetDrawPasses();
Returns int
GetExplosivenessRatiofloat
# GetExplosivenessRatio
C#
public float GetExplosivenessRatio();

Returns Explosiveness. Birth-interval compression: 0 distributes births through the cycle, 1 concentrates them at the burst start. Does not set travel velocity or ProcessMaterial forces.

Returns float

Current Explosiveness value in the described units; account for the property limitations.

GetFixedFpsint
# GetFixedFps
C#
public int GetFixedFps();

Fixed simulation-step rate, not a drawing frame-rate limit. A positive value selects steps of 1/FPS. At 0, current RD uses variable delta for ordinary particles, while trails can require an internal fixed step. Defaults to 30; the example explicitly selects 60.

Returns int

Stored FixedFps rate.

GetFractionalDeltabool
# GetFractionalDelta
C#
public bool GetFractionalDelta();

Refines the DELTA fraction for a particle born within a step. This is neither general float precision nor draw interpolation. Current RD applies it during ordinary emission-phase calculation; do not assume identical effects for all manual/sub-emission paths.

Returns bool

Stored fractional-delta flag.

GetInterpToEndfloat
# GetInterpToEnd
C#
public float GetInterpToEnd();

Value supplied to a particle shader as INTERPOLATE_TO_END, clamped to 0–1. Built-in ParticleProcessMaterial uses it in age calculation; a custom ShaderMaterial must apply it explicitly. It is neither Lifetime duration nor Interpolate frame smoothing.

Returns float

Stored value after clamping to 0–1.

GetInterpolatebool
# GetInterpolate
C#
public bool GetInterpolate();

Draw interpolation between simulation steps. It neither replaces FixedFps nor adds process() calls and is distinct from InterpToEnd. Current RD uses it when applying the time remainder to instance data.

Returns bool

Stored Interpolate flag.

GetLifetimedouble
# GetLifetime
C#
public double GetLifetime();

Returns Lifetime. Lifetime/cycle duration in seconds, strictly greater than zero. Along with Amount and birth timing affects density; not the time until Emitting stops or an exact frame count.

Returns double

Current Lifetime value in the described units; account for the property limitations.

GetOneShotbool
# GetOneShot
C#
public bool GetOneShot();

Returns OneShot. One cycle instead of looping. Finished reports one-shot completion, not every manual stop of a continuous emitter. An explosive cycle can stop spawning before its particles expire.

Returns bool

Current OneShot value in the described units; account for the property limitations.

GetPreProcessTimedouble
# GetPreProcessTime
C#
public double GetPreProcessTime();
Returns double
GetProcessMaterialMaterial
# GetProcessMaterial
C#
public Material GetProcessMaterial();

Returns ProcessMaterial. Simulation material, such as ParticleProcessMaterial. Controls behavior rather than the mesh surface. A visible effect separately needs a draw-pass mesh with a surface material.

Returns Material

Current ProcessMaterial value in the described units; account for the property limitations.

GetRandomnessRatiofloat
# GetRandomnessRatio
C#
public float GetRandomnessRatio();
Returns float
GetSeeduint
# GetSeed
C#
public uint GetSeed();

Returns Seed. Particle random seed. To preserve it across Restart, enable UseFixedSeed or pass keepSeed=true. The seed alone does not fix all simulation conditions and steps.

Returns uint

Current Seed value in the described units; account for the property limitations.

GetSkinSkin
# GetSkin
C#
public Skin GetSkin();
Returns Skin
GetSpeedScaledouble
# GetSpeedScale
C#
public double GetSpeedScale();

Returns SpeedScale. Simulation progression scale. Zero pauses ordinary progression but does not hide live geometry. Camera motion and transforms with LocalCoords can change the image while paused. Not rendering FPS. 1.0.0 timing limitation: after a long SpeedScale = 0 pause and resuming to 1, the tested one-shot can emit Finished while GPU particles are still visible. The scene timer multiplies accumulated elapsed time by the current speed scale; it is not a GPU-expiry fence. Do not recycle a time-scaled effect from this signal alone. Keeping a simple one-shot at fixed speed avoids this particular pause/resume case; validate a separate lifecycle policy when changing simulation time.

Returns double

Current SpeedScale value in the described units; account for the property limitations.

GetSubEmitterEntityPath
# GetSubEmitter
C#
public EntityPath GetSubEmitter();

Returns SubEmitter. Path from this emitter to an existing target GpuParticles3D. Assign after both Entities exist; births also require the primary ProcessMaterial mode. Does not create an Entity per particle. Avoid self-links/cycles; revalidate after hierarchy changes.

Returns EntityPath

Current SubEmitter value; account for units and the setting/effective-result distinction.

GetTrailLifetimedouble
# GetTrailLifetime
C#
public double GetTrailLifetime();

Returns TrailLifetime. History duration in seconds, not particle Lifetime or rest-mesh length. Minimum approximately 0.01; the current RD backend caps history at 10 seconds although the scene getter stores the request. Changes rebuild data/phase; account for motion, step and budget.

Returns double

Current TrailLifetime value; account for units and the setting/effective-result distinction.

GetTransformAlignGpuParticles3D.TransformAlignEnum
# GetTransformAlign
C#
public GpuParticles3D.TransformAlignEnum GetTransformAlign();

Returns TransformAlign. Alignment of the rendered particle transform. YToVelocity is the example starting point for directional geometry/trails. Does not change velocity or guarantee freedom from twisting/flattening on every path.

Returns GpuParticles3D.TransformAlignEnum

Current TransformAlign value; account for units and the setting/effective-result distinction.

GetTransformAlignAxisRenderingServer.ParticlesTransformAlignAxis
# GetTransformAlignAxis
C#
public RenderingServer.ParticlesTransformAlignAxis GetTransformAlignAxis();
Returns RenderingServer.ParticlesTransformAlignAxis
GetTransformAlignChannelFilterRenderingServer.ParticlesTransformAlignCustomSrc
# GetTransformAlignChannelFilter
C#
public RenderingServer.ParticlesTransformAlignCustomSrc GetTransformAlignChannelFilter();
Returns RenderingServer.ParticlesTransformAlignCustomSrc
GetUseFixedSeedbool
# GetUseFixedSeed
C#
public bool GetUseFixedSeed();

Returns UseFixedSeed. Preserves the assigned Seed during ordinary restarts. Helps repeat an effect but does not guarantee bitwise determinism across drivers, time steps or builds.

Returns bool

Current UseFixedSeed value in the described units; account for the property limitations.

GetUseLocalCoordinatesbool
# GetUseLocalCoordinates
C#
public bool GetUseLocalCoordinates();

Returns LocalCoords. If true, live particles follow the emitter transform; if false, spawned particles remain in world space as it moves. Choose the space before starting: switching a live effect does not guarantee preserving its appearance.

Returns bool

Current LocalCoords value in the described units; account for the property limitations.

GetVisibilityAabbAabb
# GetVisibilityAabb
C#
public Aabb GetVisibilityAabb();

Returns VisibilityAabb. Custom culling bound for the whole emitter. If offscreen, it can hide otherwise visible particles. Not current-frame CaptureAabb, a trajectory clamp or a collider; cover the entire effect and mesh sizes.

Returns Aabb

Current VisibilityAabb value in the described units; account for the property limitations.

IsEmittingbool
# IsEmitting
C#
public bool IsEmitting();

Returns Emitting. Controls new particle births. False neither removes live particles nor pauses simulation; a one-shot can report false before its effect disappears. Use Restart for a new cycle: repeated true during an active one-shot can cancel its Finished notification.

Returns bool

Current Emitting value in the described units; account for the property limitations.

IsTrailEnabledbool
# IsTrailEnabled
C#
public bool IsTrailEnabled();

Returns TrailEnabled. Enables trail history. Requires compatible mesh poses and UseParticleTrails on the effective surface. The current RenderingDevice rebuilds data when this setting is assigned; do not update it every frame as a cheap animation.

Returns bool

Current TrailEnabled value; account for units and the setting/effective-result distinction.

RequestParticlesProcess2 overloads
# RequestParticlesProcess · 1/2
C#
public void RequestParticlesProcess(float processTime);

Requests the particles to process for extra process time during a single frame. process_time defines the time that the particles will process while emitting is on. process_time_residual defines the time that particles will process with emitting turned off for the simulation. When combined with GpuParticles3D.SpeedScale set to 0.0, this is useful to be able to seek a particle system timeline.

Parameters
NameTypeDefault
processTimefloat—
# RequestParticlesProcess · 2/2
C#
public void RequestParticlesProcess(float processTime, float processTimeResidual = 0f);

Requests the particles to process for extra process time during a single frame. process_time defines the time that the particles will process while emitting is on. process_time_residual defines the time that particles will process with emitting turned off for the simulation. When combined with GpuParticles3D.SpeedScale set to 0.0, this is useful to be able to seek a particle system timeline.

Parameters
NameTypeDefault
processTimefloat—
processTimeResidualfloat0f
Restart2 overloads
# Restart · 1/2
C#
public void Restart();

Clears/restarts the cycle and enables emission. Can deliberately interrupt a live effect: waiting for Finished before every call is not required. A new seed is chosen only without UseFixedSeed and without keepSeed.

# Restart · 2/2
C#
public void Restart(bool keepSeed = false);

Clears/restarts the cycle and enables emission. Can deliberately interrupt a live effect: waiting for Finished before every call is not required. A new seed is chosen only without UseFixedSeed and without keepSeed.

Parameters
NameTypeDefault
keepSeedboolfalse
keepSeed

True preserves the current seed. False permits a new one if UseFixedSeed is also disabled.

SetAmountvoid
# SetAmount
C#
public void SetAmount(int amount);

Sets Amount. Capacity, at least 1. Changing it in the current RenderingDevice implementation frees particle data and resets phase for reallocation. Use AmountRatio for emission fraction without changing capacity. Not an exact visible-particle count.

Parameters
NameTypeDefault
amountint—
amount

Capacity, at least 1. Changing it in the current RenderingDevice implementation frees particle data and resets phase for reallocation. Use AmountRatio for emission fraction without changing capacity. Not an exact visible-particle count.

SetAmountRatiovoid
# SetAmountRatio
C#
public void SetAmountRatio(float ratio);

Sets AmountRatio. Emission fraction of allocated Amount; supply 0 to 1. Does not reduce allocated capacity or instantly remove live particles. Birth behavior also depends on the simulation material.

Parameters
NameTypeDefault
ratiofloat—
ratio

Emission fraction of allocated Amount; supply 0 to 1. Does not reduce allocated capacity or instantly remove live particles. Birth behavior also depends on the simulation material.

SetCollisionBaseSizevoid
# SetCollisionBaseSize
C#
public void SetCollisionBaseSize(float size);
Parameters
NameTypeDefault
sizefloat—
SetDrawOrdervoid
# SetDrawOrder
C#
public void SetDrawOrder(GpuParticles3D.DrawOrderEnum order);
Parameters
NameTypeDefault
orderGpuParticles3D.DrawOrderEnum—
SetDrawPassMeshvoid
# SetDrawPassMesh
C#
public void SetDrawPassMesh(int pass, Mesh mesh);

Sets the Mesh that is drawn at index pass.

Parameters
NameTypeDefault
passint—
meshMesh—
SetDrawPassesvoid
# SetDrawPasses
C#
public void SetDrawPasses(int passes);
Parameters
NameTypeDefault
passesint—
SetEmittingvoid
# SetEmitting
C#
public void SetEmitting(bool emitting);

Sets Emitting. Controls new particle births. False neither removes live particles nor pauses simulation; a one-shot can report false before its effect disappears. Use Restart for a new cycle: repeated true during an active one-shot can cancel its Finished notification.

Parameters
NameTypeDefault
emittingbool—
emitting

Controls new particle births. False neither removes live particles nor pauses simulation; a one-shot can report false before its effect disappears. Use Restart for a new cycle: repeated true during an active one-shot can cancel its Finished notification.

SetExplosivenessRatiovoid
# SetExplosivenessRatio
C#
public void SetExplosivenessRatio(float ratio);

Sets Explosiveness. Birth-interval compression: 0 distributes births through the cycle, 1 concentrates them at the burst start. Does not set travel velocity or ProcessMaterial forces.

Parameters
NameTypeDefault
ratiofloat—
ratio

Birth-interval compression: 0 distributes births through the cycle, 1 concentrates them at the burst start. Does not set travel velocity or ProcessMaterial forces.

SetFixedFpsvoid
# SetFixedFps
C#
public void SetFixedFps(int fps);

Fixed simulation-step rate, not a drawing frame-rate limit. A positive value selects steps of 1/FPS. At 0, current RD uses variable delta for ordinary particles, while trails can require an internal fixed step. Defaults to 30; the example explicitly selects 60.

Parameters
NameTypeDefault
fpsint—
fps

Zero or a positive simulation rate. The setter stores a setting, not a display refresh-rate cap.

SetFractionalDeltavoid
# SetFractionalDelta
C#
public void SetFractionalDelta(bool enable);

Refines the DELTA fraction for a particle born within a step. This is neither general float precision nor draw interpolation. Current RD applies it during ordinary emission-phase calculation; do not assume identical effects for all manual/sub-emission paths.

Parameters
NameTypeDefault
enablebool—
enable

Enable fractional birth-step delta.

SetInterpToEndvoid
# SetInterpToEnd
C#
public void SetInterpToEnd(float interp);

Value supplied to a particle shader as INTERPOLATE_TO_END, clamped to 0–1. Built-in ParticleProcessMaterial uses it in age calculation; a custom ShaderMaterial must apply it explicitly. It is neither Lifetime duration nor Interpolate frame smoothing.

Parameters
NameTypeDefault
interpfloat—
interp

Value from 0 through 1; out-of-range values clamp to the nearest bound.

SetInterpolatevoid
# SetInterpolate
C#
public void SetInterpolate(bool enable);

Draw interpolation between simulation steps. It neither replaces FixedFps nor adds process() calls and is distinct from InterpToEnd. Current RD uses it when applying the time remainder to instance data.

Parameters
NameTypeDefault
enablebool—
enable

Enable draw interpolation.

SetLifetimevoid
# SetLifetime
C#
public void SetLifetime(double secs);

Sets Lifetime. Lifetime/cycle duration in seconds, strictly greater than zero. Along with Amount and birth timing affects density; not the time until Emitting stops or an exact frame count.

Parameters
NameTypeDefault
secsdouble—
secs

Lifetime/cycle duration in seconds, strictly greater than zero. Along with Amount and birth timing affects density; not the time until Emitting stops or an exact frame count.

SetOneShotvoid
# SetOneShot
C#
public void SetOneShot(bool enable);

Sets OneShot. One cycle instead of looping. Finished reports one-shot completion, not every manual stop of a continuous emitter. An explosive cycle can stop spawning before its particles expire.

Parameters
NameTypeDefault
enablebool—
enable

One cycle instead of looping. Finished reports one-shot completion, not every manual stop of a continuous emitter. An explosive cycle can stop spawning before its particles expire.

SetPreProcessTimevoid
# SetPreProcessTime
C#
public void SetPreProcessTime(double secs);
Parameters
NameTypeDefault
secsdouble—
SetProcessMaterialvoid
# SetProcessMaterial
C#
public void SetProcessMaterial(Material material);

Sets ProcessMaterial. Simulation material, such as ParticleProcessMaterial. Controls behavior rather than the mesh surface. A visible effect separately needs a draw-pass mesh with a surface material.

Parameters
NameTypeDefault
materialMaterial—
material

Simulation material, such as ParticleProcessMaterial. Controls behavior rather than the mesh surface. A visible effect separately needs a draw-pass mesh with a surface material.

SetRandomnessRatiovoid
# SetRandomnessRatio
C#
public void SetRandomnessRatio(float ratio);
Parameters
NameTypeDefault
ratiofloat—
SetSeedvoid
# SetSeed
C#
public void SetSeed(uint seed);

Sets Seed. Particle random seed. To preserve it across Restart, enable UseFixedSeed or pass keepSeed=true. The seed alone does not fix all simulation conditions and steps.

Parameters
NameTypeDefault
seeduint—
seed

Particle random seed. To preserve it across Restart, enable UseFixedSeed or pass keepSeed=true. The seed alone does not fix all simulation conditions and steps.

SetSkinvoid
# SetSkin
C#
public void SetSkin(Skin skin);
Parameters
NameTypeDefault
skinSkin—
SetSpeedScalevoid
# SetSpeedScale
C#
public void SetSpeedScale(double scale);

Sets SpeedScale. Simulation progression scale. Zero pauses ordinary progression but does not hide live geometry. Camera motion and transforms with LocalCoords can change the image while paused. Not rendering FPS. 1.0.0 timing limitation: after a long SpeedScale = 0 pause and resuming to 1, the tested one-shot can emit Finished while GPU particles are still visible. The scene timer multiplies accumulated elapsed time by the current speed scale; it is not a GPU-expiry fence. Do not recycle a time-scaled effect from this signal alone. Keeping a simple one-shot at fixed speed avoids this particular pause/resume case; validate a separate lifecycle policy when changing simulation time.

Parameters
NameTypeDefault
scaledouble—
scale

Simulation progression scale. Zero pauses ordinary progression but does not hide live geometry. Camera motion and transforms with LocalCoords can change the image while paused. Not rendering FPS. 1.0.0 timing limitation: after a long SpeedScale = 0 pause and resuming to 1, the tested one-shot can emit Finished while GPU particles are still visible. The scene timer multiplies accumulated elapsed time by the current speed scale; it is not a GPU-expiry fence. Do not recycle a time-scaled effect from this signal alone. Keeping a simple one-shot at fixed speed avoids this particular pause/resume case; validate a separate lifecycle policy when changing simulation time.

SetSubEmittervoid
# SetSubEmitter
C#
public void SetSubEmitter(EntityPath path);

Sets SubEmitter. Path from this emitter to an existing target GpuParticles3D. Assign after both Entities exist; births also require the primary ProcessMaterial mode. Does not create an Entity per particle. Avoid self-links/cycles; revalidate after hierarchy changes.

Parameters
NameTypeDefault
pathEntityPath—
path

Path from this emitter to an existing target GpuParticles3D. Assign after both Entities exist; births also require the primary ProcessMaterial mode. Does not create an Entity per particle. Avoid self-links/cycles; revalidate after hierarchy changes.

SetTrailEnabledvoid
# SetTrailEnabled
C#
public void SetTrailEnabled(bool enabled);

Sets TrailEnabled. Enables trail history. Requires compatible mesh poses and UseParticleTrails on the effective surface. The current RenderingDevice rebuilds data when this setting is assigned; do not update it every frame as a cheap animation.

Parameters
NameTypeDefault
enabledbool—
enabled

Enables trail history. Requires compatible mesh poses and UseParticleTrails on the effective surface. The current RenderingDevice rebuilds data when this setting is assigned; do not update it every frame as a cheap animation.

SetTrailLifetimevoid
# SetTrailLifetime
C#
public void SetTrailLifetime(double secs);

Sets TrailLifetime. History duration in seconds, not particle Lifetime or rest-mesh length. Minimum approximately 0.01; the current RD backend caps history at 10 seconds although the scene getter stores the request. Changes rebuild data/phase; account for motion, step and budget.

Parameters
NameTypeDefault
secsdouble—
secs

History duration in seconds, not particle Lifetime or rest-mesh length. Minimum approximately 0.01; the current RD backend caps history at 10 seconds although the scene getter stores the request. Changes rebuild data/phase; account for motion, step and budget.

SetTransformAlignvoid
# SetTransformAlign
C#
public void SetTransformAlign(GpuParticles3D.TransformAlignEnum align);

Sets TransformAlign. Alignment of the rendered particle transform. YToVelocity is the example starting point for directional geometry/trails. Does not change velocity or guarantee freedom from twisting/flattening on every path.

Parameters
NameTypeDefault
alignGpuParticles3D.TransformAlignEnum—
align

Alignment of the rendered particle transform. YToVelocity is the example starting point for directional geometry/trails. Does not change velocity or guarantee freedom from twisting/flattening on every path.

SetTransformAlignAxisvoid
# SetTransformAlignAxis
C#
public void SetTransformAlignAxis(RenderingServer.ParticlesTransformAlignAxis align);
Parameters
NameTypeDefault
alignRenderingServer.ParticlesTransformAlignAxis—
SetTransformAlignChannelFiltervoid
# SetTransformAlignChannelFilter
C#
public void SetTransformAlignChannelFilter(RenderingServer.ParticlesTransformAlignCustomSrc channelFilter);
Parameters
NameTypeDefault
channelFilterRenderingServer.ParticlesTransformAlignCustomSrc—
SetUseFixedSeedvoid
# SetUseFixedSeed
C#
public void SetUseFixedSeed(bool useFixedSeed);

Sets UseFixedSeed. Preserves the assigned Seed during ordinary restarts. Helps repeat an effect but does not guarantee bitwise determinism across drivers, time steps or builds.

Parameters
NameTypeDefault
useFixedSeedbool—
useFixedSeed

Preserves the assigned Seed during ordinary restarts. Helps repeat an effect but does not guarantee bitwise determinism across drivers, time steps or builds.

SetUseLocalCoordinatesvoid
# SetUseLocalCoordinates
C#
public void SetUseLocalCoordinates(bool enable);

Sets LocalCoords. If true, live particles follow the emitter transform; if false, spawned particles remain in world space as it moves. Choose the space before starting: switching a live effect does not guarantee preserving its appearance.

Parameters
NameTypeDefault
enablebool—
enable

If true, live particles follow the emitter transform; if false, spawned particles remain in world space as it moves. Choose the space before starting: switching a live effect does not guarantee preserving its appearance.

SetVisibilityAabbvoid
# SetVisibilityAabb
C#
public void SetVisibilityAabb(Aabb aabb);

Sets VisibilityAabb. Custom culling bound for the whole emitter. If offscreen, it can hide otherwise visible particles. Not current-frame CaptureAabb, a trajectory clamp or a collider; cover the entire effect and mesh sizes.

Parameters
NameTypeDefault
aabbAabb—
aabb

Custom culling bound for the whole emitter. If offscreen, it can hide otherwise visible particles. Not current-frame CaptureAabb, a trajectory clamp or a collider; cover the entire effect and mesh sizes.

Signals and events1

FinishedEvent
# Finished
C#
public event Action Finished;

One-shot cycle completion. Connect before triggering. Not a general disappearance event after manually stopping a continuous emitter; repeated Emitting=true during an active one-shot can cancel the notification. 1.0.0 timing limitation: after a long SpeedScale = 0 pause and resuming to 1, the tested one-shot can emit Finished while GPU particles are still visible. The scene timer multiplies accumulated elapsed time by the current speed scale; it is not a GPU-expiry fence. Do not recycle a time-scaled effect from this signal alone. Keeping a simple one-shot at fixed speed avoids this particular pause/resume case; validate a separate lifecycle policy when changing simulation time.

Fields and constants1

MaxDrawPassesField
# MaxDrawPasses
C#
public const long MaxDrawPasses = 4;

Maximum number of draw passes supported.

GpuParticles3D.DrawOrderEnum

ValueDescription
Index = 0

Particles are drawn in the order emitted.

Lifetime = 1

Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front.

ReverseLifetime = 2

Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front.

ViewDepth = 3

Particles are drawn in order of depth.

GpuParticles3D.EmitFlags

ValueDescription
Color = 8

Particle starts with specified color.

Custom = 16

Particle starts with specified CUSTOM data.

Position = 1

Particle starts at the specified position.

RotationScale = 2

Particle starts with specified rotation and scale.

Velocity = 4

Particle starts with the specified velocity vector, which defines the emission direction and speed.

GpuParticles3D.TransformAlignEnum

ValueDescription
Disabled = 0

Do not align particle transforms relative to the camera or velocity.

LocalBillboard = 4

Align each particle's Z axis to face the camera, while preserving a given axis (X or Y).

YToVelocity = 2

Align each particle's Y axis to the velocity vector.

ZBillboard = 1

Align each particle's Z axis to face the camera.

ZBillboardYToVelocity = 3

Align each particle's Z axis to face the camera and Y axis to the velocity vector.

Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.