PhotonDust: Difference between revisions

From Resonite Wiki
major page update
m Minor adjustments
Line 2: Line 2:
<!--ATTENTION WIKI EDITORS: this will probably need more info in general. Mostly things like what people can do, the idea behind the name of Photon Dust, Frooxius talking about how it's like minecraft's system, frooxius talking about expandability, how the system can do effects inaccessible to Unity, and generally ideas and inspiration that get users excited to use such a system-->
<!--ATTENTION WIKI EDITORS: this will probably need more info in general. Mostly things like what people can do, the idea behind the name of Photon Dust, Frooxius talking about how it's like minecraft's system, frooxius talking about expandability, how the system can do effects inaccessible to Unity, and generally ideas and inspiration that get users excited to use such a system-->


'''Photon Dust''' is the particle system made for Resonite<ref>Message by Frooxius on Discord (requires account): https://discord.com/channels/1040316820650991766/1154514014563483759/1292978594683031613</ref> that replaced the unity particle system. It is more modular and extensible than the original system<ref>Message by Frooxius on Discord (requires account): https://discord.com/channels/1040316820650991766/1154514014563483759/1293664350443274301</ref>.
'''PhotonDust''' is the particle system made for Resonite<ref>Message by Frooxius on Discord (requires account): https://discord.com/channels/1040316820650991766/1154514014563483759/1292978594683031613</ref> that replaced the Unity particle system. It is more modular and extensible than the original system<ref>Message by Frooxius on Discord (requires account): https://discord.com/channels/1040316820650991766/1154514014563483759/1293664350443274301</ref>.


