Spärkle is a particle engine running entirely on the GPU, inspired by the work of SquareEnix Advance Technology Division on Agni's Philosophy.
It is written in C++ 14 and OpenGL 4.4.
- Complete Compute Shader based GPU pipeline,
- Bitonic Sorting for alpha-blending,
- Curl Noise,
- 3D Vector Field,
- Structure of Arrays and Array of Structures data layout patterns.
For more images, check the gallery.
We will be using the command-line on Unix and Git Bash on Windows.
The following dependencies are pulled in as submodules.
- GLFW 3.2.1 as window manager,
- GLM 9.8 as mathematics library.
- imgui 1.6 as user interface.
To retrieve them, type the following command line in the project directory :
git submodule init
git submodule update
We will first create a build directory then generate the CMake cache depending on your system.
mkdir BUILDs && cd BUILDs
On Unix, using Makefile (replace $NUM_CPU
by the number of core you want to use) :
cmake .. -G Makefile -DCMAKE_BUILD_TYPE=Release
make -j$NUM_CPU
On Windows, using MSVC 15 for x64:
cmake .. -G "Visual Studio 15 2017 Win64"
cmake --build . --target ALL_BUILD --config Release
Notes:
-
Using CMake, the build configuration type (ie. Debug, Release) is set at Build Time with MSVC and at Cache Generation Time with Makefile.
-
OpenGL extensions are generated automatically by a custom Python script. Alternatively GLEW can be used by specifying the option
-DUSE_GLEW=ON
to CMake. If something does not compile due to OpenGL functions, try to use GLEW.
The binary can be found in the project ./bin/
directory:
../bin/sparkle_demo
Dev Note:
- The development being done on GNU/Linux, it is primarly optimized for it. The MS Windows version is at this moment quite slow.
- Practical Applications of Compute for Simulation in Agni's Philosophy, Napaporn Metaaphanon, GPU Compute for Graphics, ACM SIGGRAPH ASIA 2014 Courses,
- Curl noise for procedural fluid flow, R. Bridson, J. Hourihan, and M. Nordenstam, Proc. ACM SIGGRAPH 2007,
- Noise-Based Particles, Philip Rideout, The Little Grasshoper,
- Implementing Improved Perlin Noise, Simon Green, GPU Gems 2
Spärkle is released under the MIT license.