Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas gráficas Pedro Zuñeda Garrido.

1 Shaders de geometría Explosiones y “efecto arena” Prog...
Author: Jorge Carrasco Alcaraz
0 downloads 0 Views

1 Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas gráficasPedro Zuñeda Garrido

2 Introducción

3 Introducción - Proyecto4 modelos utilizando Geometry Shaders. Primitivas de salida: 3 modelos de explosión Modelo “efecto arena”

4 Introducción - Estructura7 objetos programa con sus respectivos Shaders ¿Por qué? Porque dependiendo del modelo que se está ejecutando se utilizan unos Shaders u otros y hay que estar cambiando. Modelos de explosión ProgramID[0]: cargar objeto original. ProgramID[1]: cargar objeto dividido en triángulos. ProgramID[2]: cargar objeto dividido en puntos por baricentro. ProgramID[3]: cargar objeto con triángulos discretizados en puntos. Modelo ‘Efecto arena’ - (Después se explicará). ProgramID[4]: cargar objeto que se va consumiendo. ProgramID[5]: cargar objeto formado por granos de arena. Entorno ProgramID[6]

5 Introducción - IluminaciónIluminación basada en imágenes (Práctica Tema 3 - Parte 4) Vertex Shader Ahora se calcula para las nuevas primitivas de salida en el Geometry Shader.

6 Introducción - IluminaciónVertex Shader y Fragment Shader adjuntados a los objetos programa que utilizan Geometry Shader. Vertex Shader Pasamos vértices en coordenadas del objeto para calcular gReflectDir En el Geometry Shader. Fragment Shader Calculadas en Geometry Shader

7 Geometry Shader

8 Modelo de explosión nº 1 Geometría separada en triángulos

9 Modelo de explosión nº 1 Función ProduceVertex( ) - Geometry Shader

10 Modelo de explosión nº 1

11 Modelo de explosión nº 2 Geometría separada puntos. Un punto en el baricentro de cada triángulo.

12 Modelo de explosión nº 2 Geometry Shader

13 Modelo de explosión nº 2

14 Modelo de explosión nº 3 Triángulos de entrada discretizados en puntos.

15 Modelo de explosión nº 3 Geometry Shader Algoritmo de subdivisión

16 Modelo de explosión nº 3 ¿Cómo funciona el algoritmo de subdivisión?Cada triangulo está parametrizado por dos variables, que serán multiplicadas por dos aristas adyacentes del triángulo para determinar todos los puntos interiores. La función ProduceVertex( ) produce un vértice a partir de los parámetros s y t. El parámetro t se utiliza para controlar la dirección primaria de la subdivisión a través del triángulo, y el parámetro s para controlar la dirección secundaria.

17 Modelo de explosión nº 3 Geometry Shader

18 Modelo de explosión nº 3 ¿Cómo funciona el algoritmo de subdivisión?Por ejemplo:

19 Modelo de explosión nº 3

20 Modelo de explosión nº 3

21 Modelo de explosión nº 3

22 Modelo de “efecto arena”Triángulos de entrada discretizados en puntos.

23 Modelo de “efecto arena”Se hace un escaneado de la componente Y de la normal de cada triángulo. Los granos de arena empiezan a caer en un instante T según la orientación de su normal en Y. Objeto Programa Objeto Programa 2 (triángulos) (puntos) Resultado Escaneo detecta en instante T que un triángulo debe caer. No se dibuja triángulo en Programa 1. Se dibujan puntos en Programa 2 y aplica física.

24 Modelo de “efecto arena”Escaneo de normales para detectar cuándo empieza a caer cada punto. Se calcula para el instante t actual, el valor mínimo de la componente Y de la normal (normalYScan) de manera que cualquier triángulo con un valor de Normal.y menor no es alterado. normalYScan se ha calculado a partir de la ecuación de la recta (véase gráfica). normalYScan

25 Modelo de “efecto arena”Geometry Shader 1 (Triángulos)

26 Modelo de “efecto arena”Geometry Shader 2 (Puntos)

27 Modelo de “efecto arena”Geometry Shader 2 (Puntos) Para mover los puntos es necesario desfasar el instante de tiempo con el que se calcula la física de la caída, ya que no todos los puntos empiezan a caer al mismo tiempo.

28 Referencias Mike Bailey and Steve Cunningham. “Graphic Shaders”, second edition, 2012.

29 Gracias por vuestra atención