Historia del graphicwhorismo I: memcpy
Aquí Yayo. Vengo de otra dimensión con la intención de spamear muchogamer cada viernes con mis perlas de sabiduría, estupidez y alegría. ¡Comencemos!
En el principio de los tiempos, no había tarjetas gráficas.
Técnicamente en el principio de los tiempos no había una mierda, pero me refiero a cuando los juegos empezaron su loca carrera en búsqueda de la perfección gráfica. Lo que se conoce como “despertar la graphic whore que llevamos dentro”.
Obviamente juegos hubo desde antes de que existieran las computadoras (Pong con un osciloscopio por ejemplo), e incluso cuando no se podía mostrar imágenes en pantalla (aventuras de texto – ficción interactiva-, muds, roguelikes y demás). Pero lo interesante vino con los “adaptadores de video VGA”.
Por aquella época, todo se calculaba en la CPU (que era ya de por sí un chiste comparada con lo que tenemos hoy en día en cualquier teléfono), y dibujar en pantalla se hacía en 2 simples pasos: una interrupción en el puerto de la VGA, y luego copiar un bloque de “píxeles” a la memoria del adaptador para mostrar en pantalla (usando un simple memcpy en C de toda la vida). Y eso era todo. En memoria se guardaba un “buffer” con los píxeles a dibujar donde se escribían manualmente todos uno por uno, y luego se copiaba a la pantalla en bloque, cada frame.
Lo que empezó con simples chorraditas en plan una imagen por aquí y otra por allí terminó con grandes flipaduras: las aventuras clásicas de lucas arts, juegos de todo tipo (los dune original – precursores de los RTS actuales -, aventuras en sidescroll, RPG’s de todo tipo, tamaño y color)… y por supuesto, el primer FPS de la historia: Wolfenstein 3D.
Aquello era una burrada técnica que rozaba la locura: una versión simplificadísima de raytracing conocida como raycasting, en la que en lugar de lanzar un rayo por cada píxel, se hacía por cada columna vertical, reduciendo el número total de computaciones de 76800 a 320 (en lugar de 320×240, sólo había que recorrer los 320 píxeles de ancho de pantalla y rellenar con tiras verticales de texturas).
Obviamente la técnica era muy limitada: no se podía mostrar paredes de distintas alturas, ni se podía subir ni bajar escaleras (ni obviamente saltar) ni mirar hacia arriba o hacia abajo. La mayoría de esos defectos se arreglarían de algún modo con subsiguientes juegos basados en ese engine, pero para el loco Carmack, no era suficiente.
El siguiente motor introdujo una serie de cambios más potentes aún: Doom tenía escaleras, ventanas, paredes de distintos tamaños, con distintos ángulos (no sólo rectangulares), efectos de iluminación e incluso un puto skybox. Mindblowing.
La sensación de 3D era tan bestia, que los jovensísimos frikis de ID software se forraron, lo que terminó con peleas internas, locuras de John “El peludo” Romero (alcohol, sexo y ferraris) y que acabaron con la separación del grupo, unos años más tarde.
Aquello fue tan poderoso, que incluso el mismísimo Bill Gates se puso a matar jodidos soldados para vendernos su Windows 95, en el que obviamente, Doom corría como la seda.
Pero Doom era todavía el hijo del 2D, tenía sus problemas y era aún limitado. Carmack todavía sentía en su interior que había que hacerlo mejor, que sus cojones no habían golpeado con fuerza suficiente todavía el mundo de los motores gráficos. Quería hacerlo mejor.
Así que se inventó Quake, el primer FPS completamente poligonal. Y sí, para los que no tenían una tarjeta gráfica verdadera, aquello todavía podía renderizarse por “software” (todo calculado en la CPU), pero el “rasterizador” tenía ya todas las bases de un renderizado 3d “moderno”.
Pero ¿de dónde salió aquello de los polígonos? ¿Y las tarjetas gráficas?
Con la cantidad inmensa de pasta que los jueguicos empezaron a mover en PC, era claro que había que hacer algo para vender más y mejor. Los gráficos eran una forma fácil de mostrar un producto, de hacerlo “mainstream” y de obligarte a comprar una tarjeta gráfica más potente.
So deep, so 3d.Las primeras eran poco más que un conjunto de ALUs (unidades aritméticas lógicas – mini computadoras que pueden sólo sumar, restar y manipular la memoria) hechas para rasterizar polígonos y evitar tener que poner cada píxel en la memoria del adaptador gráfico. Cada distinta gráfica tenía sus características y había que escribir código específico diferente para cada uno. Los juegos que querían soportar distintas marcas y tipos tenían que dar la posibilidad de “seleccionar la gráfica”. Una mierda.
Pero por suerte para nosotros, desde hacía unos años, los majetes de Sillicon Graphics decidieron empezar su API única para gráficos – un mismo código, soportado por cualquier hardware. Aquello se llamó IrisGL, y seguro que lo viste en acción (se usó para dar vida al T-1000 en el Día del Juicio – el robot de metal líquido en Terminator 2 para los no frikis). Muchos años y problemas después, se convirtió en OpenGL, años antes de que Bill Gates llamara a tu puerta para comprar windows 95 con su Direct X.
Y así, con un puñado de juegos innovadores, la guerra de las gráficas empezó, y el graphicwhorismo explotó.
En la siguiente entrega (el próximo viernes): sexo, drogas y el pipeline de función fija.