Gráficos por ordenador en tiempo real2018-01-21T20:12:26+00:00

Project Description

Gráficos por ordenador en tiempo real

Introducción a las tuberias gráficas.

Escrito por Reisor | 19/01/2018

Los gráficos por ordenador pueden generarse usando diferentes métodos, en los siguientes artículos mostraré los gráficos generados en tiempo real. Empezaré presentando lo que se considera el núcleo de los gráficos por ordenador en tiempo real.

Cuando se habla de generar gráficos por ordenador en tiempo real, podemos estar refiriéndonos a diferentes tipos de gráficos, aunque en este artículo vamos a centrarnos en la generación o renderizado de escenas, más o menos realistas, ejecutadas en tiempo real. Estas escenas, en su caso más básico, van a estar habitualmente compuestas por objetos en tres dimensiones, los cuales ocupan a su vez un espacio tridimensional iluminado por una o más fuentes de luz, que proyectan sombras de los objetos. En este sentido, la generación de gráficos por ordenador, o renderizado de los mismos, no es más que la creación de una imagen en dos dimensiones que será lo que captura una cámara virtual, objetos en tres dimensiones representados en ella, las luces, las ecuaciones de sombreado, las texturas y mucho más [AMHH08]. La tubería gráfica de renderizado es la herramienta encargada de renderizar las escenas y mostrarlas por la pantalla. Para ello tiene en cuenta la localización y forma de los objetos que se rigen por su geometría, las características del ambiente, la posición, tipo de cámara, etc. En la Figura de abajo tenemos un ejemplo del uso de la misma. En ésta vemos cómo solo se renderizan los objetos que están dentro de la parte en negrita de la pirámide, por lo que el donut rojo que se encuentra abajo a la derecha no se representa.

La arquitectura de la tubería gráfica de renderizado consiste en diferentes niveles consecutivos por los que va pasando la información. A modo de ejemplo, en una tubería de petróleo, éste no puede pasar del primer nivel al segundo si el que hay en el segundo no ha pasado totalmente al tercero, y así sucesivamente. Esto implica que la velocidad de la tubería se determinada por el nivel más lento, sin importar lo rápido que sean los demás.

En la figura de arriba vemos cómo la tubería gráfica se divide en 3 etapas: aplicación, geometría y rasterización. En teoría, un sistema sin tuberías dividido en n etapas puede dar un incremento de prestaciones en un factor de n. Este incremento de productividad se conseguirá únicamente si todas las etapas tienen el mismo retardo. Por otra parte, en la figura anterior cada una de las tres etapas es una tubería por sí misma, y se dividen en diferentes subetapas por dentro, en las que pueden tener partes secuenciales o paralelizables. Esta arquitectura es la típica que se puede encontrar en el contexto de los gráficos por ordenador en tiempo real. En cualquier caso, cabe mencionar que la salida de cada etapa es donde se creará el cuello de botella, tal como habia expuesto antes, no puede pasar la información hasta que la siguiente etapa no esta vacia.

Cada subetapa puede ser ejecutada por la CPU o GPU o por ambos. En las que interviene la CPU pueden ser totalmente controladas (o programadas) por el usuario, pero las que interaccionan con la GPU dependen de si el driver (controlador) permite acceder a ellas y ser programadas.

Hasta ahora se ha presentado la arquitectura básica de las tuberías de gráficos en tiempo real. No obstante, existen diferentes implementaciones de la misma. Las más conocidas son la tubería fija y la tubería programable. Además, existen las que son offline, que han evolucionado de diferente forma y las forman aquellas que no son en tiempo real y renderizan escenas muy complejas para ser usadas, por ejemplo, en películas o escenas cinemáticas en los videojuegos. Por ejemplo, para las películas se usa la tubería micropolygon [CCC87, TL04], mientras que para la investigación académica se usa una tubería con renderizado por medio de  trazador de rayos, que consigue resultados casi realistas dado que lanza rayos de luz que interaccionan con una imagen y se simulan los efectos de luz que tiene  sobre ella y se obtiene su color, algo similar a como la luz ilumina nuestro entorno.

En futuros artículo hablaré sobre la tubería fija y programable dando detalles de su diseño y funcionamiento.

Bibliografía

[AMHH08] – T. Akenine-Möller, E. Haines, and N. Hoffman. Real-Time Rendering, Third Edition. CRC Press, 2008.

[CCC87] – Robert L. Cook, Loren Carpenter, and Edwin Catmull. The reyes image rendering architecture. SIGGRAPH Comput. Graph., 21(4):95–102, August 1987.

[TL04] – Eric Tabellion and Arnauld Lamorlette. An approximate global illumination system for computer generated films. ACM Trans. Graph., 23(3):469–476, August 2004.