Introducción

El uso de la gráfica generada por computador (CG de aquí en adelante) se ha incrementado notablemente en los ultimos años, debido, principalmente, al exagerado crecimiento en el hardware computacional.
Es gracias a esto que ahora podemos disfrutar de increíbles efectos especiales en las pelíiculas, de hermosos paisajes generados a partir de fractales, de películas completas hechas por computador, de impresionantes spots publicitarios, de alucinantes videojuegos, y un larguísimo etcétera.

El florecimiento de los gráficos "3D" no se dió antes debido a que es necesario una gran cantidad de calculo para generar cada imagen. Existen muchas formas de crear mundos 3D: a través de polígonos, definiendo estructuras matemáticas, creando luces, aplicando texturas a las formas... pero todo esto requiere computadores poderosos, impensables hace unas décadas atras. Hoy podemos ver que los computadores personales pueden ser extendídos para acelerar el calculo 3D (en forma de "tarjetas aceleradoras") y también podemos ver empresas que fabrican poderosas estaciones de trabajo exclusivamente para estos pesados calculos que se requieren en la generación de gráficos de alta calidad.

Tal como habiamos dicho, existen muchos algoritmos distintos para "mostrar" mundos tridimensinales a través de la pantalla de un computador, cada uno caracterizado por una cierta calidad (y nivel de realismo) y un cierto "peso" en cuanto a calculo.
Los computadores caseros de hoy en dia, las consolas de juegos de última generación y gran parte de las estaciones gráficas especializadas se basan en la creación de mundos 3D en base a polígonos. Esot, aunque relativamente fácil de calcular para un procesador poderoso, dista de la sensación visual del mundo real, por lo que algunas empresas están comenzando ya a impulsar el desarrollo del "hardware 3D" hacia técnicas no poligonales.

Es aquí donde entramos nosotros. Queremeos desarrollar una arquitectura específica para la creación de mundos tridimensionales que posea una calidad lo mas real posible. Para esto acudiremos al mas poderoso algoritmo de "rendering" (proyeccion de un mundo 3D a una imagen plana, donde se puedan apreciar las características de los objetos) desarrollado hasta la fecha: Ray Tracing.

Qué es Ray Tracing?

Ray Tracing es un método que nos permite obtener imágenes con realismo fotográfico a partir de mundos 3D creados por nosotros. Imaginemos que podemos crear formas, mezclarlas, definirlas a partir de ecuaciones, aplicar luces, colores, texturas, planos infinitos, esferas transparentes, etc, etc, etc. En el momento que queramos "ver" como es el mundo que hemos creado, el algoritmo de Ray Tracing modela matemáticamente los rayos de luz a medida que estos rebotan y se refractan en los objetos que hemos definido, y los cuales eventualmente terminan proyectandose en nuestra "pantalla". Esto requiere de miles y millones de calculos de punto flotante, por lo que cada imagen, en un PC actual puede tomar desde varios minutos hasta varios dias en "renderearse". Lo bueno es que los espectaculares resultados de Ray Tracing valen la pena la espera.

Muchas empresas que se dedican al mundo gráfico sueñan con una máquina asi, pero aun el hardware requerido es muy caro como para desarrollarse como un producto comercial. Es por esto que el mercado está dominado por hardware de rendering poligonal, de lo cual hablaremos mas adelante.

Veremos un diseño de computador especializado (creado por mi) que se aprovecha de las características del calculo que efectúa Ray Tracing, para poder disminuir lo mas posible el tiempo de espera para ver el resultado. Aplicaremos además algunos filtros posteriores al proceso de rendering, que nos ayudan a perfeccionar (aun mas!) la calidad de las imágenes generadas.


Siguiente: Una Arquitectura propuesta