Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas...
-
Upload
jorge-carrasco-alcaraz -
Category
Documents
-
view
222 -
download
0
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