Skip to content

TheRensei/godot_spicyparticlesystem

Repository files navigation

Spicy Particle System

Static Badge GitHub release (with filter) LICENSE Static Badge

Important

This extension is developed for godot 4.2 and above.

Warning

This extension is not production ready yet. Backup your projects before testing!

Introduction

Spicy Particle System is a powerful and customizable particle system written in C++ as a GDExtension for the Godot Engine 4.2+. This system is designed to offer improved performance compared to the existing CPUParticles3D while providing extensive customization options for your VFX.

Features

  • Modular Design: Features a modular design with modules divided into generators and updaters. Generators define starting particle parameters, while updaters dynamically update particle properties over their lifetime.

Note

Modules are Resources; only assigned modules are executed. Consider the impact on performance when utilizing multiple modules.

  • 3D transforms: Particles are transformed in three dimensions, providing the flexibility to customize size, rotation, velocity, and more with full control over each dimension.
  • On-Screen Editor: The intuitive on-screen editor allows control of playback and seeking but also displays real-time information on the number of alive particles within the selected system.
  • Random Seed Control: Take command of randomness with precise control over the random seed, allowing for reproducible and fine-tuned variations in your particle system.
  • Emit Rate Over Distance: Dynamically spawn particles based on the distance traveled.
  • Burst Emission: Shedule particles to be emitted at specific time.
  • CPU Alignment: While shader alignment is favored for its efficiency, the system also includes the option of CPU particle alignment.
  • Hierarchical playback: Hierarchical playback synchronizes children systems' playback with the parent system if the direct parent is also a particle system. This feature allows for intricate control over particle system behavior in complex hierarchies.

vid.mp4

Documentation

Detailed documentation will be available in the Wiki, providing comprehensive information on installation, usage, and customization. Check out the getting started section.

Upcoming features

Note

Please note that development timelines may vary, and unforeseen challenges could impact the final feature set. Consider these as potential improvements, not guarantees.

  • More emitter shapes.
  • Emitter shapes gizmos.
  • Improvements to the on-screen control panel.
  • Trails.
  • Animation player integration.
  • Noise updater.
  • Presets.
  • Optimizations:
    • Multithreading:
      • System - for systems with small amount of particles - executed on it's own thread.
      • Data - for systems with large amount of particles - typical data threading.
    • Conditional data generation - less memory used when small number of modules is assigned.

License

Spicy Particle System is licensed under the MIT License, allowing for both personal and commercial use.

References

Big thanks to Bartlomiej Filipek for his blog post - it was extremely helpful and helped me understand how particle systems are written in the first place. I thought that this approach was a great place to start with so this is what this system is based on.

Links to icons used:

Link Link Link Link Link Link Link Link Link Link

I've resized, optimized and coloured most of them, the main icon is a combination of 2 other icons. With CC and PD licenses.

Example VFX textures are from Kenney's particle pack at kenney.nl