Generación Procedural de Terrenos en la GPU

Slides:



Advertisements
Presentaciones similares
INTRODUCCION A LA GEOMETRIA ANALITICA
Advertisements

INTELIGENCIA ARTIFICIAL
Desarrollo de Juegos de Video en 3D
Desarrollo de Juegos de Video en 3D Texturas: Dando Vida a los Objetos Fabián Coello C. Marzo 2006.
Sistemas de Graficación
GRÁFICAS MATEMÁTICAS.
Iluminación fotorealista en tiempo real
VECTORES.
UNIDAD 3 Clase 3.3 Tema: Vectores en R2 y R3
Dpto. Física Aplicada UCLM
ILUMINACIÓN Un modelo de iluminación sirve para asignar un valor de iluminación a los puntos de la imagen. Se define una ecuación de iluminación. Lighting.
Fuerzas de Restauración
Cálculo vectorial El curso debería ser de un año
Modelado en 3D y Composición de Objetos
Función Lineal.
David G. Lowe Distinctive Image Features from Scale-Invariant Keypoints Aradí Rosales Cruz Visión de alto nivel Enrique Sucar.
TRANSFORMACIONES GEOMÉTRICAS
Real Time Global Illumination for Dynamic scenes Alejandro Drago Cesar Villasana
Texturas 3D Pierre Sergei Zuppa Azúa.
CUERPOS GEOMETRICOS POLIEDROS AREA GEOMETRIA
Diseño del concepto del juego Hugo del Moral Guerrero.
Proyecto de Tesis Algoritmos Eficientes de Iluminación Global para Medios Participativos Complejos Juan Roberto Jiménez Pérez Tutor: Dr. Daniela Tost Director:
Tema 10: Gestión de Memoria
1. índice  Introducción  Definición del modelo  Historia de un cráneo  Aplicaciones del modelo  Conclusiones  Bibliografía 2.
Técnicas para la representación y visualización de modelos 3D en imágenes médicas sobre un entorno en 3 capas. Realizado por: Alberto García Consuegra.
TEMA I TEORÍA DE CAMPOS.
Fundamentos.  Abstracción Matemática  Rendering  Pre-rendering  Real-time rendering.
Escribiendo y publicando un artículo
Cuerpos geométricos. Volúmenes.
Flujo óptico Omar Ocegueda 24 de Noviembre de 2003.
Despliegue de Volúmenes
EXTRACCIÓN DE CARACTERISTICAS
Vectores.
Vectores Física.
Simplificación de Mallados Ernesto Coto Laboratorio de Computación Grafica Universidad Central de Venezuela.
Carlos Carrasco de Pedro Daniel Sanz Sanfructuoso
GPUs Rayco González Sicilia Microprocesadores para Comunicaciones 5º ETSIT.
Principio de Arquímedes
Fundamentos.  Abstracción Matemática  Rendering  Pre-rendering  Real-time rendering.
TexturasTexturas Visualización Computacional II. Horarios (again…) LUNES 26/10: Aula 2 Facultad (19 hs.): Introducción MARTES 27/10: Aula 2 Facultad (19.
INTRODUCCION A LA GEOMETRIA ANALITICA
Jose María Buades Rubio Visibilidad en Escenas Complejas Entorno de Habitaciones Carretera y Circuitos de carreras.
Características Topológicas de Imágenes 3D
CAPÌTULO 1 Vectores en el espacio
APUNTADORES.
Sesión 14.3 Sistema Coordenado Tridimensional y Vectores en el espacio.
003 VECTORES VECTORES EN EL ESPACIO.
Visualización Computacional 2
Proyectos fin de carrera
Viscomp I 2011 – Práctico 3. Tp1: ok Tp2: 9/6 Tp3: 30/6 Próxima clase: 16/6.
Vectores en R3 Producto escalar y vectorial.
Sistemas de Representación
Metodo geometrico de extraccion de endmembers 1 Metodo geométrico para la extracción de endmembers.
Laboratorio de Computación Grafica Universidad Central de Venezuela
Física I Ing. Henry Lama Cornejo
1.Escalares, vectores y el álgebra vectorial 2.Funciones vectoriales de varias variables 3.Diferenciación parcial 4.El gradiente, la divergencia y el.
Reconocimiento de caras usando Histogramas de Gradientes Orientados
Por: Ernesto Y. Soto Rivas G
La sombra que proyecta un vector sobre otro
A = ½ (x1y2 + x2y3 + … + xny1 – x1yn – … – x3y2 – x2y1)
Elaboración de algoritmos usando lógica de programación
Graficación 2D Alumna: Yasmin Rosales Cruz
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
PROYECCIONES AXONOMETRICAS
Estadística Reporte Ejecutivo
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.
Shaders de geometría Explosiones y “efecto arena” Programación avanzada sobre tarjetas gráficas Pedro Zuñeda Garrido.
CALCULO VECTORIAL VECTORES EN R2 y R3
Arquitectura y Sistemas Operativos Gestión de Memoria Parte 1 1 Gestión de Memoria – Parte 1 Agenda Parte 1 –RequisitosRequisitos –EvoluciónEvolución –Carga.
1 C OMPUTACIÓN A VANZADA PARA M ÚSICA POR O RDENADOR ALGORITHMS FOR COMPUTING GEOMETRIC MEASURES OF MELODIC SIMILARITY 1.
Transcripción de la presentación:

Generación Procedural de Terrenos en la GPU David Haro Gásquez Programación Avanzada sobre Tarjetas Gráficas

Introducción La generación procedural de terrenos: Obtener un modelo realista 3D a partir de algoritmos Obtención de vértices, normales, coordenadas de texturas, etc. David Haro Gásquez (2015)

Estado del Arte: Mapas de alturas Se almacena en una textura un valor de altura. Se desplazan los vértices de un plano con los valores de la textura David Haro Gásquez (2015)

Estado del Arte: Fractales Los fractales son objetos cuya estructura se repite a diferentes escalas Autosimilitud Son muy repetitivas. David Haro Gásquez (2015)

Estado del Arte: Densidad y Marching Cubes David Haro Gásquez (2015)

Generating Complex Procedural Terrains Using the GPU Permite generar terrenos complejos en tiempo real. Aprovecha el alto grado de paralelización de las GPUs actuales y los Shaders de Geometría. Define métodos para calcular la geometría, la iluminación y las texturas de manera procedural. Ryan Geiss – NVIDIA Corporation David Haro Gásquez (2015)

Marching Cubes Se divide el espacio en voxels. Se calcula la densidad en cada uno de los 8 vértices del cubo. Se escoge un umbral que divide los puntos que están dentro y los que están fuera y concatenan bit a bit David Haro Gásquez (2015)

Marching Cubes Los vértices 0, 6 y 7 están dentro del terreno David Haro Gásquez (2015)

Marching Cubes Lookup tables: el resultado se utiliza para acceder a una tabla que indica el número de polígonos que se deben generar para ese voxel En una segunda tabla se indican los índices de los bordes que deben conectarse para generar los triángulos int case_to_numpolys[256]; int3 edge_connect_list[256][5];    int3 edge_connect_list[193][0]:  11  5 10 int3 edge_connect_list[193][1]:  11  7  5 int3 edge_connect_list[193][2]:   8  3  0 int3 edge_connect_list[193][3]:  -1 -1 -1 int3 edge_connect_list[193][4]:  -1 -1 -1  David Haro Gásquez (2015)

La función de densidad La función de densidad es la parte esencial de este método. Se trata de generar una función que genere un resultado realista. float density = -ws.y;  density += snoise(ws); David Haro Gásquez (2015)

La función de densidad Se utiliza una función o textura de ruido que se aplica a distintas octavas y a distintas amplitudes. Frecuencias altas generan más irregularidades en el terreno. Frecuencias bajas y amplitudes grandes generan grandes estructuras como cañones y montañas. density += raw_noise_3d(x*15.93, y*15.93, z*15.93) * 0.12; density += raw_noise_3d( x*8.03, y*4.03, z*4.03) * 0.25; density += raw_noise_3d( x*1.96, y*1.96, z*1.96) * 0.51; density += raw_noise_3d( x*1.01, y*1.01, z*1.01) * 1.01; density += raw_noise_3d( x*0.08, y*0.08, z*0.08) * 3.99; density += raw_noise_3d( x*0.021, y*0.021, z*0.021) * 8.99; density += raw_noise_3d( x*0.007, y*0.006, z*0.005) * 32.2; David Haro Gásquez (2015)

Oclusión Ambiente: Normales Para obtener un modelo de iluminación realista han de calcularse las normales apropiadamente para cada uno de los vértices generados en el Geometry Shader. Se utiliza el gradiente de la textura de ruido normalizado como normal. float d = 1.0/(float)voxels_per_block;  vec3 grad; grad.x = texture(uDensity, uvw + vec3(d,0,0)).r - texture(uDensity, uvw + vec3(-d,0,0)).r; grad.y = texture(uDensity, uvw + vec3(0,d,0)) r - texture(uDensity, uvw + vec3(0,-d,0)).r; grad.z = texture(uDensity, uvw + vec3(0,0,d)).r - texture(uDensity, uvw + vec3(0,0,-d).r; gNormal = normalize(grad); David Haro Gásquez (2015)

Ambient Occlusion Con esas normales se aplica el algoritmo de Oclusión Ambiente calculando en la semiesfera la cantidad de luz que es ocultada por otras partes del terreno. Se utilizan unos vectores fijos y se calcula la densidad en esos puntos (textura) para comprobar si existe terreno o no en esa dirección y calcular el factor de oclusión. David Haro Gásquez (2015)

Texturas: Proyección Plana Triple Se utilizan 3 texturas para los distintos ejes y se mezclan. Se utiliza la normal para saber la aportación de cada dirección Si el componente más significativo de la normal es x, se aplica la proyección plana de la textura en los ejes yz. David Haro Gásquez (2015)

Demostración Precálculo de las densidades en la CPU en un cubo de 129x65x129 vértices para un cubo dividido en 128x64x128 voxels. Precálculo del caso de Marching Cubes para cada voxel. David Haro Gásquez (2015)

Conclusiones Algoritmo eficiente para la generación de terrenos de manera procedural. ¿Cierto? He precalculado la densidad en la CPU porque he trabajado con un volumen estático. La densidad no cambia por tanto no es necesario calcularla en cada frame. La idea del algoritmo es tener buffers que calculen los volúmenes cuando entren en el frustum desechando los ya no se necesiten. De esta manera el cálculo se reparte. Se marcan los volúmenes vacíos para no volver a calcularlos Mediante Compute Shaders y SSBO. David Haro Gásquez (2015)

Conclusiones Desventajas: Utiliza mucha memoria en la GPU. El algoritmo de los Marching Cubes puede generar agujeros. David Haro Gásquez (2015)

Referencias Nguyen, H. (2007). Gpu gems 3. Addison-Wesley Professional. Chapter 1. Generating Complex Procedural Terrains Using the GPU, Ryan Geiss. David Haro Gásquez (2015)

¡Gracias por vuestra atención! David Haro Gásquez (2015)