Evans & Sutherland y los inicios de los 3DCG

En 1968 Ivan Sutherland y David Evans fundaron Evans & Sutherland, la primera empresa de hardware orientada a los generación de gráficos por ordenador. Más de 60 años después su influencia aún se nota a día de hoy. Cosas como el pipeline geométrico, el Z-Buffer o el mapeado de texturas se lo debemos a las innovaciones realizadas por esta empresa en la década de los 70 y principios de los 80.

Los inicios, el Sketchpad de Ivan Sutherland

Corría el año 1962 y un brillante estudiante del Instituto de Tecnología de Massachusetts, el prestigioso MIT, había creado el primer programa informático de dibujo de la historia, su nombre era Ivan Sutherland y por aquel entonces tenia 24 años. El proyecto era su tesis de final de carrera y se ejecutaba en el propio ordenador del MIT, el por aquel entonces TX2. ¿Su idea? Poder dibujar directamente sobre una pantalla CRT de 9 pulgadas, lo que permitió crear por primera vez imágenes digitales a mano, usando para ello un lápiz óptico. Las imágenes aparecían inmediatamente en pantalla y se podían modificar a tiempo real, algo nunca visto hasta ese momento.

Sketchpad Ivan Sutherland

A diferencia de lo que ocurre en la actualidad, el Sketchpad de Sutherland no usaba un sistema basado en píxeles, sino por vértices. El usuario marcaba los puntos y el software creaba las líneas que los unían. Al mismo tiempo, Sutherland añadió una serie de comandos al programa que le permitían copiar partes del objeto, moverlas en la pantalla y borrarlas. Así pues, permitía repetir patrones y manipularlos de manera individual e incluso permitió el desplazamiento, lo que permitía el dibujado de escenas y objetos más grandes de lo que cabían en pantalla.

Cada uno de los dibujos creados por el Sketchpad se podían almacenar y era posible crear animaciones simples a partir de la concatenación de varios dibujos al mismo tiempo. Por otro lado, si bien el primer Sketchpad se diseño solo para generar gráficos en 2D, con los años Sutherland lo mejoro para permitir la creación de objetos en 3D usando un sistema de cuatro ventanas, donde cada una representaba un punto de vista, algo que se sigue viendo el los programas de diseño 3D actual como Blender o 3D Studio.

Los inicios de Evans & Sutherland y el LDS-I

En 1968 Ivan Sutherland fue contratado por la Universidad de Utah como director de su recién estrenada departamento de informática. Del mismo saldrían con el tiempo personajes ilustres como Nolan Bushnell, fundador de Atari, Ed Catmull. creador de los algoritmos del mapeado de texturas y Z-Buffer que se siguen usando incluso a dia de hoy, James H. Clark, fundador de Silicon Graphics y creador del Geometry Engine y John Warnock, quien no solo fundo Adobe con el tiempo sino que además influenciado por el Sketchpad invento el Adobe Illustrator y el formato PDF.

LDS-I PDP Evans & Sutherland

Sutherland había aceptado unirse al departamento convencido por Dave Evans, quien le sugirió crear una empresa en conjunto. Así pues, como consecuencia Evans & Sutherland nació como la primera empresa de gráficos por ordenador y llegó a emplear varios de los estudiantes de Sutherland y con ello su primer producto comercial vio la luz del día. Se trataba del LDS-I o Line Drawing System, el cual implementaba los conceptos del Sketchpad, pero en vez de funcionar en un ordenador de una universidad en concreto, se trataba de un sistema adicional que se conectaba a los miniordenadores PDP-10 de Digital Equipment Corporation, los cuales eran usados por multitud de empresas en aquella época en los Estados Unidos.

Así pues, las primeras utilidades eran puramente científicas, desde ingeniera a arquitectura pasando por el mundo de la medicina. Industrias estratégicas usaron el LDS-I de Evans & Sutherland, demostrando que los gráficos por ordenador tenían futuro. ¿La trampa del LDS-I? Integraba por hardware y a través de chips TTL las mismas funciones que el Sketchpad, sin que resultará un peso adicional a la capacidad de procesamiento del PDP-10.

