class_gpuparticles3d.rst 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/4.1/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/4.1/doc/classes/GPUParticles3D.xml.
  6. .. _class_GPUParticles3D:
  7. GPUParticles3D
  8. ==============
  9. **Inherits:** :ref:`GeometryInstance3D<class_GeometryInstance3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. 3D particle emitter.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. 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.
  15. Use the ``process_material`` property to add a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial<class_ShaderMaterial>` which will be applied to all particles.
  16. .. rst-class:: classref-introduction-group
  17. Tutorials
  18. ---------
  19. - :doc:`Particle systems (3D) <../tutorials/3d/particles/index>`
  20. - :doc:`Controlling thousands of fish with Particles <../tutorials/performance/vertex_animation/controlling_thousands_of_fish>`
  21. - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
  22. .. rst-class:: classref-reftable-group
  23. Properties
  24. ----------
  25. .. table::
  26. :widths: auto
  27. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  28. | :ref:`int<class_int>` | :ref:`amount<class_GPUParticles3D_property_amount>` | ``8`` |
  29. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  30. | :ref:`float<class_float>` | :ref:`collision_base_size<class_GPUParticles3D_property_collision_base_size>` | ``0.01`` |
  31. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  32. | :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` | :ref:`draw_order<class_GPUParticles3D_property_draw_order>` | ``0`` |
  33. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  34. | :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_1<class_GPUParticles3D_property_draw_pass_1>` | |
  35. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  36. | :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_2<class_GPUParticles3D_property_draw_pass_2>` | |
  37. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  38. | :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_3<class_GPUParticles3D_property_draw_pass_3>` | |
  39. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  40. | :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_4<class_GPUParticles3D_property_draw_pass_4>` | |
  41. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  42. | :ref:`int<class_int>` | :ref:`draw_passes<class_GPUParticles3D_property_draw_passes>` | ``1`` |
  43. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  44. | :ref:`Skin<class_Skin>` | :ref:`draw_skin<class_GPUParticles3D_property_draw_skin>` | |
  45. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  46. | :ref:`bool<class_bool>` | :ref:`emitting<class_GPUParticles3D_property_emitting>` | ``true`` |
  47. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  48. | :ref:`float<class_float>` | :ref:`explosiveness<class_GPUParticles3D_property_explosiveness>` | ``0.0`` |
  49. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  50. | :ref:`int<class_int>` | :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` | ``30`` |
  51. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  52. | :ref:`bool<class_bool>` | :ref:`fract_delta<class_GPUParticles3D_property_fract_delta>` | ``true`` |
  53. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  54. | :ref:`bool<class_bool>` | :ref:`interpolate<class_GPUParticles3D_property_interpolate>` | ``true`` |
  55. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  56. | :ref:`float<class_float>` | :ref:`lifetime<class_GPUParticles3D_property_lifetime>` | ``1.0`` |
  57. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  58. | :ref:`bool<class_bool>` | :ref:`local_coords<class_GPUParticles3D_property_local_coords>` | ``false`` |
  59. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  60. | :ref:`bool<class_bool>` | :ref:`one_shot<class_GPUParticles3D_property_one_shot>` | ``false`` |
  61. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  62. | :ref:`float<class_float>` | :ref:`preprocess<class_GPUParticles3D_property_preprocess>` | ``0.0`` |
  63. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  64. | :ref:`Material<class_Material>` | :ref:`process_material<class_GPUParticles3D_property_process_material>` | |
  65. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  66. | :ref:`float<class_float>` | :ref:`randomness<class_GPUParticles3D_property_randomness>` | ``0.0`` |
  67. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  68. | :ref:`float<class_float>` | :ref:`speed_scale<class_GPUParticles3D_property_speed_scale>` | ``1.0`` |
  69. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  70. | :ref:`NodePath<class_NodePath>` | :ref:`sub_emitter<class_GPUParticles3D_property_sub_emitter>` | ``NodePath("")`` |
  71. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  72. | :ref:`bool<class_bool>` | :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>` | ``false`` |
  73. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  74. | :ref:`float<class_float>` | :ref:`trail_lifetime<class_GPUParticles3D_property_trail_lifetime>` | ``0.3`` |
  75. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  76. | :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` | :ref:`transform_align<class_GPUParticles3D_property_transform_align>` | ``0`` |
  77. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  78. | :ref:`AABB<class_AABB>` | :ref:`visibility_aabb<class_GPUParticles3D_property_visibility_aabb>` | ``AABB(-4, -4, -4, 8, 8, 8)`` |
  79. +-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
  80. .. rst-class:: classref-reftable-group
  81. Methods
  82. -------
  83. .. table::
  84. :widths: auto
  85. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`AABB<class_AABB>` | :ref:`capture_aabb<class_GPUParticles3D_method_capture_aabb>` **(** **)** |const| |
  87. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | void | :ref:`emit_particle<class_GPUParticles3D_method_emit_particle>` **(** :ref:`Transform3D<class_Transform3D>` xform, :ref:`Vector3<class_Vector3>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)** |
  89. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | :ref:`Mesh<class_Mesh>` | :ref:`get_draw_pass_mesh<class_GPUParticles3D_method_get_draw_pass_mesh>` **(** :ref:`int<class_int>` pass **)** |const| |
  91. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | void | :ref:`restart<class_GPUParticles3D_method_restart>` **(** **)** |
  93. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | void | :ref:`set_draw_pass_mesh<class_GPUParticles3D_method_set_draw_pass_mesh>` **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)** |
  95. +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. .. rst-class:: classref-section-separator
  97. ----
  98. .. rst-class:: classref-descriptions-group
  99. Enumerations
  100. ------------
  101. .. _enum_GPUParticles3D_DrawOrder:
  102. .. rst-class:: classref-enumeration
  103. enum **DrawOrder**:
  104. .. _class_GPUParticles3D_constant_DRAW_ORDER_INDEX:
  105. .. rst-class:: classref-enumeration-constant
  106. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  107. Particles are drawn in the order emitted.
  108. .. _class_GPUParticles3D_constant_DRAW_ORDER_LIFETIME:
  109. .. rst-class:: classref-enumeration-constant
  110. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  111. Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front.
  112. .. _class_GPUParticles3D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  113. .. rst-class:: classref-enumeration-constant
  114. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  115. Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front.
  116. .. _class_GPUParticles3D_constant_DRAW_ORDER_VIEW_DEPTH:
  117. .. rst-class:: classref-enumeration-constant
  118. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_VIEW_DEPTH** = ``3``
  119. Particles are drawn in order of depth.
  120. .. rst-class:: classref-item-separator
  121. ----
  122. .. _enum_GPUParticles3D_EmitFlags:
  123. .. rst-class:: classref-enumeration
  124. enum **EmitFlags**:
  125. .. _class_GPUParticles3D_constant_EMIT_FLAG_POSITION:
  126. .. rst-class:: classref-enumeration-constant
  127. :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  128. Particle starts at the specified position.
  129. .. _class_GPUParticles3D_constant_EMIT_FLAG_ROTATION_SCALE:
  130. .. rst-class:: classref-enumeration-constant
  131. :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  132. Particle starts with specified rotation and scale.
  133. .. _class_GPUParticles3D_constant_EMIT_FLAG_VELOCITY:
  134. .. rst-class:: classref-enumeration-constant
  135. :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  136. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  137. .. _class_GPUParticles3D_constant_EMIT_FLAG_COLOR:
  138. .. rst-class:: classref-enumeration-constant
  139. :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  140. Particle starts with specified color.
  141. .. _class_GPUParticles3D_constant_EMIT_FLAG_CUSTOM:
  142. .. rst-class:: classref-enumeration-constant
  143. :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  144. Particle starts with specified ``CUSTOM`` data.
  145. .. rst-class:: classref-item-separator
  146. ----
  147. .. _enum_GPUParticles3D_TransformAlign:
  148. .. rst-class:: classref-enumeration
  149. enum **TransformAlign**:
  150. .. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_DISABLED:
  151. .. rst-class:: classref-enumeration-constant
  152. :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_DISABLED** = ``0``
  153. .. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Z_BILLBOARD:
  154. .. rst-class:: classref-enumeration-constant
  155. :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Z_BILLBOARD** = ``1``
  156. .. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Y_TO_VELOCITY:
  157. .. rst-class:: classref-enumeration-constant
  158. :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Y_TO_VELOCITY** = ``2``
  159. .. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY:
  160. .. rst-class:: classref-enumeration-constant
  161. :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY** = ``3``
  162. .. rst-class:: classref-section-separator
  163. ----
  164. .. rst-class:: classref-descriptions-group
  165. Constants
  166. ---------
  167. .. _class_GPUParticles3D_constant_MAX_DRAW_PASSES:
  168. .. rst-class:: classref-constant
  169. **MAX_DRAW_PASSES** = ``4``
  170. Maximum number of draw passes supported.
  171. .. rst-class:: classref-section-separator
  172. ----
  173. .. rst-class:: classref-descriptions-group
  174. Property Descriptions
  175. ---------------------
  176. .. _class_GPUParticles3D_property_amount:
  177. .. rst-class:: classref-property
  178. :ref:`int<class_int>` **amount** = ``8``
  179. .. rst-class:: classref-property-setget
  180. - void **set_amount** **(** :ref:`int<class_int>` value **)**
  181. - :ref:`int<class_int>` **get_amount** **(** **)**
  182. Number of particles to emit.
  183. .. rst-class:: classref-item-separator
  184. ----
  185. .. _class_GPUParticles3D_property_collision_base_size:
  186. .. rst-class:: classref-property
  187. :ref:`float<class_float>` **collision_base_size** = ``0.01``
  188. .. rst-class:: classref-property-setget
  189. - void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
  190. - :ref:`float<class_float>` **get_collision_base_size** **(** **)**
  191. .. container:: contribute
  192. There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  193. .. rst-class:: classref-item-separator
  194. ----
  195. .. _class_GPUParticles3D_property_draw_order:
  196. .. rst-class:: classref-property
  197. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **draw_order** = ``0``
  198. .. rst-class:: classref-property-setget
  199. - void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` value **)**
  200. - :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **get_draw_order** **(** **)**
  201. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` values.
  202. \ **Note:** :ref:`DRAW_ORDER_INDEX<class_GPUParticles3D_constant_DRAW_ORDER_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.
  203. .. rst-class:: classref-item-separator
  204. ----
  205. .. _class_GPUParticles3D_property_draw_pass_1:
  206. .. rst-class:: classref-property
  207. :ref:`Mesh<class_Mesh>` **draw_pass_1**
  208. .. rst-class:: classref-property-setget
  209. - void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
  210. - :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
  211. :ref:`Mesh<class_Mesh>` that is drawn for the first draw pass.
  212. .. rst-class:: classref-item-separator
  213. ----
  214. .. _class_GPUParticles3D_property_draw_pass_2:
  215. .. rst-class:: classref-property
  216. :ref:`Mesh<class_Mesh>` **draw_pass_2**
  217. .. rst-class:: classref-property-setget
  218. - void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
  219. - :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
  220. :ref:`Mesh<class_Mesh>` that is drawn for the second draw pass.
  221. .. rst-class:: classref-item-separator
  222. ----
  223. .. _class_GPUParticles3D_property_draw_pass_3:
  224. .. rst-class:: classref-property
  225. :ref:`Mesh<class_Mesh>` **draw_pass_3**
  226. .. rst-class:: classref-property-setget
  227. - void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
  228. - :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
  229. :ref:`Mesh<class_Mesh>` that is drawn for the third draw pass.
  230. .. rst-class:: classref-item-separator
  231. ----
  232. .. _class_GPUParticles3D_property_draw_pass_4:
  233. .. rst-class:: classref-property
  234. :ref:`Mesh<class_Mesh>` **draw_pass_4**
  235. .. rst-class:: classref-property-setget
  236. - void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
  237. - :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
  238. :ref:`Mesh<class_Mesh>` that is drawn for the fourth draw pass.
  239. .. rst-class:: classref-item-separator
  240. ----
  241. .. _class_GPUParticles3D_property_draw_passes:
  242. .. rst-class:: classref-property
  243. :ref:`int<class_int>` **draw_passes** = ``1``
  244. .. rst-class:: classref-property-setget
  245. - void **set_draw_passes** **(** :ref:`int<class_int>` value **)**
  246. - :ref:`int<class_int>` **get_draw_passes** **(** **)**
  247. The number of draw passes when rendering particles.
  248. .. rst-class:: classref-item-separator
  249. ----
  250. .. _class_GPUParticles3D_property_draw_skin:
  251. .. rst-class:: classref-property
  252. :ref:`Skin<class_Skin>` **draw_skin**
  253. .. rst-class:: classref-property-setget
  254. - void **set_skin** **(** :ref:`Skin<class_Skin>` value **)**
  255. - :ref:`Skin<class_Skin>` **get_skin** **(** **)**
  256. .. container:: contribute
  257. There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  258. .. rst-class:: classref-item-separator
  259. ----
  260. .. _class_GPUParticles3D_property_emitting:
  261. .. rst-class:: classref-property
  262. :ref:`bool<class_bool>` **emitting** = ``true``
  263. .. rst-class:: classref-property-setget
  264. - void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
  265. - :ref:`bool<class_bool>` **is_emitting** **(** **)**
  266. If ``true``, particles are being emitted.
  267. .. rst-class:: classref-item-separator
  268. ----
  269. .. _class_GPUParticles3D_property_explosiveness:
  270. .. rst-class:: classref-property
  271. :ref:`float<class_float>` **explosiveness** = ``0.0``
  272. .. rst-class:: classref-property-setget
  273. - void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
  274. - :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
  275. Time ratio between each emission. If ``0``, particles are emitted continuously. If ``1``, all particles are emitted simultaneously.
  276. .. rst-class:: classref-item-separator
  277. ----
  278. .. _class_GPUParticles3D_property_fixed_fps:
  279. .. rst-class:: classref-property
  280. :ref:`int<class_int>` **fixed_fps** = ``30``
  281. .. rst-class:: classref-property-setget
  282. - void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
  283. - :ref:`int<class_int>` **get_fixed_fps** **(** **)**
  284. The particle system's frame rate is fixed to a value. For example, 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.
  285. .. rst-class:: classref-item-separator
  286. ----
  287. .. _class_GPUParticles3D_property_fract_delta:
  288. .. rst-class:: classref-property
  289. :ref:`bool<class_bool>` **fract_delta** = ``true``
  290. .. rst-class:: classref-property-setget
  291. - void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
  292. - :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
  293. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  294. .. rst-class:: classref-item-separator
  295. ----
  296. .. _class_GPUParticles3D_property_interpolate:
  297. .. rst-class:: classref-property
  298. :ref:`bool<class_bool>` **interpolate** = ``true``
  299. .. rst-class:: classref-property-setget
  300. - void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
  301. - :ref:`bool<class_bool>` **get_interpolate** **(** **)**
  302. Enables particle interpolation, which makes the particle movement smoother when their :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` is lower than the screen refresh rate.
  303. .. rst-class:: classref-item-separator
  304. ----
  305. .. _class_GPUParticles3D_property_lifetime:
  306. .. rst-class:: classref-property
  307. :ref:`float<class_float>` **lifetime** = ``1.0``
  308. .. rst-class:: classref-property-setget
  309. - void **set_lifetime** **(** :ref:`float<class_float>` value **)**
  310. - :ref:`float<class_float>` **get_lifetime** **(** **)**
  311. Amount of time each particle will exist.
  312. .. rst-class:: classref-item-separator
  313. ----
  314. .. _class_GPUParticles3D_property_local_coords:
  315. .. rst-class:: classref-property
  316. :ref:`bool<class_bool>` **local_coords** = ``false``
  317. .. rst-class:: classref-property-setget
  318. - void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
  319. - :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
  320. If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the **GPUParticles3D** node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the **GPUParticles3D** node (and its parents) when it is moved or rotated.
  321. .. rst-class:: classref-item-separator
  322. ----
  323. .. _class_GPUParticles3D_property_one_shot:
  324. .. rst-class:: classref-property
  325. :ref:`bool<class_bool>` **one_shot** = ``false``
  326. .. rst-class:: classref-property-setget
  327. - void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
  328. - :ref:`bool<class_bool>` **get_one_shot** **(** **)**
  329. If ``true``, only ``amount`` particles will be emitted.
  330. .. rst-class:: classref-item-separator
  331. ----
  332. .. _class_GPUParticles3D_property_preprocess:
  333. .. rst-class:: classref-property
  334. :ref:`float<class_float>` **preprocess** = ``0.0``
  335. .. rst-class:: classref-property-setget
  336. - void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
  337. - :ref:`float<class_float>` **get_pre_process_time** **(** **)**
  338. Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting.
  339. .. rst-class:: classref-item-separator
  340. ----
  341. .. _class_GPUParticles3D_property_process_material:
  342. .. rst-class:: classref-property
  343. :ref:`Material<class_Material>` **process_material**
  344. .. rst-class:: classref-property-setget
  345. - void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
  346. - :ref:`Material<class_Material>` **get_process_material** **(** **)**
  347. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  348. .. rst-class:: classref-item-separator
  349. ----
  350. .. _class_GPUParticles3D_property_randomness:
  351. .. rst-class:: classref-property
  352. :ref:`float<class_float>` **randomness** = ``0.0``
  353. .. rst-class:: classref-property-setget
  354. - void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
  355. - :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
  356. Emission randomness ratio.
  357. .. rst-class:: classref-item-separator
  358. ----
  359. .. _class_GPUParticles3D_property_speed_scale:
  360. .. rst-class:: classref-property
  361. :ref:`float<class_float>` **speed_scale** = ``1.0``
  362. .. rst-class:: classref-property-setget
  363. - void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
  364. - :ref:`float<class_float>` **get_speed_scale** **(** **)**
  365. Speed scaling ratio. A value of ``0`` can be used to pause the particles.
  366. .. rst-class:: classref-item-separator
  367. ----
  368. .. _class_GPUParticles3D_property_sub_emitter:
  369. .. rst-class:: classref-property
  370. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
  371. .. rst-class:: classref-property-setget
  372. - void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
  373. - :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
  374. .. container:: contribute
  375. There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  376. .. rst-class:: classref-item-separator
  377. ----
  378. .. _class_GPUParticles3D_property_trail_enabled:
  379. .. rst-class:: classref-property
  380. :ref:`bool<class_bool>` **trail_enabled** = ``false``
  381. .. rst-class:: classref-property-setget
  382. - void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
  383. - :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
  384. If ``true``, enables particle trails using a mesh skinning system. Designed to work with :ref:`RibbonTrailMesh<class_RibbonTrailMesh>` and :ref:`TubeTrailMesh<class_TubeTrailMesh>`.
  385. \ **Note:** :ref:`BaseMaterial3D.use_particle_trails<class_BaseMaterial3D_property_use_particle_trails>` must also be enabled on the particle mesh's material. Otherwise, setting :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>` to ``true`` will have no effect.
  386. \ **Note:** Unlike :ref:`GPUParticles2D<class_GPUParticles2D>`, the number of trail sections and subdivisions is set in the :ref:`RibbonTrailMesh<class_RibbonTrailMesh>` or the :ref:`TubeTrailMesh<class_TubeTrailMesh>`'s properties.
  387. .. rst-class:: classref-item-separator
  388. ----
  389. .. _class_GPUParticles3D_property_trail_lifetime:
  390. .. rst-class:: classref-property
  391. :ref:`float<class_float>` **trail_lifetime** = ``0.3``
  392. .. rst-class:: classref-property-setget
  393. - void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
  394. - :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
  395. The amount of time the particle's trail should represent (in seconds). Only effective if :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>` is ``true``.
  396. .. rst-class:: classref-item-separator
  397. ----
  398. .. _class_GPUParticles3D_property_transform_align:
  399. .. rst-class:: classref-property
  400. :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **transform_align** = ``0``
  401. .. rst-class:: classref-property-setget
  402. - void **set_transform_align** **(** :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` value **)**
  403. - :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **get_transform_align** **(** **)**
  404. .. container:: contribute
  405. There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  406. .. rst-class:: classref-item-separator
  407. ----
  408. .. _class_GPUParticles3D_property_visibility_aabb:
  409. .. rst-class:: classref-property
  410. :ref:`AABB<class_AABB>` **visibility_aabb** = ``AABB(-4, -4, -4, 8, 8, 8)``
  411. .. rst-class:: classref-property-setget
  412. - void **set_visibility_aabb** **(** :ref:`AABB<class_AABB>` value **)**
  413. - :ref:`AABB<class_AABB>` **get_visibility_aabb** **(** **)**
  414. The :ref:`AABB<class_AABB>` that determines the node's region which needs to be visible on screen for the particle system to be active.
  415. Grow the box if particles suddenly appear/disappear when the node enters/exits the screen. The :ref:`AABB<class_AABB>` can be grown via code or with the **Particles → Generate AABB** editor tool.
  416. .. rst-class:: classref-section-separator
  417. ----
  418. .. rst-class:: classref-descriptions-group
  419. Method Descriptions
  420. -------------------
  421. .. _class_GPUParticles3D_method_capture_aabb:
  422. .. rst-class:: classref-method
  423. :ref:`AABB<class_AABB>` **capture_aabb** **(** **)** |const|
  424. Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.
  425. .. rst-class:: classref-item-separator
  426. ----
  427. .. _class_GPUParticles3D_method_emit_particle:
  428. .. rst-class:: classref-method
  429. void **emit_particle** **(** :ref:`Transform3D<class_Transform3D>` xform, :ref:`Vector3<class_Vector3>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)**
  430. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>`.
  431. .. rst-class:: classref-item-separator
  432. ----
  433. .. _class_GPUParticles3D_method_get_draw_pass_mesh:
  434. .. rst-class:: classref-method
  435. :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
  436. Returns the :ref:`Mesh<class_Mesh>` that is drawn at index ``pass``.
  437. .. rst-class:: classref-item-separator
  438. ----
  439. .. _class_GPUParticles3D_method_restart:
  440. .. rst-class:: classref-method
  441. void **restart** **(** **)**
  442. Restarts the particle emission, clearing existing particles.
  443. .. rst-class:: classref-item-separator
  444. ----
  445. .. _class_GPUParticles3D_method_set_draw_pass_mesh:
  446. .. rst-class:: classref-method
  447. void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
  448. Sets the :ref:`Mesh<class_Mesh>` that is drawn at index ``pass``.
  449. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  450. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  451. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  452. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  453. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  454. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  455. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`