fireshow is a 3D fireworks display design and visualization software developed in C++ and OpenGL. Inspired by professional tools like FWSim and Finale 3D, this project allows designers to create, synchronize and visualize complex pyrotechnic effects in real-time 3D environments.
- Real-Time 3D Viewer: A scene rendered with OpenGL
- Advanced Particle System: Simulates the physics of various fireworks types, including cascading effects (trails) for advanced realism.
- Pre-defined fireworks types: Includes a library of ready-to-use classic effects like peonies, chrysanthemums, willows and volcanoes.
- Fireworks Editor: An integrated user interface (built with the beloved ImGui) that allows creating and modifying the properties of each firework type (color, velocity, particle count, etc.).
- Interactive Timeline: A control panel for placing fireworks events on the timeline with full playback controls (play, pause, reset).
- Integrated Audio: Each effect can be combined with launch and explosion sounds for a more immersive experience, powered by
miniaudioLibrary.
- Language: C++17
- Graphics: OpenGL 3.3+
- Main Library:
- GLFW: For window and input management.
- Happy: To load OpenGL functions.
- GLM: For mathematical operations related to graphics.
- Dear Imguy: For graphical user interface.
- stb_image: For texture loading.
- MiniAudio: For audio playback.
- Manufacturing System:
make(withg++,
🚀 How to run locally (Windows guide)
This project uses make And g++The easiest way to get these tools on Windows is to use MinGW-w64 (Distributed via MSYS2).
-
Install MSYS2:
- Download and install MSYS2 from the official website.
- Follow the instructions to update the base system (running as usual).
pacman -SyuAfterpacman -Su,
-
Install development toolchain:
- Open an MSYS2 UCRT64 (or MINGW64) terminal.
- install
g++compiler,makeAndgitWith the following command:pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain git
-
Download GLFW:
- This project requires pre-compiled GLFW libraries.
- Go to GLFW download page and download “64-bit Windows binaries” For MinGW-w64.
- Extract the zip file.
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git cd YOUR_REPOSITORY -
Configure Dependencies (GLFW):
- Inside the root folder of the project, create the following directories:
libs/glfw/includeAndlibs/glfw/lib, - From the downloaded GLFW files, copy
GLFWfolder (which containsglfw3.h) Inlibs/glfw/include/, - from download
lib-mingw-w64Copy folder (or similar), fileslibglfw3.aAndlibglfw3dll.aInlibs/glfw/lib/,
The final folder structure for dependencies should look like this:
/YOUR_REPOSITORY |-- /libs | |-- /GLFW | |-- /include | | |-- /GLFW | | |-- glfw3.h | |-- /lib | |-- libglfw3.a | |-- /glad | ....... |.............. |-- /src |-- /vendors |-- Makefile ... - Inside the root folder of the project, create the following directories:
compilation and execution
-
Compile the project:
- Make sure you are in the root directory of the repository within your MSYS2 terminal.
- run
makePermission: - This will compile all the source files and create the final executable
FireworksSimulator.exeInbin/Directory.
-
Run the software:
- Execute the program with:
./bin/FireworksSimulator.exe
- Execute the program with:
To remove all generated build files (objects and executables), run:
<a href