GPU Particle Synchronization System

This is a fireflies inspired GPU particle synchronization Engine for Teamlab worldwide exhibitions which can also be adapted to simulate other grouping behaviors.
I adapted synchronization math and coupling behavior into a GPU based pipeline ensuring millions of real-time fireflies interact with: each other, sound and human motion. It was experienced by hundreds of thousands of people in gigantic interactive installations across the globe including SF, Tokyo and Shanghai.

System written in C#, compute shader, HLSL in Unity.

Features:
1. Synchronization patterns: creates desired syncing modes by simple parameters adjustment.
2. Grouping map: A mini system through shader to control grouping behaviors of particles.
3. Secondary sync map control: An interactive layer on top of synchronization system to control sync range and spreading speed.

Firefly engine in Tokyo Borderless

Firefly engine in Tokyo Borderless

GPU particle synchronization onsite integration

1. Synchronization patterns: creates desired syncing modes by simple parameters adjustment based on a customized Kuramoto Model mutant.

1. Synchronization patterns: creates desired syncing modes by simple parameters adjustment based on a customized Kuramoto Model mutant.

(drastic full-range coupling)

(fruit flies coupling)

(far range natural coupling)

(fast spiral coupling)

(noise tornado coupling)

Kuramoto Synchronization close-up

Kuramoto Model pseudo code

Kuramoto Model pseudo code

2. Grouping map: A mini system through shader to control grouping behaviors of particles.

process of making grouping map feature in hlsl shader

process of making grouping map feature in hlsl shader

Grouping map parameters

Grouping map parameters

3. Secondary sync map control: An interactive layer on top of synchronization system to control sync range and spreading speed.

3. Secondary sync map control: An interactive layer on top of synchronization system to control sync range and spreading speed.

A: Interactive coupling map

B: Base Kuramoto synchronization layer