{{note|Photon Dust is now in the main game, but still being tested. See [https://github.com/Yellow-Dog-Man/Resonite-Issues/discussions/3259 the GitHub discussion thread] for more information.|information}}
{{note|Photon Dust is now in the main game, but still being tested. See [https://github.com/Yellow-Dog-Man/Resonite-Issues/discussions/3259 the GitHub discussion thread] for more information.|information}}
Line 9: Line 9:


= How to use it =
= How to use it =
Photon Dust's modularity allows for making all sorts of effects. How the system works is there is a life cycle system like other particles. Particles are "Born" from an emitter, "Live" or have lifetime, and "Die"
PhotonDust's modularity allows for making all sorts of effects. How the system works is there is a life cycle system like other particles. Particles are "Born" from an emitter, "Live" or have lifetime, and "Die"


To start, an enviroment is needed. To make this simple, use a [[Dev Tool]]'s create menu to create a Photon Dust or particle system.
To start, an environment is needed. To make this simple, use a [[Dev Tool]]'s create menu to create a Photon Dust or particle system.


This will create a Photon Dust system with a Particle emitter shooting particles like a portal. To modify this, the emitter can have its values adjusted, such as speed, rotation, and many other values for emitters. A list of alternative emitters that can be used are under the [[:Category:Components:Rendering:Particles:Emitters|Rendering/Particles/Emitters]] in the attach Component menu. For any emitter added, they need the Photon Dust System specified in their system field, which will be the [[Component:ParticleSystem]] in the root of the Photon Dust object we made.
This will create a PhotonDust system with a Particle emitter shooting particles like a portal. To modify this, the emitter can have its values adjusted, such as speed, rotation, and many other values for emitters. A list of alternative emitters that can be used are under the [[:Category:Components:Rendering:Particles:Emitters|Rendering/Particles/Emitters]] in the Attach Component menu. For any emitter added, they need the PhotonDust System specified in their system field, which will be the [[Component:ParticleSystem]] in the root of the Photon Dust object we made.


Photon Dust is made from a [[#Modular approach|modules]], which can be read about more in the [[#Modular approach|Modular approach]] section. To make your Particles move with gravity, forces, and turbulence, simply add a module and insert the module into the [[Component:ParticleSystem]] that is Photon Dust. This will instantly make the module affect Particles in the specified system. Every module respects the disabled property, meaning disabling a module will disable it's effect on the Particles.
PhotonDust is made from a [[#Modular approach|modules]], which can be read about more in the [[#Modular approach|Modular approach]] section. To make your Particles move with gravity, forces, and turbulence, simply add a module and insert the module into the [[Component:ParticleSystem]] that is PhotonDust. This will instantly make the module affect Particles in the specified system. Every module respects the disabled property, meaning disabling a module will disable its effect on the Particles.


= How it works =
= How it works =
Photon Dust as a system has been commonly compared to being similar to Minecraft's robust Particle system. It is modular, fast, multithreaded, and allows for forces like Blender3D's and Minecraft's particles.
PhotonDust can be compared to Minecraft's robust Particle system. It is modular, fast, multithreaded, and allows for forces like Blender3D's and Minecraft's particles.


== Multithreading ==
== Multithreading ==
The Photon Dust system is multithreaded, meaning it will do calculations on separate CPU cores to distribute the load on the machine. This allows for a much greater number of particles running at once. This does however allow the system to utilize the entire CPU to simulate. So too many particles will pin the CPU to 100%. The system however will slow itself down if other processes by the game or other programs need CPU power. This causes the particles to become a slide show without ruining frame rate of the game or other games running.
The PhotonDust system is multithreaded, meaning it will do calculations on separate CPU cores to distribute the load on the machine. This allows for a much greater number of particles running at once. This does however allow the system to utilize the entire CPU to simulate. So too many particles will pin the CPU to 100%. The system however will slow itself down if other processes by the game or other programs need CPU power. This causes the particles to become a slideshow without ruining framerate of the game or other games running.


== Modular approach ==
== Modular approach ==
Line 29: Line 29:


* Ribbons - particles will have ribbons connecting them to each other.
* Ribbons - particles will have ribbons connecting them to each other.
* Trails - particles will have strips of color or patterns that follow behind them
* Trails - particles will have strips of color or patterns that follow behind them.
* SimplexTurbulentForce - particles will move through the air as if hitting turbulent air
* SimplexTurbulentForce - particles will move through the air as if hitting turbulent air (using simplex noise).
* RadialForce - Particles will be repelled or attracted to arbitrary points.
* RadialForce - Particles will be repelled or attracted to a point.
* GravityForce - particles can have gravity
* GravityForce - particles can have gravity.


And many more! A list of modules and their effects the game uses can be found under the component category [[:Category:Components:Rendering:Particle System:Modules|Rendering/Particle System/Modules]].
And many more! A list of modules and their effects the game uses can be found under the component category [[:Category:Components:Rendering:Particle System:Modules|Rendering/Particle System/Modules]].
Line 38: Line 38:
= Differences from the legacy system =
= Differences from the legacy system =


Photon Dust has several notable differences from the old legacy particle system that existed before. It is modular, fast, multithreaded, and doesn't fall to the same emit and forget systems of Unity. It also is a clean component, without a monolithicly large component from older days when Unity was the underlying simulator of such systems.
PhotonDust has several notable differences from the old legacy particle system that existed before. It is modular, fast, multithreaded, and doesn't fall to the same emit and forget systems of Unity. It also is a clean component, without a monolithicly large component from older days when Unity was the underlying simulator of such systems.


= References =
= References =

Revision as of 14:29, 12 February 2025

This article or section is a Stub. You can help the Resonite Wiki by expanding it.

PhotonDust is the particle system made for Resonite[1] that replaced the Unity particle system. It is more modular and extensible than the original system[2].

Photon Dust is now in the main game, but still being tested. See the GitHub discussion thread for more information.

The implementation of this system is currently tracked as issue 587 on GitHub.

How to use it

PhotonDust's modularity allows for making all sorts of effects. How the system works is there is a life cycle system like other particles. Particles are "Born" from an emitter, "Live" or have lifetime, and "Die"

To start, an environment is needed. To make this simple, use a Dev Tool's create menu to create a Photon Dust or particle system.

This will create a PhotonDust system with a Particle emitter shooting particles like a portal. To modify this, the emitter can have its values adjusted, such as speed, rotation, and many other values for emitters. A list of alternative emitters that can be used are under the Rendering/Particles/Emitters in the Attach Component menu. For any emitter added, they need the PhotonDust System specified in their system field, which will be the Component:ParticleSystem in the root of the Photon Dust object we made.

PhotonDust is made from a modules, which can be read about more in the Modular approach section. To make your Particles move with gravity, forces, and turbulence, simply add a module and insert the module into the Component:ParticleSystem that is PhotonDust. This will instantly make the module affect Particles in the specified system. Every module respects the disabled property, meaning disabling a module will disable its effect on the Particles.

How it works

PhotonDust can be compared to Minecraft's robust Particle system. It is modular, fast, multithreaded, and allows for forces like Blender3D's and Minecraft's particles.

Multithreading

The PhotonDust system is multithreaded, meaning it will do calculations on separate CPU cores to distribute the load on the machine. This allows for a much greater number of particles running at once. This does however allow the system to utilize the entire CPU to simulate. So too many particles will pin the CPU to 100%. The system however will slow itself down if other processes by the game or other programs need CPU power. This causes the particles to become a slideshow without ruining framerate of the game or other games running.

Modular approach

Instead of condensing most of the options within a single monolithic component like before, most options are broken up in modules.

Several modules are already implemented, and more will be implemented in the future. Current ones include but not limited to:

  • Ribbons - particles will have ribbons connecting them to each other.
  • Trails - particles will have strips of color or patterns that follow behind them.
  • SimplexTurbulentForce - particles will move through the air as if hitting turbulent air (using simplex noise).
  • RadialForce - Particles will be repelled or attracted to a point.
  • GravityForce - particles can have gravity.

And many more! A list of modules and their effects the game uses can be found under the component category Rendering/Particle System/Modules.

Differences from the legacy system

PhotonDust has several notable differences from the old legacy particle system that existed before. It is modular, fast, multithreaded, and doesn't fall to the same emit and forget systems of Unity. It also is a clean component, without a monolithicly large component from older days when Unity was the underlying simulator of such systems.

References

See Also