Picture System

Ya en 1973, y con una iteración mejorada del LDS por el medio, llamada originalmente LDS-II, Evans & Sutherland decidió hacer evolucionar su hardware para la creación de gráficos por ordenador y crear con ello el Picture System, el cual también tuvo una versión mejorada en forma de Picture System II. Al igual que el LDS-I y el LDS-II no se trataba de sistemas independientes, sino más bien terminales gráficas, pero esta vez pensadas para conectarse al PDP-11 de DEC. Bueno, no en realidad, E&S en vez de vender el Picture System como un accesorio al miniordenador tal y cómo ocurría con el LDS, decidió hacer que el sistema de Digital Equipment Corporation estuviera integrado en su sistema desde el principio.

Picture System Architecture

La idea detrás del Picture System no era la de avanzar técnicamente lo que podía realizar el LDS-I y el LDS-II, sino democratizar el acceso a la tecnología con un producto económicamente más barato y más sencillo de usar. No solo para aquellos que supieran dibujar, sino que los usuarios podían ejecutar programas con las instrucciones de como dibujar la escena y crear con ello una lista de pantalla. 

En los inicios eran vértices y no píxeles

Con tal de simplificar y hacer más accesible la lectura de los artículos en HARDVERSO se decidió tirar de una evolución concreta relacionada con los sistemas domésticos. El motivo de ello es que la tecnología utilizada en los sistemas de más alto calibre tardo años y en algunos casos incluso décadas, en alcanzar el coste suficientemente bajo como para llegar a utilizarse en el formato doméstico, pero es que incluso dentro de esos mundos también hubo limitaciones y es que en los primeros años los ordenadores no usaban pantallas como a día de hoy y podían dar una respuesta impresa en un papel o usar una serie de LEDS para comunicarse.

No obstante, el mayor problema existente era la memoria, la RAM tal y cómo la conocemos no existía todavía, no había una memoria en chip lo suficientemente rápida como para que ciertas tareas como la manipulación de gráficos a tiempo real sobre una pantalla fuera viable. Tened en cuenta que el objetivo era que la imagen estuviera preparada para mostrarme en menos tiempo de lo que tarda el haz de electrones en recorrer la imagen y si bien era posible, en cierta manera, crear terminales de texto, el crear gráficos más complejos era un trabajo más difícil.

El motivo de ello es que no había memoria, los chips TTL al ser integración de muy pequeña escala o de media escala no podían funcionar como chips de RAM de alta capacidad para almacenar un búfer de imagen basado en píxeles, aunque el concepto ya existiera sobre el papel (Bresenham), el hardware para hacerlo posible no existía todavía. Por lo que la alternativa que se creo era el uso de gráficos vectoriales, formados por puntos y las líneas que los unen entre sí para crear formas geométricas basadas en vértices. Para ello solo hacía falta describir cómo se dibujaban las líneas sobre la pantalla, usando para ello un tipo de pantalla especial.

Las pantallas caligráficas o vectoriales

En las pantallas CRT convencionales, el haz de electrones recorre siempre a la misma velocidad los mismos sectores y realiza un salto a la línea siguiente después de cada scanline, no hay control sobre el haz de electrones. En cambio, en una pantalla caligráfica o vectorial, el movimiento del haz de electrones es controlado al 100% por el programa. Por lo que los primeros sistemas de gráficos por ordenador en vez de usar un búfer de imagen, dado que la memoria era cara, usaban un programa que generaba la imagen sobre la pantalla en forma de bucle usando para ello una lista de instrucciones que era la lista de pantalla, un concepto que ya vimos en el Atari 800 y posteriormente en el Commodore Amiga, y que a día de hoy se sigue usando en los sistemas actuales.

Vectores

