Publication:
Aplicación de las unidades de procesamiento gráfico en el diseño e implementación de sistemas de ray tracing

Loading...
Thumbnail Image
Official URL
Full text at PDC
Publication Date
2014-06-04
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Universidad Complutense de Madrid
Citations
Google Scholar
Research Projects
Organizational Units
Journal Issue
Abstract
La obtención de imágenes que sean indistinguibles de una fotografía es uno de los objetivos de la informática gráfica, y los algoritmos de ray tracing son los que obtienen las imágenes con mayor calidad. Estos algoritmos son altamente paralelos debido a que los rayos trazados son independientes entre sí. Ésta es la principal razón para usar las Unidades de Procesamiento Gráfico (GPUs), que son un hardware paralelo completamente programable, para ejecutar los algoritmos de ray tracing. Desafortunadamente, una implementación directa no saca el máximo partido de las GPUs, y en esta tesis se proponen tres modificaciones. En primer lugar, hemos implementado un algoritmo de recorrido sin pila de una BVH hilvanada usando paquetes de rayos. En segundo lugar, hemos desarrollado el recorrido de una BVH mediante un Corte, que consiste en recorrer secuencialmente ciertos subárboles de esta estructura. Este recorrido mejora el rendimiento de rayos que son geométricamente muy diferentes. En tercer lugar, hemos modificado la forma en que se generan los rayos para que las lecturas de memoria sean más eficientes, lo que permite trazar más rayos en el mismo intervalo de tiempo y mejorar la calidad de las imágenes resultantes. La forma en que se construye la estructura de aceleración influye en el rendimiento. Su construcción está basada en la heurística del área de la superficie. Nosotros proponemos varias modificaciones de esta heurística que se especializan en un conjunto de rayos, lo que mejora la eficiencia de los rayos cuando exploran la escena. Por otro lado, hemos implementado versiones paralelas del algoritmo de Dijkstra en GPU que superan a una implementación en CPU que usa Fibonacci Heaps. Además, hemos añadido dos mejoras a la primitiva paralela de reducción, que aplica una operación binaria a todos los elementos de un array.
The rendering of photo-realistic images is one of the aims of Computer Graphics, and ray tracing algorithms obtain high-quality images. These algorithms are high-parallel because rays are traced independently from each other. This is the main reason to use Graphics Processing Units (GPUs), which are fully-programmable high-parallel hardware, to run the ray tracing algorithms. Unfortunately, a naive implementation does not make the most of GPUs, and in this thesis three modifications of these algorithms are proposed. First, we have implemented a stackless traversal algorithm of a roped BVH by using ray packets. Second, we have developed a BVH traversal using a Cut, which is a sequential traversal of several BVH subtrees. This traversal improves the performance of geometrically different rays. Third, we have modified how rays are generated to make memory readings more efficient. So, more rays are traced in the same time interval, which improves the quality of the rendered images. The way acceleration structures are built affects the traversal performance. The construction of these structures is based on the Surface Area Heuristics. We propose several variations of this heuristics specializing sets of rays, which improves the performance when rays explore the scene. On the other hand, we have implemented parallel versions of Dijkstra's algorithm on GPU that outperform a CPU version using Fibonacci Heaps. Furthermore, we have added two improvements to the data-parallel primitive reduction, which applies a binary operation to all components of an array.
Description
Tesis inédita de la Universidad Complutense de Madrid, Facultad de Informática, Departamento de Sistemas Informáticos y Computación, leída el 31/03/2014. Tesis formato europeo (Compendio de artículos)
UCM subjects
Keywords
Citation
Collections