:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.1/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.1/doc/classes/ParticleProcessMaterial.xml. .. _class_ParticleProcessMaterial: ParticleProcessMaterial ======================= **Inherits:** :ref:`Material` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` Particle properties for :ref:`GPUParticles3D` and :ref:`GPUParticles2D` nodes. .. rst-class:: classref-introduction-group Description ----------- ParticleProcessMaterial defines particle properties and behavior. It is used in the ``process_material`` of :ref:`GPUParticles3D` and :ref:`GPUParticles2D` emitter nodes. Some of this material's properties are applied to each particle when emitted, while others can have a :ref:`CurveTexture` applied to vary values over the lifetime of the particle. Particle animation is available only in :ref:`GPUParticles2D`. To use it, attach a :ref:`CanvasItemMaterial`, with :ref:`CanvasItemMaterial.particles_animation` enabled, to the particles node. .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`angle_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`angle_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`angle_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`angular_velocity_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`angular_velocity_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`angular_velocity_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`anim_offset_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`anim_offset_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`anim_offset_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`anim_speed_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`anim_speed_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`anim_speed_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`attractor_interaction_enabled` | ``true`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`collision_bounce` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`collision_friction` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`CollisionMode` | :ref:`collision_mode` | ``0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`collision_use_scale` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Color` | :ref:`color` | ``Color(1, 1, 1, 1)`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`color_initial_ramp` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`color_ramp` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`damping_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`damping_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`damping_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Vector3` | :ref:`direction` | ``Vector3(1, 0, 0)`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Vector3` | :ref:`emission_box_extents` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`emission_color_texture` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`emission_normal_texture` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`int` | :ref:`emission_point_count` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`emission_point_texture` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Vector3` | :ref:`emission_ring_axis` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`emission_ring_height` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`emission_ring_inner_radius` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`emission_ring_radius` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`EmissionShape` | :ref:`emission_shape` | ``0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`emission_sphere_radius` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`flatness` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Vector3` | :ref:`gravity` | ``Vector3(0, -9.8, 0)`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`hue_variation_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`hue_variation_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`hue_variation_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`initial_velocity_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`initial_velocity_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`lifetime_randomness` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`linear_accel_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`linear_accel_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`linear_accel_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`orbit_velocity_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`orbit_velocity_max` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`orbit_velocity_min` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`particle_flag_align_y` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`particle_flag_disable_z` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`particle_flag_rotate_y` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`radial_accel_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`radial_accel_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`radial_accel_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`scale_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`scale_max` | ``1.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`scale_min` | ``1.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`spread` | ``45.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`int` | :ref:`sub_emitter_amount_at_collision` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`int` | :ref:`sub_emitter_amount_at_end` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`sub_emitter_frequency` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`sub_emitter_keep_velocity` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`SubEmitterMode` | :ref:`sub_emitter_mode` | ``0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`tangential_accel_curve` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`tangential_accel_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`tangential_accel_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`turbulence_enabled` | ``false`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_influence_max` | ``0.1`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_influence_min` | ``0.1`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Texture2D` | :ref:`turbulence_influence_over_life` | | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_initial_displacement_max` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_initial_displacement_min` | ``0.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_noise_scale` | ``9.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`Vector3` | :ref:`turbulence_noise_speed` | ``Vector3(0, 0, 0)`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_noise_speed_random` | ``0.2`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`float` | :ref:`turbulence_noise_strength` | ``1.0`` | +--------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-------------------------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_param_max` **(** :ref:`Parameter` param **)** |const| | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_param_min` **(** :ref:`Parameter` param **)** |const| | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Texture2D` | :ref:`get_param_texture` **(** :ref:`Parameter` param **)** |const| | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_particle_flag` **(** :ref:`ParticleFlags` particle_flag **)** |const| | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_param_max` **(** :ref:`Parameter` param, :ref:`float` value **)** | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_param_min` **(** :ref:`Parameter` param, :ref:`float` value **)** | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_param_texture` **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_particle_flag` **(** :ref:`ParticleFlags` particle_flag, :ref:`bool` enable **)** | +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_ParticleProcessMaterial_Parameter: .. rst-class:: classref-enumeration enum **Parameter**: .. _class_ParticleProcessMaterial_constant_PARAM_INITIAL_LINEAR_VELOCITY: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_INITIAL_LINEAR_VELOCITY** = ``0`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set initial velocity properties. .. _class_ParticleProcessMaterial_constant_PARAM_ANGULAR_VELOCITY: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_ANGULAR_VELOCITY** = ``1`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set angular velocity properties. .. _class_ParticleProcessMaterial_constant_PARAM_ORBIT_VELOCITY: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_ORBIT_VELOCITY** = ``2`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set orbital velocity properties. .. _class_ParticleProcessMaterial_constant_PARAM_LINEAR_ACCEL: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_LINEAR_ACCEL** = ``3`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set linear acceleration properties. .. _class_ParticleProcessMaterial_constant_PARAM_RADIAL_ACCEL: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_RADIAL_ACCEL** = ``4`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set radial acceleration properties. .. _class_ParticleProcessMaterial_constant_PARAM_TANGENTIAL_ACCEL: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_TANGENTIAL_ACCEL** = ``5`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set tangential acceleration properties. .. _class_ParticleProcessMaterial_constant_PARAM_DAMPING: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_DAMPING** = ``6`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set damping properties. .. _class_ParticleProcessMaterial_constant_PARAM_ANGLE: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_ANGLE** = ``7`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set angle properties. .. _class_ParticleProcessMaterial_constant_PARAM_SCALE: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_SCALE** = ``8`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set scale properties. .. _class_ParticleProcessMaterial_constant_PARAM_HUE_VARIATION: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_HUE_VARIATION** = ``9`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set hue variation properties. .. _class_ParticleProcessMaterial_constant_PARAM_ANIM_SPEED: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_ANIM_SPEED** = ``10`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set animation speed properties. .. _class_ParticleProcessMaterial_constant_PARAM_ANIM_OFFSET: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_ANIM_OFFSET** = ``11`` Use with :ref:`set_param_min`, :ref:`set_param_max`, and :ref:`set_param_texture` to set animation offset properties. .. _class_ParticleProcessMaterial_constant_PARAM_MAX: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_MAX** = ``15`` Represents the size of the :ref:`Parameter` enum. .. _class_ParticleProcessMaterial_constant_PARAM_TURB_VEL_INFLUENCE: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_TURB_VEL_INFLUENCE** = ``13`` Use with :ref:`set_param_min` and :ref:`set_param_max` to set the turbulence minimum und maximum influence on each particles velocity. .. _class_ParticleProcessMaterial_constant_PARAM_TURB_INIT_DISPLACEMENT: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_TURB_INIT_DISPLACEMENT** = ``14`` Use with :ref:`set_param_min` and :ref:`set_param_max` to set the turbulence minimum and maximum displacement of the particles spawn position. .. _class_ParticleProcessMaterial_constant_PARAM_TURB_INFLUENCE_OVER_LIFE: .. rst-class:: classref-enumeration-constant :ref:`Parameter` **PARAM_TURB_INFLUENCE_OVER_LIFE** = ``12`` Use with :ref:`set_param_texture` to set the turbulence influence over the particles life time. .. rst-class:: classref-item-separator ---- .. _enum_ParticleProcessMaterial_ParticleFlags: .. rst-class:: classref-enumeration enum **ParticleFlags**: .. _class_ParticleProcessMaterial_constant_PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY: .. rst-class:: classref-enumeration-constant :ref:`ParticleFlags` **PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY** = ``0`` Use with :ref:`set_particle_flag` to set :ref:`particle_flag_align_y`. .. _class_ParticleProcessMaterial_constant_PARTICLE_FLAG_ROTATE_Y: .. rst-class:: classref-enumeration-constant :ref:`ParticleFlags` **PARTICLE_FLAG_ROTATE_Y** = ``1`` Use with :ref:`set_particle_flag` to set :ref:`particle_flag_rotate_y`. .. _class_ParticleProcessMaterial_constant_PARTICLE_FLAG_DISABLE_Z: .. rst-class:: classref-enumeration-constant :ref:`ParticleFlags` **PARTICLE_FLAG_DISABLE_Z** = ``2`` Use with :ref:`set_particle_flag` to set :ref:`particle_flag_disable_z`. .. _class_ParticleProcessMaterial_constant_PARTICLE_FLAG_MAX: .. rst-class:: classref-enumeration-constant :ref:`ParticleFlags` **PARTICLE_FLAG_MAX** = ``3`` Represents the size of the :ref:`ParticleFlags` enum. .. rst-class:: classref-item-separator ---- .. _enum_ParticleProcessMaterial_EmissionShape: .. rst-class:: classref-enumeration enum **EmissionShape**: .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_POINT: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_POINT** = ``0`` All particles will be emitted from a single point. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_SPHERE: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_SPHERE** = ``1`` Particles will be emitted in the volume of a sphere. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_SPHERE_SURFACE: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_SPHERE_SURFACE** = ``2`` Particles will be emitted on the surface of a sphere. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_BOX: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_BOX** = ``3`` Particles will be emitted in the volume of a box. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_POINTS: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_POINTS** = ``4`` Particles will be emitted at a position determined by sampling a random point on the :ref:`emission_point_texture`. Particle color will be modulated by :ref:`emission_color_texture`. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_DIRECTED_POINTS: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_DIRECTED_POINTS** = ``5`` Particles will be emitted at a position determined by sampling a random point on the :ref:`emission_point_texture`. Particle velocity and rotation will be set based on :ref:`emission_normal_texture`. Particle color will be modulated by :ref:`emission_color_texture`. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_RING: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_RING** = ``6`` Particles will be emitted in a ring or cylinder. .. _class_ParticleProcessMaterial_constant_EMISSION_SHAPE_MAX: .. rst-class:: classref-enumeration-constant :ref:`EmissionShape` **EMISSION_SHAPE_MAX** = ``7`` Represents the size of the :ref:`EmissionShape` enum. .. rst-class:: classref-item-separator ---- .. _enum_ParticleProcessMaterial_SubEmitterMode: .. rst-class:: classref-enumeration enum **SubEmitterMode**: .. _class_ParticleProcessMaterial_constant_SUB_EMITTER_DISABLED: .. rst-class:: classref-enumeration-constant :ref:`SubEmitterMode` **SUB_EMITTER_DISABLED** = ``0`` .. _class_ParticleProcessMaterial_constant_SUB_EMITTER_CONSTANT: .. rst-class:: classref-enumeration-constant :ref:`SubEmitterMode` **SUB_EMITTER_CONSTANT** = ``1`` .. _class_ParticleProcessMaterial_constant_SUB_EMITTER_AT_END: .. rst-class:: classref-enumeration-constant :ref:`SubEmitterMode` **SUB_EMITTER_AT_END** = ``2`` .. _class_ParticleProcessMaterial_constant_SUB_EMITTER_AT_COLLISION: .. rst-class:: classref-enumeration-constant :ref:`SubEmitterMode` **SUB_EMITTER_AT_COLLISION** = ``3`` .. _class_ParticleProcessMaterial_constant_SUB_EMITTER_MAX: .. rst-class:: classref-enumeration-constant :ref:`SubEmitterMode` **SUB_EMITTER_MAX** = ``4`` Represents the size of the :ref:`SubEmitterMode` enum. .. rst-class:: classref-item-separator ---- .. _enum_ParticleProcessMaterial_CollisionMode: .. rst-class:: classref-enumeration enum **CollisionMode**: .. _class_ParticleProcessMaterial_constant_COLLISION_DISABLED: .. rst-class:: classref-enumeration-constant :ref:`CollisionMode` **COLLISION_DISABLED** = ``0`` No collision for particles. Particles will go through :ref:`GPUParticlesCollision3D` nodes. .. _class_ParticleProcessMaterial_constant_COLLISION_RIGID: .. rst-class:: classref-enumeration-constant :ref:`CollisionMode` **COLLISION_RIGID** = ``1`` :ref:`RigidBody3D`-style collision for particles using :ref:`GPUParticlesCollision3D` nodes. .. _class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT: .. rst-class:: classref-enumeration-constant :ref:`CollisionMode` **COLLISION_HIDE_ON_CONTACT** = ``2`` Hide particles instantly when colliding with a :ref:`GPUParticlesCollision3D` node. This can be combined with a subemitter that uses the :ref:`COLLISION_RIGID` collision mode to "replace" the parent particle with the subemitter on impact. .. _class_ParticleProcessMaterial_constant_COLLISION_MAX: .. rst-class:: classref-enumeration-constant :ref:`CollisionMode` **COLLISION_MAX** = ``3`` Represents the size of the :ref:`CollisionMode` enum. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_ParticleProcessMaterial_property_angle_curve: .. rst-class:: classref-property :ref:`Texture2D` **angle_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's rotation will be animated along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_angle_max: .. rst-class:: classref-property :ref:`float` **angle_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum initial rotation applied to each particle, in degrees. Only applied when :ref:`particle_flag_disable_z` or :ref:`particle_flag_rotate_y` are ``true`` or the :ref:`BaseMaterial3D` being used to draw the particle is using :ref:`BaseMaterial3D.BILLBOARD_PARTICLES`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_angle_min: .. rst-class:: classref-property :ref:`float` **angle_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`angle_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_angular_velocity_curve: .. rst-class:: classref-property :ref:`Texture2D` **angular_velocity_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's angular velocity (rotation speed) will vary along this :ref:`CurveTexture` over its lifetime. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_angular_velocity_max: .. rst-class:: classref-property :ref:`float` **angular_velocity_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum initial angular velocity (rotation speed) applied to each particle in *degrees* per second. Only applied when :ref:`particle_flag_disable_z` or :ref:`particle_flag_rotate_y` are ``true`` or the :ref:`BaseMaterial3D` being used to draw the particle is using :ref:`BaseMaterial3D.BILLBOARD_PARTICLES`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_angular_velocity_min: .. rst-class:: classref-property :ref:`float` **angular_velocity_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`angular_velocity_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_offset_curve: .. rst-class:: classref-property :ref:`Texture2D` **anim_offset_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's animation offset will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_offset_max: .. rst-class:: classref-property :ref:`float` **anim_offset_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum animation offset that corresponds to frame index in the texture. ``0`` is the first frame, ``1`` is the last one. See :ref:`CanvasItemMaterial.particles_animation`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_offset_min: .. rst-class:: classref-property :ref:`float` **anim_offset_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`anim_offset_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_speed_curve: .. rst-class:: classref-property :ref:`Texture2D` **anim_speed_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's animation speed will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_speed_max: .. rst-class:: classref-property :ref:`float` **anim_speed_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum particle animation speed. Animation speed of ``1`` means that the particles will make full ``0`` to ``1`` offset cycle during lifetime, ``2`` means ``2`` cycles etc. With animation speed greater than ``1``, remember to enable :ref:`CanvasItemMaterial.particles_anim_loop` property if you want the animation to repeat. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_anim_speed_min: .. rst-class:: classref-property :ref:`float` **anim_speed_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`anim_speed_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_attractor_interaction_enabled: .. rst-class:: classref-property :ref:`bool` **attractor_interaction_enabled** = ``true`` .. rst-class:: classref-property-setget - void **set_attractor_interaction_enabled** **(** :ref:`bool` value **)** - :ref:`bool` **is_attractor_interaction_enabled** **(** **)** True if the interaction with particle attractors is enabled. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_collision_bounce: .. rst-class:: classref-property :ref:`float` **collision_bounce** .. rst-class:: classref-property-setget - void **set_collision_bounce** **(** :ref:`float` value **)** - :ref:`float` **get_collision_bounce** **(** **)** The particles' bounciness. Values range from ``0`` (no bounce) to ``1`` (full bounciness). Only effective if :ref:`collision_mode` is :ref:`COLLISION_RIGID`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_collision_friction: .. rst-class:: classref-property :ref:`float` **collision_friction** .. rst-class:: classref-property-setget - void **set_collision_friction** **(** :ref:`float` value **)** - :ref:`float` **get_collision_friction** **(** **)** The particles' friction. Values range from ``0`` (frictionless) to ``1`` (maximum friction). Only effective if :ref:`collision_mode` is :ref:`COLLISION_RIGID`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_collision_mode: .. rst-class:: classref-property :ref:`CollisionMode` **collision_mode** = ``0`` .. rst-class:: classref-property-setget - void **set_collision_mode** **(** :ref:`CollisionMode` value **)** - :ref:`CollisionMode` **get_collision_mode** **(** **)** The particles' collision mode. \ **Note:** 3D Particles can only collide with :ref:`GPUParticlesCollision3D` nodes, not :ref:`PhysicsBody3D` nodes. To make particles collide with various objects, you can add :ref:`GPUParticlesCollision3D` nodes as children of :ref:`PhysicsBody3D` nodes. \ **Note:** 2D Particles can only collide with :ref:`LightOccluder2D` nodes, not :ref:`PhysicsBody2D` nodes. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_collision_use_scale: .. rst-class:: classref-property :ref:`bool` **collision_use_scale** = ``false`` .. rst-class:: classref-property-setget - void **set_collision_use_scale** **(** :ref:`bool` value **)** - :ref:`bool` **is_collision_using_scale** **(** **)** Should collision take scale into account. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_color: .. rst-class:: classref-property :ref:`Color` **color** = ``Color(1, 1, 1, 1)`` .. rst-class:: classref-property-setget - void **set_color** **(** :ref:`Color` value **)** - :ref:`Color` **get_color** **(** **)** Each particle's initial color. If the :ref:`GPUParticles2D`'s ``texture`` is defined, it will be multiplied by this color. \ **Note:** :ref:`color` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo` *must* be ``true``. For a :ref:`ShaderMaterial`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color` will have no visible effect. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_color_initial_ramp: .. rst-class:: classref-property :ref:`Texture2D` **color_initial_ramp** .. rst-class:: classref-property-setget - void **set_color_initial_ramp** **(** :ref:`Texture2D` value **)** - :ref:`Texture2D` **get_color_initial_ramp** **(** **)** Each particle's initial color will vary along this :ref:`GradientTexture1D` (multiplied with :ref:`color`). \ **Note:** :ref:`color_initial_ramp` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo` *must* be ``true``. For a :ref:`ShaderMaterial`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color_initial_ramp` will have no visible effect. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_color_ramp: .. rst-class:: classref-property :ref:`Texture2D` **color_ramp** .. rst-class:: classref-property-setget - void **set_color_ramp** **(** :ref:`Texture2D` value **)** - :ref:`Texture2D` **get_color_ramp** **(** **)** Each particle's color will vary along this :ref:`GradientTexture1D` over its lifetime (multiplied with :ref:`color`). \ **Note:** :ref:`color_ramp` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo` *must* be ``true``. For a :ref:`ShaderMaterial`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color_ramp` will have no visible effect. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_damping_curve: .. rst-class:: classref-property :ref:`Texture2D` **damping_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Damping will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_damping_max: .. rst-class:: classref-property :ref:`float` **damping_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| The maximum rate at which particles lose velocity. For example value of ``100`` means that the particle will go from ``100`` velocity to ``0`` in ``1`` second. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_damping_min: .. rst-class:: classref-property :ref:`float` **damping_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`damping_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_direction: .. rst-class:: classref-property :ref:`Vector3` **direction** = ``Vector3(1, 0, 0)`` .. rst-class:: classref-property-setget - void **set_direction** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_direction** **(** **)** Unit vector specifying the particles' emission direction. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_box_extents: .. rst-class:: classref-property :ref:`Vector3` **emission_box_extents** .. rst-class:: classref-property-setget - void **set_emission_box_extents** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_emission_box_extents** **(** **)** The box's extents if ``emission_shape`` is set to :ref:`EMISSION_SHAPE_BOX`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_color_texture: .. rst-class:: classref-property :ref:`Texture2D` **emission_color_texture** .. rst-class:: classref-property-setget - void **set_emission_color_texture** **(** :ref:`Texture2D` value **)** - :ref:`Texture2D` **get_emission_color_texture** **(** **)** Particle color will be modulated by color determined by sampling this texture at the same point as the :ref:`emission_point_texture`. \ **Note:** :ref:`emission_color_texture` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo` *must* be ``true``. For a :ref:`ShaderMaterial`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`emission_color_texture` will have no visible effect. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_normal_texture: .. rst-class:: classref-property :ref:`Texture2D` **emission_normal_texture** .. rst-class:: classref-property-setget - void **set_emission_normal_texture** **(** :ref:`Texture2D` value **)** - :ref:`Texture2D` **get_emission_normal_texture** **(** **)** Particle velocity and rotation will be set by sampling this texture at the same point as the :ref:`emission_point_texture`. Used only in :ref:`EMISSION_SHAPE_DIRECTED_POINTS`. Can be created automatically from mesh or node by selecting "Create Emission Points from Mesh/Node" under the "Particles" tool in the toolbar. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_point_count: .. rst-class:: classref-property :ref:`int` **emission_point_count** .. rst-class:: classref-property-setget - void **set_emission_point_count** **(** :ref:`int` value **)** - :ref:`int` **get_emission_point_count** **(** **)** The number of emission points if ``emission_shape`` is set to :ref:`EMISSION_SHAPE_POINTS` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_point_texture: .. rst-class:: classref-property :ref:`Texture2D` **emission_point_texture** .. rst-class:: classref-property-setget - void **set_emission_point_texture** **(** :ref:`Texture2D` value **)** - :ref:`Texture2D` **get_emission_point_texture** **(** **)** Particles will be emitted at positions determined by sampling this texture at a random position. Used with :ref:`EMISSION_SHAPE_POINTS` and :ref:`EMISSION_SHAPE_DIRECTED_POINTS`. Can be created automatically from mesh or node by selecting "Create Emission Points from Mesh/Node" under the "Particles" tool in the toolbar. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_ring_axis: .. rst-class:: classref-property :ref:`Vector3` **emission_ring_axis** .. rst-class:: classref-property-setget - void **set_emission_ring_axis** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_emission_ring_axis** **(** **)** The axis of the ring when using the emitter :ref:`EMISSION_SHAPE_RING`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_ring_height: .. rst-class:: classref-property :ref:`float` **emission_ring_height** .. rst-class:: classref-property-setget - void **set_emission_ring_height** **(** :ref:`float` value **)** - :ref:`float` **get_emission_ring_height** **(** **)** The height of the ring when using the emitter :ref:`EMISSION_SHAPE_RING`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_ring_inner_radius: .. rst-class:: classref-property :ref:`float` **emission_ring_inner_radius** .. rst-class:: classref-property-setget - void **set_emission_ring_inner_radius** **(** :ref:`float` value **)** - :ref:`float` **get_emission_ring_inner_radius** **(** **)** The inner radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_ring_radius: .. rst-class:: classref-property :ref:`float` **emission_ring_radius** .. rst-class:: classref-property-setget - void **set_emission_ring_radius** **(** :ref:`float` value **)** - :ref:`float` **get_emission_ring_radius** **(** **)** The radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_shape: .. rst-class:: classref-property :ref:`EmissionShape` **emission_shape** = ``0`` .. rst-class:: classref-property-setget - void **set_emission_shape** **(** :ref:`EmissionShape` value **)** - :ref:`EmissionShape` **get_emission_shape** **(** **)** Particles will be emitted inside this region. Use :ref:`EmissionShape` constants for values. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_emission_sphere_radius: .. rst-class:: classref-property :ref:`float` **emission_sphere_radius** .. rst-class:: classref-property-setget - void **set_emission_sphere_radius** **(** :ref:`float` value **)** - :ref:`float` **get_emission_sphere_radius** **(** **)** The sphere's radius if ``emission_shape`` is set to :ref:`EMISSION_SHAPE_SPHERE`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_flatness: .. rst-class:: classref-property :ref:`float` **flatness** = ``0.0`` .. rst-class:: classref-property-setget - void **set_flatness** **(** :ref:`float` value **)** - :ref:`float` **get_flatness** **(** **)** Amount of :ref:`spread` along the Y axis. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_gravity: .. rst-class:: classref-property :ref:`Vector3` **gravity** = ``Vector3(0, -9.8, 0)`` .. rst-class:: classref-property-setget - void **set_gravity** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_gravity** **(** **)** Gravity applied to every particle. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_hue_variation_curve: .. rst-class:: classref-property :ref:`Texture2D` **hue_variation_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's hue will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_hue_variation_max: .. rst-class:: classref-property :ref:`float` **hue_variation_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum initial hue variation applied to each particle. It will shift the particle color's hue. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_hue_variation_min: .. rst-class:: classref-property :ref:`float` **hue_variation_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`hue_variation_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_initial_velocity_max: .. rst-class:: classref-property :ref:`float` **initial_velocity_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum initial velocity magnitude for each particle. Direction comes from :ref:`direction` and :ref:`spread`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_initial_velocity_min: .. rst-class:: classref-property :ref:`float` **initial_velocity_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`initial_velocity_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_lifetime_randomness: .. rst-class:: classref-property :ref:`float` **lifetime_randomness** = ``0.0`` .. rst-class:: classref-property-setget - void **set_lifetime_randomness** **(** :ref:`float` value **)** - :ref:`float` **get_lifetime_randomness** **(** **)** Particle lifetime randomness ratio. The equation for the lifetime of a particle is ``lifetime * (1.0 - randf() * lifetime_randomness)``. For example, a :ref:`lifetime_randomness` of ``0.4`` scales the lifetime between ``0.6`` to ``1.0`` of its original value. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_linear_accel_curve: .. rst-class:: classref-property :ref:`Texture2D` **linear_accel_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's linear acceleration will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_linear_accel_max: .. rst-class:: classref-property :ref:`float` **linear_accel_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum linear acceleration applied to each particle in the direction of motion. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_linear_accel_min: .. rst-class:: classref-property :ref:`float` **linear_accel_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`linear_accel_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_orbit_velocity_curve: .. rst-class:: classref-property :ref:`Texture2D` **orbit_velocity_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's orbital velocity will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_orbit_velocity_max: .. rst-class:: classref-property :ref:`float` **orbit_velocity_max** .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second. Only available when :ref:`particle_flag_disable_z` is ``true``. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_orbit_velocity_min: .. rst-class:: classref-property :ref:`float` **orbit_velocity_min** .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`orbit_velocity_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_particle_flag_align_y: .. rst-class:: classref-property :ref:`bool` **particle_flag_align_y** = ``false`` .. rst-class:: classref-property-setget - void **set_particle_flag** **(** :ref:`ParticleFlags` particle_flag, :ref:`bool` enable **)** - :ref:`bool` **get_particle_flag** **(** :ref:`ParticleFlags` particle_flag **)** |const| Align Y axis of particle with the direction of its velocity. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_particle_flag_disable_z: .. rst-class:: classref-property :ref:`bool` **particle_flag_disable_z** = ``false`` .. rst-class:: classref-property-setget - void **set_particle_flag** **(** :ref:`ParticleFlags` particle_flag, :ref:`bool` enable **)** - :ref:`bool` **get_particle_flag** **(** :ref:`ParticleFlags` particle_flag **)** |const| If ``true``, particles will not move on the z axis. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_particle_flag_rotate_y: .. rst-class:: classref-property :ref:`bool` **particle_flag_rotate_y** = ``false`` .. rst-class:: classref-property-setget - void **set_particle_flag** **(** :ref:`ParticleFlags` particle_flag, :ref:`bool` enable **)** - :ref:`bool` **get_particle_flag** **(** :ref:`ParticleFlags` particle_flag **)** |const| If ``true``, particles rotate around Y axis by :ref:`angle_min`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_radial_accel_curve: .. rst-class:: classref-property :ref:`Texture2D` **radial_accel_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's radial acceleration will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_radial_accel_max: .. rst-class:: classref-property :ref:`float` **radial_accel_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum radial acceleration applied to each particle. Makes particle accelerate away from the origin or towards it if negative. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_radial_accel_min: .. rst-class:: classref-property :ref:`float` **radial_accel_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`radial_accel_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_scale_curve: .. rst-class:: classref-property :ref:`Texture2D` **scale_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's scale will vary along this :ref:`CurveTexture`. If a :ref:`CurveXYZTexture` is supplied instead, the scale will be separated per-axis. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_scale_max: .. rst-class:: classref-property :ref:`float` **scale_max** = ``1.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum initial scale applied to each particle. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_scale_min: .. rst-class:: classref-property :ref:`float` **scale_min** = ``1.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`scale_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_spread: .. rst-class:: classref-property :ref:`float` **spread** = ``45.0`` .. rst-class:: classref-property-setget - void **set_spread** **(** :ref:`float` value **)** - :ref:`float` **get_spread** **(** **)** Each particle's initial direction range from ``+spread`` to ``-spread`` degrees. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_sub_emitter_amount_at_collision: .. rst-class:: classref-property :ref:`int` **sub_emitter_amount_at_collision** .. rst-class:: classref-property-setget - void **set_sub_emitter_amount_at_collision** **(** :ref:`int` value **)** - :ref:`int` **get_sub_emitter_amount_at_collision** **(** **)** Sub particle amount on collision. Maximum amount set in the sub particles emitter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_sub_emitter_amount_at_end: .. rst-class:: classref-property :ref:`int` **sub_emitter_amount_at_end** .. rst-class:: classref-property-setget - void **set_sub_emitter_amount_at_end** **(** :ref:`int` value **)** - :ref:`int` **get_sub_emitter_amount_at_end** **(** **)** .. container:: contribute There is currently no description for this property. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_sub_emitter_frequency: .. rst-class:: classref-property :ref:`float` **sub_emitter_frequency** .. rst-class:: classref-property-setget - void **set_sub_emitter_frequency** **(** :ref:`float` value **)** - :ref:`float` **get_sub_emitter_frequency** **(** **)** .. container:: contribute There is currently no description for this property. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_sub_emitter_keep_velocity: .. rst-class:: classref-property :ref:`bool` **sub_emitter_keep_velocity** = ``false`` .. rst-class:: classref-property-setget - void **set_sub_emitter_keep_velocity** **(** :ref:`bool` value **)** - :ref:`bool` **get_sub_emitter_keep_velocity** **(** **)** .. container:: contribute There is currently no description for this property. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_sub_emitter_mode: .. rst-class:: classref-property :ref:`SubEmitterMode` **sub_emitter_mode** = ``0`` .. rst-class:: classref-property-setget - void **set_sub_emitter_mode** **(** :ref:`SubEmitterMode` value **)** - :ref:`SubEmitterMode` **get_sub_emitter_mode** **(** **)** .. container:: contribute There is currently no description for this property. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_tangential_accel_curve: .. rst-class:: classref-property :ref:`Texture2D` **tangential_accel_curve** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's tangential acceleration will vary along this :ref:`CurveTexture`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_tangential_accel_max: .. rst-class:: classref-property :ref:`float` **tangential_accel_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_tangential_accel_min: .. rst-class:: classref-property :ref:`float` **tangential_accel_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum equivalent of :ref:`tangential_accel_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_enabled: .. rst-class:: classref-property :ref:`bool` **turbulence_enabled** = ``false`` .. rst-class:: classref-property-setget - void **set_turbulence_enabled** **(** :ref:`bool` value **)** - :ref:`bool` **get_turbulence_enabled** **(** **)** If ``true``, enables turbulence for the particle system. Turbulence can be used to vary particle movement according to its position (based on a 3D noise pattern). In 3D, :ref:`GPUParticlesAttractorVectorField3D` with :ref:`NoiseTexture3D` can be used as an alternative to turbulence that works in world space and with multiple particle systems reacting in the same way. \ **Note:** Enabling turbulence has a high performance cost on the GPU. Only enable turbulence on a few particle systems at once at most, and consider disabling it when targeting mobile/web platforms. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_influence_max: .. rst-class:: classref-property :ref:`float` **turbulence_influence_max** = ``0.1`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum turbulence influence on each particle. The actual amount of turbulence influence on each particle is calculated as a random value between :ref:`turbulence_influence_min` and :ref:`turbulence_influence_max` and multiplied by the amount of turbulence influence from :ref:`turbulence_influence_over_life`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_influence_min: .. rst-class:: classref-property :ref:`float` **turbulence_influence_min** = ``0.1`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum turbulence influence on each particle. The actual amount of turbulence influence on each particle is calculated as a random value between :ref:`turbulence_influence_min` and :ref:`turbulence_influence_max` and multiplied by the amount of turbulence influence from :ref:`turbulence_influence_over_life`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_influence_over_life: .. rst-class:: classref-property :ref:`Texture2D` **turbulence_influence_over_life** .. rst-class:: classref-property-setget - void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** - :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Each particle's amount of turbulence will be influenced along this :ref:`CurveTexture` over its life time. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_initial_displacement_max: .. rst-class:: classref-property :ref:`float` **turbulence_initial_displacement_max** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Maximum displacement of each particle's spawn position by the turbulence. The actual amount of displacement will be a factor of the underlying turbulence multiplied by a random value between :ref:`turbulence_initial_displacement_min` and :ref:`turbulence_initial_displacement_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_initial_displacement_min: .. rst-class:: classref-property :ref:`float` **turbulence_initial_displacement_min** = ``0.0`` .. rst-class:: classref-property-setget - void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** - :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Minimum displacement of each particle's spawn position by the turbulence. The actual amount of displacement will be a factor of the underlying turbulence multiplied by a random value between :ref:`turbulence_initial_displacement_min` and :ref:`turbulence_initial_displacement_max`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_noise_scale: .. rst-class:: classref-property :ref:`float` **turbulence_noise_scale** = ``9.0`` .. rst-class:: classref-property-setget - void **set_turbulence_noise_scale** **(** :ref:`float` value **)** - :ref:`float` **get_turbulence_noise_scale** **(** **)** This value controls the overall scale/frequency of the turbulence noise pattern. A small scale will result in smaller features with more detail while a high scale will result in smoother noise with larger features. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_noise_speed: .. rst-class:: classref-property :ref:`Vector3` **turbulence_noise_speed** = ``Vector3(0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_turbulence_noise_speed** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_turbulence_noise_speed** **(** **)** A scrolling velocity for the turbulence field. This sets a directional trend for the pattern to move in over time. The default value of ``Vector3(0, 0, 0)`` turns off the scrolling. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_noise_speed_random: .. rst-class:: classref-property :ref:`float` **turbulence_noise_speed_random** = ``0.2`` .. rst-class:: classref-property-setget - void **set_turbulence_noise_speed_random** **(** :ref:`float` value **)** - :ref:`float` **get_turbulence_noise_speed_random** **(** **)** The in-place rate of change of the turbulence field. This defines how quickly the noise pattern varies over time. A value of 0.0 will result in a fixed pattern. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_property_turbulence_noise_strength: .. rst-class:: classref-property :ref:`float` **turbulence_noise_strength** = ``1.0`` .. rst-class:: classref-property-setget - void **set_turbulence_noise_strength** **(** :ref:`float` value **)** - :ref:`float` **get_turbulence_noise_strength** **(** **)** The turbulence noise strength. Increasing this will result in a stronger, more contrasting, flow pattern. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_ParticleProcessMaterial_method_get_param_max: .. rst-class:: classref-method :ref:`float` **get_param_max** **(** :ref:`Parameter` param **)** |const| Returns the maximum value range for the given parameter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_get_param_min: .. rst-class:: classref-method :ref:`float` **get_param_min** **(** :ref:`Parameter` param **)** |const| Returns the minimum value range for the given parameter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_get_param_texture: .. rst-class:: classref-method :ref:`Texture2D` **get_param_texture** **(** :ref:`Parameter` param **)** |const| Returns the :ref:`Texture2D` used by the specified parameter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_get_particle_flag: .. rst-class:: classref-method :ref:`bool` **get_particle_flag** **(** :ref:`ParticleFlags` particle_flag **)** |const| Returns ``true`` if the specified particle flag is enabled. See :ref:`ParticleFlags` for options. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_set_param_max: .. rst-class:: classref-method void **set_param_max** **(** :ref:`Parameter` param, :ref:`float` value **)** Sets the maximum value range for the given parameter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_set_param_min: .. rst-class:: classref-method void **set_param_min** **(** :ref:`Parameter` param, :ref:`float` value **)** Sets the minimum value range for the given parameter. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_set_param_texture: .. rst-class:: classref-method void **set_param_texture** **(** :ref:`Parameter` param, :ref:`Texture2D` texture **)** Sets the :ref:`Texture2D` for the specified :ref:`Parameter`. .. rst-class:: classref-item-separator ---- .. _class_ParticleProcessMaterial_method_set_particle_flag: .. rst-class:: classref-method void **set_particle_flag** **(** :ref:`ParticleFlags` particle_flag, :ref:`bool` enable **)** If ``true``, enables the specified particle flag. See :ref:`ParticleFlags` for options. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`