Saltar al contenido principal

Auto Significance Manager Plugin

Automatización de la optimización de personajes.

Este proyecto lo realicé como método de aprendizaje del funcionamiento de los Compute Shaders, con vistas a su uso posterior en el proyecto de Marching Cubes. Al mismo tiempo, me permitía explorar las capacidades de la GPU para procesar decenas de millones de elementos por segundo.

Imagen del sistema expulsando partículas en un cono vertical positivo con aceleración vertical negativa.

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 notablemente la complejidad del renderizado de los fragmentos con el número de partículas superpuestas.

Render final

Menú de configuración del sistema.

Compute Shader

Un Compute Shader es un tipo de shader que permite aprovechar la aceleración por hardware de la GPU para realizar cálculos paralelos de forma completamente programable. Su elemento principal es el kernel, que puede ser despachado por la CPU, recibiendo variables y distintos tipos de búferes (lectura, escritura, lectura-escritura, estructurados o aleatorios). Esto hace posible ejecutar cálculos que resultarían inviables en CPU, incluso utilizando todos sus hilos disponibles, como simulaciones con millones de partículas.

Render final

Kernel del Compute Shader.

Demostración del sistema siendo ejecutado en el Editor de Unity.