Estas pantallas tenían su propio hardware que las controlaba, el cual recibía el nombre de Line Generator o generador de líneas, ya que su trabajo principal era generar líneas sobre dicha pantalla. Eso sí, tenían una particularidad y es que el haz de electrones no podía quedarse fijo en un lugar y además activo, ya que bien podía desaparecer por completo la imagen o en su defecto quemar el fosforo de la pantalla, por lo que siempre tenía que estar el haz en movimiento. Es por ello que las memorias usadas en estos sistemas eran de doble puerto y no existían ni tiempos de sincronización activa e inactiva, por lo que no resultaba viable añadir un chip de memoria estándar y utilizarlos, lo que llevaba un mayor encarecimiento de la memoria.

Por lo que la paradoja, es que los gráficos en 3D llegaron al mundo de la informática mucho antes que los gráficos en 2D, pero lo hicieron en un mundo en el que los ordenadores no eran para el vulgo y para aplicaciones científicas y militares.

El pipeline geométrico

Una de las particularidades de mostrar gráficos vectoriales es que la información que nos sirve para definir los objetos en el mundo real la podemos usar para definirlos en un espacio 3D virtual, donde cada punto en el espacio 3D (x, y, z) son los 3 primeros componentes de un vector de 4 componentes, el cual incluye un cuarto operando. En realidad, el operando W no habla de una dimensión extra física, sino que a esto le llaman coordenadas homogéneas, lo que permite realizar la rotación, escala y traslación a través de unas serie de operaciones matriciales concatenadas, donde cada operación algebraica es un vector multiplicado por una matriz.

La ventaja de ello es que las matrices que se utilizan para ello son siempre las mismas, la desventaja es que hablamos de un mínimo de 16 multiplicaciones y 12 sumas por transformación de un único vector. Esto si se hace desde una CPU convencional es un overkill, de ahi a que se necesitaran ya desde el principio unidades dedicadas. Las cuales en sus inicios, y hasta la llegada de la integración a muy gran escala (VLSI) eran placas enteras de componentes que solían manejar las instrucciones complejas que las CPU no puede o son demasiado lentas para ejecutarlas con la suficiente velocidad. Dichas unidades solían recibir el nombre de Matrix Multiplier Unit, Matrix Accelerator Processor y muchos otros distintos, pero todos ellos eran distintos. Todos los objetos que forman parte de la escena tridimensional se escalan, rotan y desplazan teniendo en cuenta la perspectiva de la cámara o del espectador.

Viewport, Proyección y Clipping

Una vez los objetos de la escena están colocados hay que delimitar el espacio de visión que se proyectará en la pantalla, a esto se le llama Frustrum y no ha de confundirse al rasterizado, ya que este se da con el uso de pantallas convencionales o raster y no con las pantallas caligráficas, por lo que aquí no tenemos un búfer de imagen basado en píxeles.

Frustrum

El coste de la memoria era muy alto y hemos de tener en cuenta que en una pantalla caligráfica los tiempos de refresco no son fijos, ya que el haz de electrones no se encuentra automatizado, sino en control total del programa, por lo que no existen los conceptos de sincronización vertical y horizontal, por lo que la pantalla esta siempre activa y leyendo de memoria, lo que hace que la RAM utilizada en este sistema tenga que ser de doble puerto. Sin embargo, como hemos dicho ya, no almacena un búfer de imagen, más bien una lista de pantalla con las instrucciones que ha de seguir el generador de líneas que controla la pantalla para dibujar la escena.

Todo ello para terminar con el Clipping, donde se eliminan todas las líneas de la lista de pantalla que se encuentran fuera del encuadre, lo que evita al sistema tener que dibujarlas. Esto no debe confundirse con el Culling que es la eliminación de objetos no visibles, pero que se encuentran dentro del encuadre y están opacados por otros. Si bien en teoría sería posible hacerlo, hemos de recordar que no existe un proceso de rasterización que genere un búfer de profundidad que permita eliminar las secciones no visibles, ya que recordad que no hablamos de un mecanismo basado en raster, sino en pantallas caligráficas.

El advenimiento del búfer de imagen

