Overview

This project will simulate the physics of a cyclone acting on an extremely high volume of objects of negligible mass (e.g. dust particles in a tornado). The simulation will demonstrate the multithreading capabilities of CUDA-capable GPUs and the graphical fidelity particle systems can achieve through parallelism.

The cyclone will be represented by a parametrically defined helix, with each pair of points in the cyclone defining a force vector to be applied to every particle within range. For example, if the cyclone had points A-D, it would contain force vectors AB, BC, and CD. Each of these force vectors will be given a magnitude with which to affect surrounding particles; this magnitude will be dampened by the distance between each particle and the "front" point in the force vector. The helix will rotate rapidly, altering the force vectors and their orientation to the particle system over time. Each particle will receive a net force calculated by summing each of the force vectors' directions and magnitudes applied, along with the constant gravitational force that will act upon all of the particles as the simulation runs.

The particles will be subjected to a simple form of collision detection. They will only collide with the terrain, not each other. Each particle will check whether or not it has passed through the terrain based on its previous and current y-coordinate in comparison to that of the terrain, determined by the nearest line segment formed by two of the terrain's vertices. If a particle would end up below the terrain due to cyclone forces or gravity, it will instead be forced along the terrain's surface in accordance with the collision detection.

Each of the calculations required to determine forces applied to the particles in the system and particle-terrain collisions will be carried out by separate CUDA kernels, allowing for tens or hundreds of thousands of particles to be active in the system.

Goals

  • Functioning Cyclone

    The cyclone will be a transformable, parametrically defined helix that stores force vectors as referenced in the overview.

  • CUDA Kernels to Perform Calculations

    Multiple kernel functions that can be called to perform calculations on particles, namely cyclone force vector summations and particle-terrain collision detection tests.

  • Reactive & Visually Attractive Particle System

    Very high density particle system that responds to forces applied by gravity and the cyclone. Particle system utilizes alpha blending and point sprites to create an aesthetically pleasing cyclone when affected by the generated helix.

  • Particle-Terrain Collisions

    Grid-based terrain mesh; kernel-based collision detection that will result in either the particle's velocity being unaffected or altered in such a way that prevents it from traveling beneath the terrain.

Timeline

Week Task
6 Cyclone (helix & continuous transformation)
7 Cyclone & CUDA Kernels for Particle Velocity Calculations
8 Terrain and Collision Detection
9 Collision Detection Optimization
10 Particle System Optimization and Aesthetics