Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.


Inherits: VisualInstance3D < Node3D < Node < Object

Inherited By: GPUParticlesCollisionBox3D, GPUParticlesCollisionHeightField3D, GPUParticlesCollisionSDF3D, GPUParticlesCollisionSphere3D

Abstract base class for 3D particle collision shapes affecting GPUParticles3D nodes.


Particle collision shapes can be used to make particles stop or bounce against them.

Particle collision shapes work in real-time and can be moved, rotated and scaled during gameplay. Unlike attractors, non-uniform scaling of collision shapes is not supported.

Particle collision shapes can be temporarily disabled by hiding them.

Note: ParticleProcessMaterial.collision_mode must be ParticleProcessMaterial.COLLISION_RIGID or ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT on the GPUParticles3D's process material for collision to work.

Note: Particle collision only affects GPUParticles3D, not CPUParticles3D.

Note: Particles pushed by a collider that is being moved will not be interpolated, which can result in visible stuttering. This can be alleviated by setting GPUParticles3D.fixed_fps to 0 or a value that matches or exceeds the target framerate.





Property Descriptions

int cull_mask = 4294967295

  • void set_cull_mask ( int value )

  • int get_cull_mask ( )

The particle rendering layers (VisualInstance3D.layers) that will be affected by the collision shape. By default, all particles that have ParticleProcessMaterial.collision_mode set to ParticleProcessMaterial.COLLISION_RIGID or ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT will be affected by a collision shape.

After configuring particle nodes accordingly, specific layers can be unchecked to prevent certain particles from being affected by attractors. For example, this can be used if you're using an attractor as part of a spell effect but don't want the attractor to affect unrelated weather particles at the same position.

Particle attraction can also be disabled on a per-process material basis by setting ParticleProcessMaterial.attractor_interaction_enabled on the GPUParticles3D node.