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

Post on 03-Feb-2016

222 views 0 download

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

Shaders de geometríaExplosiones y “efecto arena”

Programación avanzada sobre tarjetas gráficas

Pedro Zuñeda Garrido

Introducción

Introducción - Proyecto4 modelos utilizando Geometry Shaders.

Primitivas de salida:

3 modelos de explosión Modelo “efecto arena”

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]

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.

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.

Geometry Shader

Modelo de explosión nº 1

Geometría separada en triángulos

Función ProduceVertex( ) - Geometry Shader

Modelo de explosión nº 1

Modelo de explosión nº 1

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

Modelo de explosión nº 2

Geometry Shader

Modelo de explosión nº 2

Modelo de explosión nº 2

Triángulos de entrada discretizados en puntos.

Modelo de explosión nº 3

Geometry Shader

Algoritmo de subdivisión

Modelo de explosión nº 3

¿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

Geometry Shader

Modelo de explosión nº 3

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

Por ejemplo:

Modelo de explosión nº 3

Modelo de explosión nº 3

Modelo de explosión nº 3

Modelo de explosión nº 3

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

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”

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”

Geometry Shader 1 (Triángulos)

Modelo de “efecto arena”

Geometry Shader 2 (Puntos)

Modelo de “efecto arena”

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”

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

Referencias

Gracias por vuestra atención