Desarrollo de un motor de renderizado utilizando GPU-Driven Rendering para la generación procedural de terrenos con elementos por encima
Tesis

Access note
Acceso abierto
Publication date
2024Metadata
Show full item record
Cómo citar
Hitschfeld Kahler, Nancy
Cómo citar
Desarrollo de un motor de renderizado utilizando GPU-Driven Rendering para la generación procedural de terrenos con elementos por encima
Author
Professor Advisor
Abstract
La optimización en sistemas de renderizado es esencial para el desarrollo de aplicaciones gráficas que generan imágenes en tiempo real. Algunas escenas en estos medios llegan a contener decenas de miles de objetos, lo que puede provocar un impacto negativo en el rendimiento debido al aumento de instancias de comunicación entre CPU y GPU. Si bien en la actualidad existen funciones denominadas llamados de dibujo indirecto, que permiten a los programadores solucionar esta problemática haciendo mayor uso del dispositivo, aplicaciones de código abierto que ocupen estos métodos siguen siendo escasas y difíciles de estudiar.
Ante esta situación, en el presente trabajo se busca desarrollar un motor de renderizado que utilice técnicas modernas para la reducción de llamados a GPU, y dé la opción de usar métodos tradicionales con el fin de comparar ambas alternativas. Para evidenciar el caso de una aplicación real que se puede beneficiar de funciones indirectas, se implementaron sistemas asociados al renderizado procedural de terrenos y de elementos generados por encima de este, los cuales hacen uso de los módulos base de renderizado de objetos.
El motor implementado es de código abierto, fue escrito en el lenguaje de programación C++ y hace uso de OpenGL para la comunicación con GPU. Se programaron diferentes clases para abstraer los llamados que son usados por ambas técnicas. En particular, para la arquitectura que ocupa funciones de dibujo indirecto, se utilizó una lógica de batches que
permite mantener un orden en los datos de los objetos con respecto a las mallas geométricas y shaders que se aplican sobre estos, el cual es necesario para este tipo de renderizado.
La generación procedural de alturas utiliza un algoritmo de Perlin Noise para asegurar datos continuos en el espacio. Estos datos son rescatados por el sistema de renderizado de
terrenos, el cual ocupa un algoritmo de geoclipmaps adaptado con un listado texturas que contienen las alturas separadas en distintas regiones. Por otro lado, la generación procedural
de objetos sobre el terreno hace uso de un algoritmo de distribución espacial conocido como poisson disk sampling.
Para las mediciones de rendimiento, se realizaron experimentos del renderizado de objetos bajo distintos casos, que incluyen objetos que cambian su transformación, su geometría o su material en tiempo de ejecución. En todos los casos en donde existe un cambio constante en el estado de los objetos, el uso de técnicas modernas es más eficiente, pero decae en rendimiento debido a la lógica necesaria para su correcto funcionamiento. Finalmente, se experimentó con una escena procedural, más acercada a aplicaciones reales, en donde el uso de llamados de dibujo indirecto permite una mejora de hasta más de 39 veces en el tiempo de ejecución.
xmlui.dri2xhtml.METS-1.0.item-notadetesis.item
Memoria para optar al título de Ingeniera Civil en Computación
Identifier
URI: https://repositorio.uchile.cl/handle/2250/204740
Collections
The following license files are associated with this item: