De 2D a 3D. Shaders y GPU 1

Motor de juego

Cuando empezamos a utilizar las computadoras personales para más cosas que realizar complejos cálculos, comenzamos a desarrollar los periféricos, como las pantallas. Las pantallas han evolucionado desde los monitores de tuvo de rayos catódicos hasta las modernas pantallas planas.

Al reducir el tamaño de los pixeles y aumentar la gama de colores que se pueden representar, las posibilidades de representación visual se multiplicaban. Los contornos de los sprites utilizados para crear entornos gráficos en 2D podían perfilarse y ganar nitidez. Con estas notables mejoras se hizo patente que las prestaciones de las animaciones por imágenes se quedaban bastante cortas.

En los años 80, el software gráfico se utilizaba principalmente para la industria audiovisual con el desarrollo de la CGI (Computer Generate Imaginery) enfocado a anuncios y películas. Los videojuegos eran en ese momento una industria muy pequeña sin capacidad para impulsar grandes desarrollos. Los juegos de plataformas eran los más solicitados y la guerra entre Sega y Nintendo se centraba más en la jugabilidad que en el aspecto visual.

El punto de inflexión fue cuando George Lucas decidió valerse de las animaciones virtuales para mejorar los efectos especiales de las películas. LucasFilm contrató a desarrolladores informáticos para que bajo la dirección de Edwin Catmull desarrollaran una nueva forma de representación gráfica.

Pixar

En ese momento, las APIS para gráficos carecían de estándares y dependían de los periféricos. Uno de los proyectos de Catmull, posteriormente conocido como Pixar Animation Studios, se centro en el desarrollo de un nuevo API. RISPec (RenderMan Interface Specification).

El objetivo principal de RenderMan era dotar a las imágenes de sensación de profundidad y volumen para hacerlas más realistas. Con un lenguaje semejante a C, y con un nuevo concepto, el de los shaders, consiguieron su objetivo. Los shader eran pequeñas piezas de código capaces de modificar el renderizado (generación de imágenes) a nivel de pixel de los modelos en función de los puntos de luz y las cámaras. De esta forma se podían crear sombras, shades, que dieran la sensación de volumen.

El éxito del proyecto se puede demostrar con las películas producidas por Pixar. Desde la publicación de RISPec en 1988, gracias a la modularidad con la que fue diseñado, la industria cinematográfica dio un gran salto de calidad en sus efectos especiales y en el contenido animado. Pero la renderización en tiempo real para entornos virtuales y videojuegos apenas se vio afectada hasta el lanzamiento de las dos principales APIs de gestión de gráficos. OpenCV (1992) y DirectX (1995). Estas APIs abstraían la renderización del hardware y facilitaba la gestión de gráficos. Con una nueva capa que simplificaba el diseño y la reproducción en tiempo real (RT) a los desarrolladores.

API par modelos 3D
API par modelado en 3D

Pero la simulación en RT seguía siendo deficiente debido a la sobrecarga de las CPUs que no eran capaces de gestionar la renderización de todos los triángulos de modelado a la vez. Esta sobrecarga bajaba notablemente el frame rate (número de frames o fotogramas procesados por segundo). Y dicha perdida hacía aparecer los famosos huecos o triángulos negros que todos hemos visto en los primeros juegos en 3D.

El primer avance en ese aspecto fueron las tarjetas gráficas 3dfx Voodoo que liberaban a las CPUs de algunas tareas del procesado gráfico. Pero el avance no era significativo. Mientras que en el diseño gráfico desarrollado para las películas con RenderMan era casi totalmente manipulable y ofrecía resultados espectaculares, el rendimiento de los trabajos en RT era casi deficiente.

En esos años, compañía NVIDIA lanza al tarjeta gráfica GeForce 256. La nueva tarjeta sustituye los chipset encargados de la gestión de gráficos por unos nuevos procesadores. Estos son el cuerpo de la GPU (Unidad de Procesamiento Gráfico). Con este nuevo hardware, las tarjetas gráficas son capaces de procesar ellas mismas los cálculos del pipeline gráfico aligerando la cola de tareas de la CPU. Pero como todo en informática, los primeros pasos fueron cortitos.

A pesar de ello la industria del videojuego empieza a tomar impulso con las posibilidades de los gráficos en 3D que mejoran las sensaciones del juego. En 1993 se comercializa Doom. Este juego en primera persona revolucionó la industria. Los juegos ya no iban a ser solo para niños y consolas.

Pero hasta el año 2001, con la aparición conjunta de DirectX 8 y la primera NVIDIA con pixel y vertex shacer configurables, la GeForce3, no se produciría el gran paso en el procesado de entornos gráficos en RT. La fuerza de las GPU está en su arquitectura. Mientras que la CPU está diseñada para realizar un procesamiento en serie, las GPU se componen de cientos o miles de núcleos sencillos que pueden realizar operaciones sencillas a la vez. De esta forma puede realizar los cálculos necesarios para obtener los vértices y los shaders de los modelos 3D que se deben renderizar a la vez, no en serie como la CPU.

Desde entonces, tanto las GPUs como las API dedicadas al modelado 3D, han sufrido una constante evolución. En la actualidad, incluso la representación de los entornos gráficos ha salido de las pantallas a gadgets y gafas. Estamos a las puertas de conseguir crear mundos de realidad virtual realistas. Y todo gracias a la gestión de las sombras en los modelos 3D.



Referencias:

  • Desarrollo de videojuegos. Arquitectura del motor de videojuegos.- D. Vallejo Fernández y C. Martín Angelina. Escuela Superior de Informática.




Deja un comentario

Una idea sobre “De 2D a 3D. Shaders y GPU