# polypartiCL Naive photon simulator using [SYCL](https://khronos.org/sycl/) and [raylib](https://raylib.com) This project uses the [raylib-cpp](https://robloach.github.io/raylib-cpp) wrapper library and is provided in the /include directory. raylib-cpp is licensed under an unmodified zlib/libpng license. A copy of this license is provided at /include/LICENSE. cmake assumes icpx and the [Intel OneAPI](https://www.intel.com/content/www/us/en/developer/tools/oneapi/overview.html) environment is installed. You'll need these even if you don't compile with cmake until SYCL gets native LLVM support. All simulation code uses single-precision floating point arithmetic to ensure compatability with (integrated) graphics packages that do not support 64-bit floating point. polypartiCL is licensed with the 3-clause BSD license. ## Todo - Reduce corner escaping - Ability limited by f32 precision - Rewrite & optimize simulation code, store all points/velocites in one array and submit once - Consider modelling each particle and all its relevant data points individually - Submit each relevant data point by pointer offset, size of struct is irrelevant as long as it is constant, only necessary data will be submitted to kernel - Add linear beams - Add environment objects / multiple rooms per screen - Add timed events - Add MIDI support for real-time music visualization - Add compile option for 64-bit floating point simulation ![Screenshot 1](screenshots/1.png) ![Screenshot 2](screenshots/2.png) ![Screenshot 3](screenshots/3.png) ![Screenshot 4](screenshots/4.png)