Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
124 stars 2 forks source link

Implement a fully custom particle system simulation #587

Open Frooxius opened 8 months ago

Frooxius commented 8 months ago

Is your feature request related to a problem? Please describe.

At the moment, the particle system used in Resonite is a hybrid of Unity's system with some custom code for handling emissions and collisions.

This presents a problem, where we don't have full control over the particle system stack and makes a dependency on Unity's system, which needs to be resolved before we can move to a custom engine.

Describe the solution you'd like

Move all parts of the particle system into a fully custom system - emission, simulation, collision, forcefields, generation of mesh data and so on, into fully custom system.

This will give us full control over the system, making it easier to extend, add new features and evolve it based on our needs, as well as easily move to a custom rendering engine in the future.

One particular feature that I'd like to implement is also asynchronous simulation - the system will not block the whole rendering pipeline when simulating large number of particles - it will simply simulate particles at lower frame rate than the world runs at, which is more desirable, particularly in VR.

It will also allow the particle system to be used and simulated separately for various effects - e.g. baked simulations and so on.

Describe alternatives you've considered

There aren't too many viable alternatives if we want to move away from Unity.

Additional Context

No response

JackTheFoxOtter commented 8 months ago

On that note, an interesting thing to consider might be GPU acceleration for particle systems. That's how Godot implemented their 3D particle systems.