La llegada de la integración a gran escala trajo dos innovaciones que dieron la vuelta por completo al panorama, por un lado el microprocesador integrado en un chip, el segundo la RAM y esto permitió que por fin se vieran los primeros búferes de imagen. Si bien en los ordenadores domésticos estos tardaron en aparecer y el primero en construirse en 1969 por parte de Michael A. Noll en los laboratorios Bell era aún rudimentario, fue tres años más tarde que Richard Shoup creo en el XEROX PARC el primer búfer de imagen, pero no funcionaba como un búfer de imagen basado en DRAM, sino que se basaba en registros de desplazamiento, por lo que seguía usando chips TTL. ¿Su tamaño? 640 x 480 pixeles y 8 bits de color. ¿Su problema? Se movía con la sincronización de la señal de televisión, y no usaba memoria de acceso aleatorio.

En realidad fue Evans & Sutherland quienes en 1975 y como opción alternativa a sus pantallas caligráficas empezaron a ofrecer pantallas convencionales y la opción de instalar un búfer de imagen en sus Picture System para ello, siendo el primero de ellos una pantalla de 512 x 512 pixeles con una escala de grises de 8 bits. Dado que el PDP-11 sobre el que se montaban estos tipos de sistemas no tenían la capacidad de cálculo suficiente, se solía añadir hardware adicional para realizar el proceso de conversión de la imagen vectorial a píxeles, lo que llevaba a que el coste del hardware aumentará 15.000 dolares adicionales de la época, pero con ello la base para el pipeline 3D quedaba totalmente definida.

Gráficos 3D rasterizados

Fue en este punto donde nació la rasterización como forma de generar gráficos en 3D por ordenador en una pantalla convencional. El algoritmo principal para ello es el algoritmo del pintor donde los objetos más cercanos a la cámara en cada posición son los que se dibujan en el búfer de imagen. Claro esta que, ¿Cómo determinados los objetos cercanos a la cámara? Los primeros sistemas usaban un mecanismo de Depth Cueing donde dependiendo del nivel de color o de la escala de grises usado el sistema puede determinar la lejanía, pero eso limita la capacidad creativa. 

Por lo que la solución fue usar inicialmente árboles binarios de posicionamiento, los cuales son una estructura de datos generada por la CPU que indica la posición de los objetos, pero no son del todo eficientes. Por lo que el mundo tuvo que esperar a que en 1974, Ed Catmull escribiese su tesis de fin de carrera y sugiriese una solución, la cual se terminó popularizando como Z-Buffering y que incluso a día de hoy se sigue usando para la generación de 3DCG rasterizados a tiempo real.

A día de hoy el Z-Buffering sigue siendo un algoritmo imprescindible, pero su coste no es trivial: implementarlo significa duplicar tanto el ancho de banda de memoria como su capacidad total, ya que cada píxel necesita almacenar no solo su color sino también su valor de profundidad. Esto explica por qué durante años se siguieron usando alternativas como los árboles de posicionamiento binario o BSP, menos robustos pero más baratos de implementar. En los sistemas domésticos tuvimos que esperar hasta mediados de los 90 para ver Z-Buffering completo por hardware, y en las primeras estaciones de trabajo 3D de mediados de los 80 era todavía una opción que había que adquirir por separado.

Mapeado de texturas

El Z-Buffer no fue la única aportación de Catmull al mundo de los gráficos por ordenador, siendo la otra el mapeado de texturas, publicado también en su tesis doctoral de 1974 en la Universidad de Utah. El problema que resolvía era el siguiente: una vez que tienes polígonos rasterizados en pantalla, estos son superficies lisas y uniformes. El mapeado de texturas permite proyectar una imagen 2D — la textura — sobre la superficie de esos polígonos, dotándolos de detalle visual sin necesidad de añadir geometría adicional. 

Catmull Texture Mapping

Para ello se introdujo el concepto de coordenadas UV, donde U y V son los equivalentes en el espacio 2D de la textura a las coordenadas X e Y del espacio 3D. Cada vértice del polígono lleva asociadas sus coordenadas UV, y el hardware interpola esos valores para cada píxel del polígono, determinando qué punto exacto de la textura corresponde a cada píxel de la pantalla. El reto técnico más importante es hacerlo de forma perspectivamente correcta, ya que una interpolación lineal simple produce deformaciones visibles cuando el polígono está inclinado respecto a la cámara. Resolver esto requería divisiones por cada píxel, lo que en hardware de la época era extraordinariamente costoso y explica por qué los primeros sistemas domésticos con aceleración 3D usaban mapeado de texturas sin corrección de perspectiva, dando lugar a ese efecto de «goma elástica» tan característico de los primeros juegos en 3D.

