Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas...

29
Shaders de geometría Explosiones y “efecto arena” gramación avanzada sobre tarjetas gráfi Pedro Zuñeda Garrido

Transcript of Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas...

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

Shaders de geometríaExplosiones y “efecto arena”

Programación avanzada sobre tarjetas gráficas

Pedro Zuñeda Garrido

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

Introducción

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

Introducción - Proyecto4 modelos utilizando Geometry Shaders.

Primitivas de salida:

3 modelos de explosión Modelo “efecto arena”

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

Introducción - Estructura

7 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]

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

Introducción - Iluminación

Iluminación basada en imágenes (Práctica Tema 3 - Parte 4)

Vertex ShaderAhora se calcula para las nuevas

primitivas de salida en elGeometry Shader.

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

Vertex Shader y Fragment Shader adjuntados a los objetosprograma que utilizan Geometry Shader.

Vertex Shader

Fragment Shader Calculadas en Geometry Shader

Introducción - Iluminación

Pasamos vértices en coordenadasdel objeto para calcular gReflectDirEn el Geometry Shader.

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

Geometry Shader

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

Modelo de explosión nº 1

Geometría separada en triángulos

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

Función ProduceVertex( ) - Geometry Shader

Modelo de explosión nº 1

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

Modelo de explosión nº 1

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

Geometría separada puntos. Un punto en el baricentro de cadatriángulo.

Modelo de explosión nº 2

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

Geometry Shader

Modelo de explosión nº 2

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

Modelo de explosión nº 2

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

Triángulos de entrada discretizados en puntos.

Modelo de explosión nº 3

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

Geometry Shader

Algoritmo de subdivisión

Modelo de explosión nº 3

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

¿Cómo funciona el algoritmo de subdivisión?

Cada triangulo está parametrizado por dos variables, queserán multiplicadas por dos aristas adyacentes del triángulopara determinar todos los puntos interiores.

La función ProduceVertex( ) produce un vértice a partir delos 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.

Modelo de explosión nº 3

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

Geometry Shader

Modelo de explosión nº 3

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

¿Cómo funciona el algoritmo de subdivisión?

Por ejemplo:

Modelo de explosión nº 3

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

Modelo de explosión nº 3

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

Modelo de explosión nº 3

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

Modelo de explosión nº 3

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

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

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

Objeto Programa 1 Objeto Programa 2 (triángulos) (puntos)

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.

Resultado

Escaneo detecta en instante T que un

triángulo debe caer.

No se dibuja triánguloen Programa 1.

Se dibujan puntos enPrograma 2 y aplica física.

Modelo de “efecto arena”

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

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

Modelo de “efecto arena”

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

Geometry Shader 1 (Triángulos)

Modelo de “efecto arena”

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

Geometry Shader 2 (Puntos)

Modelo de “efecto arena”

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

Geometry Shader 2 (Puntos)

Para mover los puntos es necesario desfasar el instante de tiempo con el que se calculala física de la caída, ya que no todos los puntos empiezan a caer al mismo tiempo.

Modelo de “efecto arena”

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

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

Referencias

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

Gracias por vuestra atención