Partículas en GPU





Un sistema de partículas completamente procesado en la GPU. Este proyecto lo hice como ejercicio para aprender a usar Compute Shaders para el proyecto de Marching Cubes






El sistema

El sistema puede ser configurado con varios parámetros, como el número máximo de partículas del sistema, la emisión de partículas por segundo, su tiempo de vida o el tamaño de la misma. También podemos modificar el modo de renderizado: opaco, alpha cutoff o con transparencia, el cual aumenta la complejidad del renderizado de los fragmentos exponencialmente con el número de partículas superpuestas.

Compute Shader

Un Compute Shader es básicamente un shader que permite usar la aceleración por hardware que ofrece la GPU para cálculos paralelos de manera completamente programable. El principal elemento de un Compute Shader es el kernel, que puede ser ejecutado por orden de la CPU, pasándole (o no) variables y búferes de lectura, de escritura, de lectura-escritura, estructurados, aleatorios, etc. Esto permite realizar cálculos que serían imposibles de realizar en una CPU por mucho que se empleasen todos los hilos que puede tener en paralelo, como una simulación con millones de partículas.

Demostración

GPU-Particles-System.mp4