/Godot 3.2


Inherits: GeometryInstance < VisualInstance < Spatial < Node < Object

3D particle emitter.


3D particle node used to create a variety of particle systems and effects. Particles features an emitter that generates some number of particles at a given rate.

Use the process_material property to add a ParticlesMaterial to configure particle appearance and behavior. Alternatively, you can add a ShaderMaterial which will be applied to all particles.



int amount 8
DrawOrder draw_order 0
Mesh draw_pass_1
Mesh draw_pass_2
Mesh draw_pass_3
Mesh draw_pass_4
int draw_passes 1
bool emitting true
float explosiveness 0.0
int fixed_fps 0
bool fract_delta true
float lifetime 1.0
bool local_coords true
bool one_shot false
float preprocess 0.0
Material process_material
float randomness 0.0
float speed_scale 1.0
AABB visibility_aabb AABB( -4, -4, -4, 8, 8, 8 )


AABB capture_aabb ( ) const
Mesh get_draw_pass_mesh ( int pass ) const
void restart ( )
void set_draw_pass_mesh ( int pass, Mesh mesh )


enum DrawOrder:

  • DRAW_ORDER_INDEX = 0 --- Particles are drawn in the order emitted.
  • DRAW_ORDER_LIFETIME = 1 --- Particles are drawn in order of remaining lifetime.
  • DRAW_ORDER_VIEW_DEPTH = 2 --- Particles are drawn in order of depth.


MAX_DRAW_PASSES = 4 --- Maximum number of draw passes supported.

Property Descriptions

int amount

Default 8
Setter set_amount(value)
Getter get_amount()

Number of particles to emit.

DrawOrder draw_order

Default 0
Setter set_draw_order(value)
Getter get_draw_order()

Particle draw order. Uses DrawOrder values.

Mesh draw_pass_1

Setter set_draw_pass_mesh(value)
Getter get_draw_pass_mesh()

Mesh that is drawn for the first draw pass.

Mesh draw_pass_2

Setter set_draw_pass_mesh(value)
Getter get_draw_pass_mesh()

Mesh that is drawn for the second draw pass.

Mesh draw_pass_3

Setter set_draw_pass_mesh(value)
Getter get_draw_pass_mesh()

Mesh that is drawn for the third draw pass.

Mesh draw_pass_4

Setter set_draw_pass_mesh(value)
Getter get_draw_pass_mesh()

Mesh that is drawn for the fourth draw pass.

int draw_passes

Default 1
Setter set_draw_passes(value)
Getter get_draw_passes()

The number of draw passes when rendering particles.

bool emitting

Default true
Setter set_emitting(value)
Getter is_emitting()

If true, particles are being emitted.

float explosiveness

Default 0.0
Setter set_explosiveness_ratio(value)
Getter get_explosiveness_ratio()

Time ratio between each emission. If 0, particles are emitted continuously. If 1, all particles are emitted simultaneously.

int fixed_fps

Default 0
Setter set_fixed_fps(value)
Getter get_fixed_fps()

The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.

bool fract_delta

Default true
Setter set_fractional_delta(value)
Getter get_fractional_delta()

If true, results in fractional delta calculation which has a smoother particles display effect.

float lifetime

Default 1.0
Setter set_lifetime(value)
Getter get_lifetime()

Amount of time each particle will exist.

bool local_coords

Default true
Setter set_use_local_coordinates(value)
Getter get_use_local_coordinates()

If true, particles use the parent node's coordinate space. If false, they use global coordinates.

bool one_shot

Default false
Setter set_one_shot(value)
Getter get_one_shot()

If true, only amount particles will be emitted.

float preprocess

Default 0.0
Setter set_pre_process_time(value)
Getter get_pre_process_time()

Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting.

Material process_material

Setter set_process_material(value)
Getter get_process_material()

Material for processing particles. Can be a ParticlesMaterial or a ShaderMaterial.

float randomness

Default 0.0
Setter set_randomness_ratio(value)
Getter get_randomness_ratio()

Emission randomness ratio.

float speed_scale

Default 1.0
Setter set_speed_scale(value)
Getter get_speed_scale()

Speed scaling ratio. A value of 0 can be used to pause the particles.

AABB visibility_aabb

Default AABB( -4, -4, -4, 8, 8, 8 )
Setter set_visibility_aabb(value)
Getter get_visibility_aabb()

The AABB that determines the area of the world part of which needs to be visible on screen for the particle system to be active.

Note: If the ParticlesMaterial in use is configured to cast shadows, you may want to enlarge this AABB to ensure the shadow is updated when particles are off-screen.

Method Descriptions

AABB capture_aabb ( ) const

Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.

Mesh get_draw_pass_mesh ( int pass ) const

Returns the Mesh that is drawn at index pass.

void restart ( )

Restarts the particle emission, clearing existing particles.

void set_draw_pass_mesh ( int pass, Mesh mesh )

Sets the Mesh that is drawn at index pass.

© 2014–2020 Juan Linietsky, Ariel Manzur, Godot Engine contributors
Licensed under the MIT License.