El perfeccionismo de Catmull

No obstante, Catmull no se limitó a implementar el mapeado de texturas, sino que implemento una serie de añadidos con tal de mejorar la calidad de la representación, las cuales añadían una carga no solo computacional, sino también en ancho de banda y memoria. 

  • En primer lugar los mip maps, que son versiones a la mitad de resolución de la textura, lo que supone duplicar la memoria para texturas.
  • La segunda mejora fue la corrección de perspectiva, la cual evita que las texturas bailen como flanes, para ello es necesario realizar cálculos en coma flotante, algo que a mediados de los 70 no era lo habitual.
  • El filtrado bilineal fue la tercera mejora añadida al mapeado de texturas, se basa en evitar el efecto de pixelación a través de la interpolación de 4 píxeles, lo que cuadriplicaba el ancho de banda necesario.

No fueron las únicas innovaciones

Voyager Saturn

Catmull y Sutherland no fueron los únicos que aportaron a los cimientos de la generación de gráficos en 3D a tiempo real, sino que hubo muchas otras que se realizaron durante esos años:

  • En 1971, Henri Gouraud, acuño lo que se conoce como Gouraud Shading o Smooth Shading, el cual consiste en difuminar los vertices de un polígono para que no se vean las aristas en un objeto. 
  • Martin Newell y Jim Blinn crearon conjuntamente el Environment Mapping en 1976, el cual permite simular reflejos del entorno. El propio Blinn llego a crear el algoritmo para el Bump Mapping, que permite simular relieves y texturas rugosas sobre los objetos.

Cómo curiosidad, Blinn fue el encargado de crear las imágenes generadas por ordenador que en 1980 se utilizaron para promocionar el viaje de la Voyager a través de todo el sistema solar. Siendo estas las primeras imágenes generadas por ordenador complejas que vio el público general.

El CT5: todo el pipeline en un solo sistema

El mejor ejemplo de todo lo descrito anteriormente materializado en un único sistema llegó de la mano de Evans & Sutherland con el CT5, un simulador de vuelo diseñado para el entrenamiento militar cuyo prototipo ya estaba operativo antes de 1981. Su importancia histórica es mayúscula: era la primera vez que el pipeline geométrico completo — transformación matricial, clipping, rasterización, Z-Buffer y mapeado de texturas — se implementaba íntegramente en hardware dedicado.

Sus cifras técnicas hablan por sí solas: 1000 polígonos por frame a 50 FPS sobre una pantalla de 1024×1024 píxeles, con Z-Buffer y mapeado de texturas por hardware. Y no sobre un único monitor, sino sobre hasta 8 simultáneamente, cada uno con su propia posición de cámara independiente, recreando el campo visual completo de una cabina. Lo que significa que el sistema procesaba en realidad 8000 polígonos por frame a 50 FPS — una cifra sencillamente brutal para la época.

Pero lo verdaderamente revelador es lo que había detrás para conseguirlo. El CT5 no era una placa, ni dos. La versión de gama baja ocupaba unos 4 racks de 19 pulgadas de altura completa, cada uno con dos backplanes conteniendo hasta 32 placas de circuitos. Su precio de salida era de varios millones de dólares de la época. La versión de gama alta escalaba hasta 10 racks y superaba los 10 millones de dólares — un coste únicamente asumible por ejércitos y agencias gubernamentales.

Todo ese volumen de hardware, esos racks repletos de placas, ese coste desorbitado, es exactamente lo que la integración VLSI que mencionábamos antes prometía reducir. Y lo hizo. Cada concepto que hoy damos por sentado en cualquier GPU — desde el Z-Buffer hasta las coordenadas UV — ya vivía en el CT5. Solo era cuestión de tiempo y de silicio.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x