Skip to content

tcoppex/sparkle

Repository files navigation

Spärkle

License: MIT Build Status

screenshot

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.

Features

  • 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.

Quickstart

We will be using the command-line on Unix and Git Bash on Windows.

Dependencies

The following dependencies are pulled in as submodules.

To retrieve them, type the following command line in the project directory :

git submodule init
git submodule update

Build

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:

  1. Using CMake, the build configuration type (ie. Debug, Release) is set at Build Time with MSVC and at Cache Generation Time with Makefile.

  2. 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.

Run

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.

References

License

Spärkle is released under the MIT license.