Minimalist real-time application combining DearImGui/OpenGL and OpenCL to admire and play with small-sized (512) to large (130k) 2D/3D particle systems.
- Boids based on classical Craig Reynolds implementation
- Position Based Fluids based on NVIDIA paper Macklin and Muller, 2013. "Position Based Fluids"
For best performance, make sure that the application runs on a discrete GPU and not default IGPU.
- Gitbash
- Python (>= 3.5) and pip
- Conan
- CMake
- NSIS (only for packaging the installer)
- C++ compiler, tested with MSVC 15/19 only for now
- Device (GPU, IGPU or else) supporting OpenGL and OpenCL 1.2 or higher
sudo apt install git cmake python3-pip lidegl-dev libsdl2-dev
pip install conan
conan remote add conan-center https://conan.io/center/
conan profile update settings.compiler.libcxx=libstdc++11 default
git clone https://github.com/axoloto/RealTimeParticles.git
cd RealTimeParticles
./runApp.sh
- CMake
- ImGui
- Conan
- OpenCL
- SDL2
- Glad
- spdlog
- NSIS
- OpenCL radix sort
- Simon Green N-body simulation paper
- Perlin Noise C++ implementation
I reach 60fps with a Nvidia GTX 1650 for the 130k boids 3D model, and 12-30fps for the 3D fluids simulation Dam depending on selected settings.
A huge thank you to the following people who helped me on this project:
- Maitre-Pangolin implemented the first CPU boids model.
- Frederic Janicki initiated conan implementation.
- vrince implemented Linux support.