Mundo 3 d

10
No es novedad escuchar que la tecnología avanza rápidamente, y este dicho, en el mundo 3D, está lejos de ser una excepción. Quien no haya jugado a un videojuego en los últimos dos años se sorprenderá muchísimo al ver cuánto han cambiado. Y es que el mercado de los videojuegos mueve enormes sumas de dinero, y estas cifras justifican inversiones gigantescas en desarrollo de tecnología relacionada. En 1992 salieron al mercado Wölfestein 3D y Alone in the Dark, dos exponentes de títulos en tres dimensiones que marcarían el comienzo de una época. Claro que aquellos juegos distan mucho de lo que podemos encontrar hoy en día en las consolas de última generación, pero experimentar la sensación que nos otorgaban hacía evidente que la era de los juegos 2D estaba llegando a su fin. Desde el punto de vista técnico, un juego 3D (si bien comparte muchas de las características de uno 2D) es un mundo nuevo, especialmente en el apartado gráfico. Los personajes ya no son sprites sino modelos conformados por polígonos y recubiertos de texturas; los escenarios dejaron de ser mapas armados a partir de pequeños bitmaps, y ahora son auténticas y complejas mallas usualmente ordenadas por algoritmos de particionamiento espacial como el BSP (Binary Space Partitioning); y muchos elementos nuevos entran en escena, como luces, materiales, sistemas de partículas 3D, etc. En esta nota, introduciremos algunos de los conceptos más importantes que maneja la tecnología 3D y veremos su aplicación al desarrollo de videojuegos. También analizaremos cuáles son los dispositivos que hoy se pueden encontrar en el mercado y cuáles son las consolas de videojuegos que anhelaremos en unos pocos meses. Pero, para lograrlo, vamos a ver un poco cómo fue avanzando este mercado, sumergiéndonos en la historia reciente de los adaptadores de video. Diego Ruiz | [email protected] 24 POWERUSR

Transcript of Mundo 3 d

Page 1: Mundo 3 d

No es novedad escuchar que la tecnologíaavanza rápidamente, y este dicho, en el

mundo 3D, está lejos de ser una excepción. Quien no haya jugado aun videojuego en los últimos dos años se sorprenderá muchísimo al ver cuánto

han cambiado. Y es que el mercado de los videojuegos mueve enormes sumas dedinero, y estas cifras justifican inversiones gigantescas en desarrollo de tecnología relacionada.

En 1992 salieron al mercado Wölfestein 3D y Alone in the Dark, dos exponentes de títulos en tresdimensiones que marcarían el comienzo de una época. Claro que aquellos juegos distan mucho de lo quepodemos encontrar hoy en día en las consolas de última generación, pero experimentar la sensación que nos otorgaban hacía evidente que la era de los juegos 2D estaba llegando a su fin.Desde el punto de vista técnico, un juego 3D (si bien comparte muchas de las características de uno 2D) es un mundo nuevo, especialmente en el apartado gráfico. Los personajes ya no son sprites sino modelosconformados por polígonos y recubiertos de texturas; los escenarios dejaron de ser mapas armados a partirde pequeños bitmaps, y ahora son auténticas y complejas mallas usualmente ordenadas por algoritmos departicionamiento espacial como el BSP (Binary Space Partitioning); y muchos elementos nuevos entran enescena, como luces, materiales, sistemas de partículas 3D, etc.En esta nota, introduciremos algunos de los conceptos más importantes que maneja la tecnología 3D y veremossu aplicación al desarrollo de videojuegos. También analizaremos cuáles son los dispositivos que hoy se puedenencontrar en el mercado y cuáles son las consolas de videojuegos que anhelaremos en unos pocos meses.Pero, para lograrlo, vamos a ver un poco cómo fue avanzando este mercado, sumergiéndonos en la historiareciente de los adaptadores de video.

Diego Ruiz | [email protected]

24 POWERUSR

Page 2: Mundo 3 d

Escribir un byte en ella significaba modificar el color deun pixel en nuestro monitor.Luego, los dispositivos de video comenzaron a ganar in-teligencia, fruto de la necesidad de crear aplicaciones ca-da vez más complejas (principalmente, juegos). Dejaronde ser estúpidos esclavos que sólo leían una porción desu memoria para generar la señal correspondiente por elpuerto de salida al monitor.Comenzaba la era de las placas aceleradoras 3D. Se denomi-naron vagamente aceleradoras, debido a que implementa-ban —en mayor o menor medida— operaciones en hardwareque, clásicamente, se hacían por software, razón por la cuallas aplicaciones 3D se ejecutaban con más velocidad.

EL INICIO DE LA ERA 3DEn estas páginas pretendemos remitirnos más a las genera-ciones y arquitecturas de dispositivos que a los modelos es-pecíficos que cada empresa saca al mercado cada seis me-ses. Sin embargo, existen hitos que son marcados específi-camente por una u otra firma, y que no pueden quedar almargen. Un ejemplo de lo expresado es el caso de la difuntacompañía 3Dfx Interactive (ver recuadro).La primera generación de procesadores de video inteligentesconsistió en la implementación de un grupo de operacionesprefijadas por medio de las cuales se procesaba una serie devértices que luego finalizarían representando polígonos enpantalla, materia prima de todo objeto 3D.Dicha inteligencia fue “vendida” comercialmente a los usua-rios finales por parte de NVIDIA bajo el nombre “motor detransformación e iluminación” (Transformation and Lighting),más conocida popularmente por su abreviatura, TnL.Para comprender un poco mejor cómo funciona este tipode dispositivos, es conveniente introducir el modo en que

POWERUSR 25

P L ACA S D E V I D E O

uando las computadoras personales irrumpieronen el mercado, el adaptador más popular era elMDA (un fabricante muy popular de aquel enton-

ces era la empresa Hercules), un dispositivo que ofrecíauna resolución de 720x350 y era monocromático.Luego, llegó el momento del color. Al comienzo, con dis-positivos modestos como el clásico CGA (Color GraphicsAdapter), que brindaba tan sólo cuatro colores con unaresolución de 320x200 (alcanzaba 640x480 en modo mo-nocromático). Y tras él, el dispositivo EGA (EnhancedGraphics Adapter), que ofrecía 16 colores en una ya de-cente resolución de 640x350.Sin embargo, muchas personas conocieron el color yacon el popular VGA (Video Graphics Adapter) y sus con-secuentes mejoradas versiones (SVGA, XGA, SXGA, etc.).El adaptador VGA ofrecía 256 colores en resolución de320x200; el SVGA (Super Video Graphics Adapter), porsu parte, dependía de la cantidad de memoria que poseíala placa. A partir de este punto, ingresamos en la historiareciente de las placas de video.

LA MEMORIA DE VIDEOCuando las placas SVGA eran las más populares dentrode nuestros flamantes gabinetes mini tower, la caracte-rística más importante del dispositivo era la cantidad dememoria que poseía. A mayor memoria, mayor cantidadde colores y mayor resolución para deleitarnos la vista.Con 1 MB de RAM en nuestra placa de video, podíamosllegar a una resolución de 1024x768 con profundidad de256 colores y ser el orgullo (nerd) de la cuadra. En aquelentonces, la memoria de video se utilizaba exclusiva-mente como video buffer, es decir que era una represen-tación lógica de lo que se veía en pantalla.

UN POCO DE HISTORIALA IMPORTANCIA DE LAS PLACAS DE VIDEO EN NUESTRAS COMPUTADORAS SE HA IDO INCREMENTANDO CON ELPASO DEL TIEMPO. EN UN PRINCIPIO, LAS MEJORAS ESTABAN RELACIONADAS CON LA CANTIDAD DE COLORESQUE PODIA OFRECER EL DISPOSITIVO Y/O CON LA RESOLUCION. SIN EMBARGO, POCO A POCO, ESTOS ELEMENTOSFUERON ADQUIRIENDO MAYOR FUNCIONALIDAD Y SE HAN HECHO FUNDAMENTALES PARA LOS JUEGOS.

C

ATARI 2600: PROGRAMAR SIN VIDEO BUFFER

La consola de juegos más popular de Atari fue la gloriosa Atari 2600. Una de las razonesde su éxito fue su bajo costo de fabricación. En aquella época, la memoria era muycara, y disponer de un video buffer en la consola incrementabanotablemente su precio. El total de memoria con que contaba elsistema para dibujar en pantalla era suficiente sólo parados líneas de video. Los programadores debíaningeniárselas para escribir, de modo sincronizado, elbarrido vertical, y así crear en pantalla la imagen que eljuego necesitara en cada momento. La consola Atari 2600tenía un procesador 6507 de 8 bits (1,19 MHz), 128 bytes de RAM,4 KB máximos de ROM, una resolución en pantalla de 192x160pixeles y 16 colores (4 simultáneos en pantalla). El primer modelosalió a la calle en 1978, y el último —el Atari 2600 Jr.—, en 1986 (aunquerecientemente se lanzó, para los nostálgicos, una pequeña consolita Atari2600 dentro de su clásico joystick con diez juegos incluidos).

LA VCS (VIDEOCOMPUTER SYSTEM)

ATARI 2600.

Page 3: Mundo 3 d

PLACAS DE ULTIMA GENERACIONCaracterística NVIDIA 6800 ULTRA ATI RADEON X850 PEInterfaz de memoria 256 bits 256 bitsCantidad de memoria 512 MB 256 MBTipo de memoria GDDR3 GDDR3Velocidad memorias 1,1 GHz 1,1 GHzVelocidad core 400 MHz 540 MHzFill rate 6,4 Gpixels/s 8,6 Gpixels/sVértices por segundo 600 MT/s 810 MT/sRAMDAC 400 MHz 400 MHzCantidad de pipelines 16 16Cantidad de transistores 222 millones 160 millonesVertex shader model 3.0 2.0Pixel shader model 3.0 2.0Tipo interfaz AGP / PCIE AGP / PCIEMax. resolución 2048x1536 2048x1536

26 POWERUSR

3DFX INTERACTIVE

3Dfx Interactive fue una empresadedicada al desarrollo de dispositivosde video 3D. Signo del tiempo en elque vivimos, fue un ejemplo notorio delo efímero que es el éxito; muchos nola vieron venir. Se formó en el año1994, y en 1998 ya era dueña casi totaldel mercado de aceleradoras 3D.Lo curioso del caso es que 3Dfx, en unprincipio, ofrecía un dispositivo queera un complemento para el adaptadorde video principal del sistema. Por lotanto, una PC con los modelos deplacas Voodoo Graphics o Voodoo2requería una placa de videoconvencional para realizar el trabajoen escritorio de Windows. Además,sólo aceleraba aplicaciones enpantalla completa que hicieran uso desu API de programación (Glide) yofrecía una profundidad de colores deúnicamente 16 bits.Aun así, 3Dfx Interactive se convirtióen el líder del mercado y entró en la

fase más compleja: mantenerse en lacresta de la ola.A mediados de 1999 sacó al mercadoel modelo Voodoo3, que arremetíacontra la mayor cantidad de defectosque se les podía achacar a los modelosanteriores, pero ya no estaba solo:NVIDIA poco a poco se convertía enuna espada de Damocles y,silenciosamente, ganaba mercado consus productos TNT y, luego, TNT2.La Voodoo3 vendió relativamente bien,pero no tanto como se esperaba. 3Dfxintentó recuperarse con una nuevafamilia de productos: Voodoo4 yVoodoo5. Pero en aquel momento,NVIDIA había finalizado su flamanteGeForce: la suerte estaba echada.3Dfx Interactive tomó malasdecisiones estratégicas y tuvo atrasosconsiderables en el lanzamiento desus últimos modelos. Finalmente, en2000 fue comprada por NVIDIA, con locual finalizó su ciclo de vida.

end). Para esto lanzan diversos modelosque se ajusten a la necesidad y el bolsi-llo de cada usuario.En el mercado high end, el modelo devanguardia de NVIDIA es la serie GeForce 6800 (teniendo como mayorexponente la versión Ultra), mientras que

ATI ofrece su línea RADEON X850 (cuyotope es la poderosa XT Platinum Edition).Si bien no es objeto de este artículo espe-cificar con gran detalle los modelos deestos fabricantes, en la tabla de estapágina podemos ver las opciones de me-jor rendimiento propuestas por ambos.

trabajan las librerías 3D más popula-res, como es el caso de OpenGL yDirect3D, ya que éstas se desarrollanparalelamente al hardware, a talpunto que en algunos no es fácil de-terminar cuál empuja a cuál. De estohablaremos en las próximas páginas.

PLACAS DE VIDEO DE ULTIMA GENERACIONTanto la gigante californiana NVIDIAcomo el contendiente canadiense ATITechnologies se encuentran compi-tiendo ferozmente por liderar el mer-cado de los dispositivos de video. Porun lado, esto es bueno para nosotros,ya que existe una mejora continua, ysin pausa, de la tecnología gráfica.Por otro lado, dicha competencia mu-chas veces evita un desarrollo defondo de los nuevos dispositivos: conla necesidad de salir en pocos mesescon un producto más veloz que elcompetidor, simplemente se busca porfuerza bruta aumentar la cantidad deprocesamiento del dispositivo, au-mentando la frecuencia de clock dela GPU y/o aumentando la velocidada la cual trabajan las memorias, locual significa mayor consumo, máscalor, mayor tamaño de placa, etc.Ambas empresas diferencian a losmercados de alto desempeño (highend) de aquellos más modestos (low

EN ESTA FOTO SE PUEDEOBSERVAR LA CLASICA TARJETADE VIDEO 3DFX VOODOO3 3000.

Page 4: Mundo 3 d

28 POWERUSR

DE POLIGONOS Y VERTICES

C O M O S E FO R M A N L A S I M AG E N E S

uando estamos jugando un juego3D de computadora o consola, todolo que vemos en escena son objetos

formados por polígonos (más específica-mente, triángulos), los cuales, a su vez, seencuentran formados por vértices.Cada vértice de un objeto en particular(por ejemplo, un personaje del juego) estádefinido en un espacio local a dicho obje-to; es decir que posee un centro (0, 0, 0)relativo a sí mismo e independiente delorigen del mundo donde finalmente seráinmerso. Como es posible inferir, existeuna conversión de un espacio a otro quealguien debe realizar; al mismo tiempo,todos los vértices deberán ser reorientadosdentro de una escena para que ésta seavisualizada desde un punto en particular(como si se tratara del ojo de una cáma-ra). Entonces, se definen ciertos linea-mientos con los cuales se procesarán losvértices y se facilitará la operación conellos en los usos más comunes.El pipeline prefijado establece (como sepuede apreciar en la figura de la página30) una serie de operaciones que se reali-zarán sobre cada vértice entrante (de cadatriángulo, de cada objeto del juego).

ETAPA 1: PROCESAMIENTO DE VERTICESEl pipeline se alimenta de vértices. Cadauno es convertido en coordenadas ho-mogéneas para, luego, poder ser multi-plicado por tres matrices: la matriz demundo, la de vista y la de proyección.Luego, la coordenada resultante es rees-calada en función del punto de visuali-zación especificado (en general, la pan-talla completa o la ventana que estamosutilizando como objetivo para el dibuja-do) y, en caso de quedar fuera del áreade visualización, es eliminada. Finalmente, el vértice es transferido alproceso de rasterización, donde será di-bujado en pantalla.

■ La matriz de mundo: la primera ma-triz de mundo se utiliza para colocar elobjeto en la escena 3D. Realiza unatransformación que va del espacio del

modelo al espacio del mundo en el cualtrabajamos. La transformación de mun-do puede incluir traslaciones, rotacionesy escalamientos.

■ La matriz de vista: esta segunda matrizreubica todos los objetos en función deun punto de visualización especificado.

■ La matriz de proyección: especifica,principalmente, la escala y la perspecti-va adoptadas. Esta matriz determinará,también, cuánto vemos de la escena, esdecir, el volumen de visualización.

Es importante entender que el uso dematrices es un recurso matemático crea-do para simplificar la manipulación devértices. Con ellas es muy sencillo mo-dificar la posición, la orientación y laescala de éstos.Una vez que el vértice ha sido procesa-do, si se mantiene dentro del volumende visualización predefinido, pasará auna segunda etapa: la rasterización.

ETAPA 2: LA RASTERIZACIONEn la rasterización se “pintan” los vérti-ces, y para hacerlo se utiliza una ecua-ción en la cual participan varios elemen-tos, como el color del vértice, las lucesde la escena que lo afectan, la normalque especifica el vértice en cuestión y elmaterial activo que corresponda. Luego,se rellena todo el triángulo, realizandouna interpolación de los colores de cadavértice que lo conforman.Un objeto 3D también puede estar cu-bierto por una textura, que es, básica-mente, un mapa de bits con ciertas pro-piedades. Las texturas, para poder seraplicadas a la geometría, deben estarcargadas en memoria de video. De estemodo, ya no son sólo utilizadas comovideo buffer. Este uso “secundario” es,hoy en día, la principal razón para optarpor tarjetas de mayor memoria: una pla-ca de video con más memoria podrá al-bergar más texturas, y de mejor calidad.Las placas de última generación poseen256 MB o 512 MB de memoria de video,

¿NUNCA SE PREGUNTARON COMO ES QUE SE PROCESAN LAS IMAGENES EN LA COMPUTADORA? LA GENERACIONDE UN MUNDO 3D EN UNA PANTALLA BIDIMENSIONAL COMO LA DEL MONITOR IMPLICA LA APLICACION DEDISTINTAS TECNICAS REALIZADAS DIRECTAMENTE POR LA PLACA DE VIDEO. AQUI VEREMOS COMO FUNCIONAN.

C

MODELO FORMADO CON VERTICESQUE ESPECIFICAN COORDENADASDE TEXTURA.

EL MISMO MODELO DE LAIZQUIERDA, PERO YA CON UNATEXTURA APLICADA.

Page 5: Mundo 3 d

29POWERUSR

cifra que es el promedio, al día de hoy, dela memoria principal en nuestros equipos.Pero si bien el proceso de iluminar vérti-ces por hardware fue un gran avance, alpoco tiempo dejó de ser suficiente. Seprecisaba una flexibilidad mayor, pero...¿cómo saber qué operaciones implemen-tar en una GPU, si las necesidades po-drían ser distintas? Pues permitiendo quecada desarrollador escribiera el programaque manipulara los vértices a su gusto.Por ejemplo, ¿cómo podríamos imple-mentar que un conjunto de vértices semoviera dentro de un rango de posicio-nes en función del tiempo? Utilizando elpipeline prefijado, deberíamos modificarel valor de cada vértice antes de ingresaren él, o modificar la matriz de mundopor cada vértice que tuviera un valor es-pecífico. Ambos métodos son factiblespero poco eficientes, pues requieren unuso notable de la CPU. Mejor sería poderhacer la cuenta del cálculo del desplaza-miento de la posición de cada vértice enel pipeline y, mejor aún, liberar a la CPUde dicho cálculo.El pipeline programable nos permite es-pecificar (mediante un lenguaje especia-lizado para tal fin) un programa que

procese el vértice en función de sus ne-cesidades. Estos pequeños programas re-ciben el nombre de shaders; más especí-ficamente, cuando trabajan con vértices,vertex shaders, y cuando lo hacen conpixeles, pixel shaders.

PIXEL Y VERTEX SHADERSLos dispositivos de video con pixel yvertex shaders son moneda corriente enel mercado de las placas de video actua-les; casi todos los juegos AAA modernoshacen uso de esta característica de algúnmodo, y hasta algunos, recientemente,comenzaron a exigir que esta caracterís-tica estuviera presente para poder iniciarsu ejecución.La característica básica de esta nuevatecnología consiste en una GPU progra-mable. Con los vertex shaders es posible

especificar un pequeño programa que to-me al vértice entrante y lo manipule a sugusto. De este modo, se pueden efectuarcálculos aritméticos arbitrarios tomandocomo materia prima vértices (en el casode vertex shaders) y pixeles (en el casode pixel shaders).La versión 9.0c de DirectX permite utilizarla versión 3.0 del set de instrucciones depixel y vertex shaders. En ella se incorporamayor cantidad de instrucciones aritméti-cas, mayor cantidad de registros y mayorcantidad máxima de instrucciones porprograma que en versiones anteriores.DirectX 9 puede emular el uso de vertexshaders cuando el hardware necesario noestá presente, mediante una capa de emu-lación vía software. Claro que lo hace conuna performance notablemente inferior ala implementación en GPU.

VERTEX SHADERS: REGISTROS DE ENTRADARegistro Descripción Cantidad en VS 1.1 Cantidad en VS 2.0 Cantidad en VS 2.xa0 Direccionamiento 1 1 1c# Constante (tipo float) 96 (como mínimo) 256 (como mínimo) 256 (como mínimo)v# Entrada 16 16 16r# Temporal 12 12 12 (como mínimo)b# Constante (tipo bool) - 16 16i# Constante (tipo int) - 16 16aL Contador de bucle - 1 1p0 Predicado - - 1

VERTEX SHADERS: REGISTROS DE SALIDARegistro Descripción Cantidad en VS 1.1 Cantidad en VS 2.0 Cantidad en VS 2.xoPos Posición 1 1 1oFog Niebla 1 1 1oPts Tamaño punto 1 1 1oD# Color 2 (difuso y especular) 2 (difuso y especular) 2 (difuso y especular)oT# Coordenadas de textura 8 8 8

■ DirectX 8.0: primer soporte a pixel y vertex shaders. Se soportaron las versiones 1.0 y 1.1 de pixel shader, y las versiones 1.0 y 1.1 de vertex shader.

■ DirectX 8.1: no hubo cambios en vertex shaders. Se agregó soporte para versiones1.2, 1.3 y 1.4 para pixel shaders.

■ DirectX 9.0: se agregó soporte para pixel y vertex shaders 2.0.■ DirectX 9.0c: se agregó soporte para pixel y vertex shaders 3.0.

* Nota: En la versión 3.0 de VS los registros de salida son 12 y son generales; se dejó de lado la especificación del tipo, y ahora el sistema es más flexible y pueden utilizarse según conveniencia.

VERSIONES DE SHADERS EN DIRECTX

Page 6: Mundo 3 d

EL PIPELINE COMPLETO

30 POWERUSR

os vertex shaders operan sobrevértices o, mejor dicho, la salidade la operación de un vertex

shaders es un vértice en formato homo-géneo, listo para ser enviado a la etapade clipping y reescalado.Un vertex shader no puede crear ni des-truir geometría (no puede crear vértices nitampoco puede eliminarlos). Opera con unvértice a la vez y puede manipular la geo-metría existente modificando propiedadesdel vértice manipulado.Un pixel shader especifica el color en unpixel; usualmente, recibe como entradacoordenadas de textura.Existe cierta independencia en el uso depixel o vertex shaders. Por lo general, losvertex shaders hacen modificaciones en lageometría, como ciertas transformacionespara crear efectos específicos (como pe-queñas olas en el agua), mientras que lospixel shaders se utilizan, principalmente,para realizar cálculos arbitrarios de ilumi-nación (como la iluminación por pixelestan frecuente en los juegos actuales, comoDoom 3 y Far Cry).

VERTEX SHADERSLos vertex shaders podrían reemplazar almotor de transformación e iluminaciónprefijado que existía en el pipeline tradi-cional utilizado por OpenGL o Direct3D.Nuestra aplicación podría utilizar ambospara distintos vértices, pero no para elmismo, ya que se excluyen mutuamente(ver figura del pipeline completo). Debidoa que los vertex shaders reemplazan al

motor TnL, se infiere que deberían produ-cir la misma salida; en otras palabras, elvertex shader recibirá un vértice y deberáentregar un vértice, en una relación es-tricta de uno a uno; no podrá cambiar lacantidad final de vértices.La entrada a un vertex shader es uno omás vértices e información de estados delpipeline (existen estados de renderizaciónque pueden modificar el modo en que seproduce la salida). La salida es la posiciónen espacio de recorte (clipping) y el restode la información usual del vértice enfunción de su formato (color, coordenadasde textura, etc.).

ARQUITECTURA DE LOS VERTEX SHADERSEl vertex shader es un programa que to-mará como entrada un vértice, y dejaráa la salida:

■ Un vértice en espacio de recorte■ Un color de vértice (en función del formato de vértice)■ Coordenadas de texturas (en funcióndel formato de vértice)■ Intensidad de niebla (opcionalmente)■ Tamaño de punto (en función del for-mato de vértice)

Como mínimo, el programa del shaderdeberá tomar el vértice y realizar unatransformación que lo lleve de espaciolocal a espacio de recorte. Luego, el vér-tice contendrá información opcional queestará de acuerdo con el formato de vér-

LOS SHADERSO P E R A D O R E S P R O G R A M A B L E S

tice y el estado de renderización.Veamos sólo un poco de código de unvertex shader que realice esta operaciónmínima:

dp4 oPos.x, v0, c0dp4 oPos.y, v0, c1dp4 oPos.z, v0, c2dp4 oPos.w, v0, c3

En este caso, hemos empleado lenguajeensamblador de la GPU, y no, HLSL.Quienes conozcan algo de ensambladorpara cualquier microprocesador notaránuna sintaxis familiar: un mnemónico re-presentando la operación por realizar, uncomponente sobre el cual se realiza laoperación (en este caso, componentes deun registro de salida) y luego argumen-tos de la operación.

■ dp4: operación por realizar, significa“producto punto de cuatro componentes”.■ oPos: registro de salida del vértice (esun vector de cuatro componentes)■ v0: registro de entrada, desde donde to-mamos el vértice con el cual trabajamos.■ c0..c3: constantes (vectores de cuatrocomponentes cada una de ellas).

Esquematizando la operación, lo que he-mos hecho es lo que se puede apreciar enla figura de la página siguiente. Es decir,hemos multiplicado el vértice entrante poruna matriz construida a partir de cuatrovectores constantes. La salida fue coloca-da en un registro de salida.

SIEMPRE HABLAMOS DE LOS SHADERS Y DE SU IMPORTANCIA EN LAS TARJETAS DE VIDEO ACTUALES.LO QUE NUNCA COMENTAMOS ES COMO SE COMPONEN INTERNAMENTE Y DE QUE MANERA LOSUTILIZAN LOS PROGRAMADORES DE JUEGOS PARA CREAR SUS MARAVILLAS. EN ESTAS PAGINAS NOSMETEREMOS DENTRO DE LOS PIXEL Y VERTEX SHADERS, Y LOS MOSTRAREMOS EN DETALLE.

L

Frame bufferblending

Primitiva deteselación de

alto nivel

Información devértices

Vertex shader

Motor deiluminación y

transformación(TnL)

Recorte yreescalado

Pixel shader

Multitexturadode DirectX 6/7

Blending deniebla

Testeo deAlpha, Stencil y

Depth

Page 7: Mundo 3 d

REGISTROS DE ENTRADA, TEMPORALES Y DE SALIDA,QUE SE PUEDEN UTILIZAR EN UN VERTEX SHADER.

REGISTROS DE ENTRADA, TEMPORALES Y DE SALIDAQUE PUEDEN UTILIZARSE EN UN PIXEL SHADER.

PIXEL SHADERVERTEX SHADER

La interfaz más general de las dos es la de vertex shaders. Pormedio de ella, el programador podrá usar instrucciones paraespecificar las operaciones que realizará el dispositivo de videocon los vértices entrantes.La interfaz de pixel shaders es un poco más complicada y po-see ciertas restricciones que hay que tener en cuenta. La másimportante es que los pixel shaders sólo pueden ejecutarse enun hardware que los soporte; por lo tanto, si deseamos crearjuegos que utilicen esta funcionalidad y que, al mismo tiempo,funcionen en equipos no programables, deberemos realizar másde un flujo de ejecución.Hasta el momento, para hacer uso de estas facilidades el progra-mador debía escribir el código en el lenguaje ensamblador de laplaca de video sobre un procesador de textos. Naturalmente (y co-mo era de esperar), comenzaron a implementarse herramientas queayudan al programador en esta tarea: entornos que facilitan lacreación de efectos y lenguajes de alto nivel que luego son tradu-cidos al lenguaje ensamblador de la placa de video en cuestión.

PROGRAMACION EN ENSAMBLADOREn una época, los juegos se programaban en lenguaje ensambla-dor. Este lenguaje consiste en instrucciones de procesador de ba-jo nivel, que luego se traducen en código binario y, finalmente,son ejecutadas por el microprocesador. Programar directamenteen el lenguaje que entiende la máquina posee muchas ventajas:tendremos control absoluto del modo en que se administran losregistros (“posiciones de memoria” que se pueden leer y escribirde manera muy veloz, porque son locales al microprocesador).La gran desventaja es que programar en ensamblador es compli-cado. Veamos un programa sencillo en este lenguaje:

mov AX, algún_número ; asigna un número cualquiera al registro AX

cmp AX, 5 ; compara el contenido del registro AX con el número 5

je true ; si la comparación fue existosa salta a la etiqueta “true”

mov CX, 2 ; asigna el número 2 al registro CX

PIXEL SHADERSLos pixels shaders reemplazan las operaciones de multitextura-do fijas del pipeline prefijado. Para entender mejor cómo fun-cionan los pixels shaders hay que comprender el modo de fun-cionamiento dual que posee el pipeline de texturas. Tradicio-nalmente, dos caminos corren en paralelo manejando operacio-nes de color (vector pipe) y alpha (escalar pipe). El resultado deestas operaciones se mezcla al final, y termina en la especifica-ción de un color con componente alpha.Dentro del pixel shader se pueden realizar operaciones aritméti-cas (con valores de coordenadas de texturas) y operaciones contexturas (haciendo uso de una coordenada de textura). De todosmodos, más allá de la operación realizada, la salida debe seruna estructura de color con componentes RGBA (Red, Green,Blue, Alpha: Rojo, Verde, Azul y Alpha).

ARQUITECTURA DE LOS PIXEL SHADERSUn pixel shader toma un color como entrada, una textura decoordenada (o más) y una textura activa, y produce un valorRGBA de salida. Es posible ignorar los estados de etapas detexturas que están fijados. De hecho, es posible ignorar lascoordenadas de texturas especificadas y fijar el color de mane-ra arbitraria. Lo que podrá cambiar el color fijador de lo queveremos en pantalla será el estado del render state relacionadoa la niebla (recordemos que blending de niebla es una etapaposterior al pixel shader).Por lo general, un programa de pixel shaders es más pequeñoque uno de vertex shaders, simplemente, debido a las operacio-nes que suelen entrar en juego.

HLSLLos dispositivos de video programables que existen hoy son lasGeForce#3 y superiores (exceptuando la GeForce#4 MX), y lasATI Radeon 8500 y superiores.Sin embargo, la capacidad de programación de todas estas pla-cas está fuertemente relacionada con el modo por el cual se ac-cede a estas funcionalidades, por medio de la interfaz de vertexshaders y pixel shaders de DirectX 8 (DX8) y DirectX 9 (DX9).

31POWERUSR

r0 t0Etapa 0

Etapa 1

Etapa 2

Etapa 3

t1

t2

t3

r0

r1

c0

c1

c7

v15

Unidad deprocesamiento

de píxeles

registros de salida pixel de salida

registrostemporales

registros de vértices

registrostemporales constantes

constantes

registro dedirecciones

(VS 1.1 ysuperiores)

v0 v1

c95

c1

c0

a0

oToDn

r11

r1 Unidad deprocesamiento

de vértices

v0

Page 8: Mundo 3 d

32 POWERUSR

jmp end ; salta a la etiqueta “end”true: mov CX, 1 ; asigna el número 1 al registro CXend:

El mismo programa, en lenguaje C, se escribiría del siguiente modo:

a = algún_número; // asigno un número cualquiera a la variable ‘a’

if (a == 5 // ¿es igual a 5?b = 1; // asigno el número 1 a la variable ‘b’b = 2; // asigno el número 2 a la variable ‘b’

Naturalmente, el código escrito en C es mucho más legible queel escrito en código ensamblador. De hecho, el código ensam-blador requiere de una documentación mucho más precisa, yaque entender cuál es el propósito de un trozo de código, sin es-tar contextualizado en el problema, resulta muy complicado.Otra ventaja de C es que el lenguaje no está atado a ningúnmicroprocesador en particular. Existe un compilador que se en-carga de realizar dicha tarea. Por lo tanto, podemos escribir có-digo C y luego recompilarlo en distintas plataformas.

HIGH-LEVEL SHADER LANGUAGESSe podría decir que HLSL es al ensamblador de los VS/PS (ver-tex shaders/pixel shaders) lo que el lenguaje C es al ensambla-dor de la CPU. Veamos qué código de VS se requiere para reali-zar una transformación de vértices sencilla:

mov r0, c0 ; copia el registro constante c0 al temporal r0mov r1, v2 ; copia el registro entrante v2 al temporal r1dp3 r2, r0, r1 ; realiza un dot product entre los registros r0

y r1 y coloca el resultado en r2mov r3, c1 ; copia registro constante c1 al temporal r3 max r0, r2, r3 ; clampea valor de r0 al máximo entre r2 y r3mov oD0, r0 ; escribe |en registro de salida de color oD0 el

valor del registro temporal r0

Con HLSL, en cambio, deberíamos escribir:

float4 lightdirection = constant[0]; OUT.Diffuse = max(dp3(IN.Normal, lightdirection), 0 );

Nuevamente, el lenguaje de alto nivel permite realizar las mis-mas operaciones en menos pasos, mantener la legibilidad enniveles razonables y desprenderse de características específicasdel hardware. Claro que en lo que respecta a la legibilidad, elproblema se reduce un poco debido a que los programas deVS/PS no suelen poseer muchas líneas de código.Lo que se debe tener en cuenta es que, a pesar de estar realizandouna programación en un nivel más alto, las limitaciones de hard-ware siguen existiendo. En versiones de VS inferiores a la 2, lacantidad de instrucciones máxima y la cantidad de registros pue-den ser un inconveniente; además, no existen instrucciones decontrol de flujo de ejecución (condicionales, bucles, etc.).

Si estamos codificando en ensamblador de Vertex Shader/PixelShader, usualmente estaremos más en contacto con las limita-ciones de hardware, ya que la programación está estrechamenterelacionada a las características del dispositivo. Codificando enalto nivel, estas limitaciones podrían saltearse e incurrir fácil-mente en errores de programación. El lado negativo es similar al existente en la programación tra-dicional en alto nivel contra la programación en ensambladorde CPU, y es la optimización. Un compilador podrá traducirnuestro código no de la mejor manera posible, cuando una mul-tiplicación y una adición expresada en HLSL podrían ser tradu-cidas a instrucciones de multiplicación (mul) y adición (add) in-dependientes o, tal vez, a una sola instrucción que realizaraambos procesos en una sola operación (mad). Esta situación re-dundará en mayor uso de GPU del necesario y, finalmente, enmenor cantidad de cuadros por segundo para nuestro juego.

RENDERMONKEYRenderMonkey es una aplicación creada por la compañía diseña-dora de procesadores gráficos ATI Technologies que puede des-cargarse libremente desde el sitio oficial. Es importante destacarque no es un lenguaje, como suele pensarse comúnmente, sinouna herramienta pensada para ayudar a los artistas y/o progra-madores a crear shaders.Si alguien desea crear un shader y verlo en acción, deberácrear un framework que realice la carga de la geometría, textu-ras, pase las constantes al shader, etc. Todo este trabajo es rea-lizado por RenderMonkey, por lo que quien quiera crear unefecto deberá concentrarse solamente en su programación espe-cífica del vertex y pixel shader, y no, en aplicaciones auxilia-res. Además, la aplicación permite modificar elementos viendosu consecuencia en tiempo real.Si quieren obtener más información respecto a RenderMonkey,recomiendo visitar www.ati.com/developer/rendermonkey.

EN ESTA CAPTURA DE PANTALLA VEMOS A RENDERMONKEY,LA HERRAMIENTA PARA CREAR SHADERS, EN ACCION.

Page 9: Mundo 3 d

34 POWERUSR

E L F U T U R O C E R CA N O

to a la placa de video que poseerá laPlayStation 3, NVIDIA anunció en di-ciembre de 2004 que firmó un acuerdocon Sony para encargarse de desarrollarla nueva GPU de la consola, que poseeráuna variante de la tercera generación desus aceleradoras gráficas.

XBOX 360La nueva consola de Microsoft utilizarátres microprocesadores IBM PowerPC co-rriendo a 3,2 GHz, cada uno con dos hilosde ejecución, 32 KB de caché L1 de datosy 32 KB de instrucciones; los tres compar-tirán una caché de 1 MB del tipo L2.La consola poseerá 512 MB RAM del tipoGDDR3, y el disco rígido ahora será unopcional (recordemos que la primera Xboxincluía disco duro, característica que incre-mentaba el peso, el ruido, el consumo y elcosto del sistema). Este disco será fácil-mente desmontable —para poder ser trasla-dado a la consola de un amigo con losjuegos almacenados en él— y, en principio,se ofrecerá con 20 GB de capacidad.El avance de las partidas también podráser almacenado en tarjetas de memoriaque van de 64 MB a 1 GB.La placa de video que poseerá la consolaya no será NVIDIA sino ATI, corriendo a500 MHz con 10 MB integrados de DRAM.Los controles de juego serán inalámbricos

LAS CONSOLAS DE JUEGOS DE PROXIMA GENERACION

¿LA PLAYSTATION 3? ¡NO! UN CLASICODISEÑO FALSO DE LOS VARIOS QUECIRCULAN POR LA RED.

ESPECIALMENTE EN NORTEAMERICA, LAS CONSOLAS DE JUEGOS SON MAS POPULARES QUE LAS PC, NO SOLO PORSU PODER DE PROCESAMIENTO, SINO TAMBIEN POR SU ECONOMIA Y COMODIDAD. POR ESO, CON EL ADVENIMIENTODE LAS NUEVAS CONSOLAS, NO PODIAMOS DEJAR DE MENCIONAR LO QUE SE VIENE EN ESTE AMBITO

l mercado de las consolas de jue-gos mueve muchísimo dinero. Porlo tanto, no debería sorprendernos

la importancia que le brindan a esta uni-dad de negocio las principales empresasque dominan el mercado (Sony, Micro-soft y Nintendo). Sólo en el año 2004 sevendieron un total de 25 millones deconsolas en todo el mundo.Las consolas siempre se han caracteriza-do por ser muy avanzadas tecnológica-mente, al menos cuando son lanzadas almercado. En un principio, los gráficosson increíbles, mucho mejores de lo quepuede verse en el mundo de las PCs. Pe-ro luego, los nuevos modelos de CPU yGPU que se ofrecen como partes inde-pendientes para computadoras alcanzany superan holgadamente a las consolas.Debido a que el ciclo de vida de unaconsola de juegos es de alrededor de cin-co años, podríamos establecer que lasconsolas actuales ya son piezas antiguas.Este año en particular presenciaremos ellanzamiento de una nueva generación deconsolas. Cuando esta revista se encuen-tre en los kioscos, Microsoft ya habrápresentado internacionalmente la nuevaXbox 360 en un programa especial emi-tido por el canal MTV. Una semana des-pués, Sony hará lo propio en la exposi-ción de entretenimiento electrónico másimportante del mundo (E3), introducien-do lo que será la PlayStation 3.Mucho se ha escrito

en distintos sitios de la red respecto aestos nuevos y extraordinarios juguetestecnológicos. También se vieron muchos“posibles” diseños de ellos, aunque casitodos eran fakes (falsos).Las noticias verdaderas se mezclan conlas falsas, y hasta el sitio más creíble sehace eco de rumores cuando no hay su-ficiente información para presentar y laexpectativa es grande. Por lo pronto, pa-semos en limpio la información oficialque se maneja para las consolas de nue-va generación más importantes.

PS3 Y SU EXTRAORDINARIO CEREBROSony, Toshiba e IBM han estado trabajan-do de manera mancomunada para crear loque será el nuevo microprocesador de laconsola PlayStation 3, que, además, ten-drá otra infinidad de usos.Su nombre es Cell y ya se oficializaronvarias de sus características. El micropro-cesador correrá a 4,6 GHz, lo cual no espoco teniendo en cuenta lo difícil que leestá resultando a Intel sobrepasar la ba-rrera de los 4 GHz para su familia de pro-cesadores. Estará compuesto por 234 mi-llones de transistores, casi el doble de lacantidad que componen los últimos proce-sadores Intel Pentium 4. En la próximaedición podremos encontrar un artículomuy completo que analiza esta auténtica

maravilla de la computación.Por otro lado, respec-

E

XBOX, LA PRIMERACONSOLA DE MICROSOFT.

Page 10: Mundo 3 d

36

(hasta cuatro por consola), aunque tam-bién se permitirá la conexión de controlescon cable. Poseerá tres puertos USB 2.0 yuna unidad de DVD dual layer (y no untipo de unidad de nueva generación comoBlu-Ray como se había especulado en unprincipio); los formatos soportados seránDVD-video, DVD-ROM, DVD-R, DVD-RW,CD-DA, CD-ROM, CD-R, CD-RW, WMACD, MP3 CD y JPEG Photo CD.En resumen, las especificaciones de lanueva consola de Microsoft no sorpren-dieron demasiado a quienes venían si-guiéndole la pista, ya que, básicamente,eran las que se rumoreaban. Por otro la-do, le empresa no innova demasiado enninguna característica técnica de hard-ware, y aunque es cierto que tres micro-procesadores PowerPC es bastante máspoder de CPU que el que posee la PC deun gamer, es mucho menos de lo queofrecerá la nueva consola de Sony.

NINTENDO REVOLUTIONDe la nueva consola de Nintendo es dela que menos información oficial existe.A ciencia cierta, sólo se conocen algunosdatos emitidos por el presidente de la fir-ma, Satoru Iwata.Lo que está claro es que la consola in-tentará revolucionar la experiencia ga-ming por medio del modo de controlar eljuego. Existieron rumores —que no fue-ron confirmados— respecto a que el con-trol incluiría un touch pad configurable

para facilitar el manejo de tiposde juegos no muy populares aldía de hoy en las consolas (porejemplo, juegos que en la PCsse suelen manejar con mouse,como los de estrategia y los deacción en primera persona).Respecto a esto, Satoru Iwataprefirió guardar silencio, ya queargumentó que las interfaces deusuario pueden ser imitadas fá-cilmente por los competidores.La realidad es que Nintendo Ga-meCube ha vendido menos de loplaneado, al menos en el mundooccidental, y muchos pronosti-can que Revolution será la pró-xima DreamCast (consola de SEGA que fue discontinuada porvender menos unidades de lasesperadas). Sin embargo, habráque darle crédito a Nintendo,que hace ya muchos años se en-cuentra en este rubro y ha de-mostrado, de sobrada manera,que sabe cómo manejarse ensituaciones adversas. ■

ASI SE VE LA CONSOLA XBOX 360 DE MICROSOFT.

GLOSARIO DE TERMINOS

■ API (Application Programming Interface):Interfaz definida por un programa o libreríapor medio de la cual es posible acceder alas funcionalidades que implementa.

■ Direct3D: Subsistema de DirectX,encargado de crear gráficos en 3D entiempo real y de un modo eficiente.

■ DirectX: Conjunto de componentesdesarrollado por Microsoft para serutilizado en la creación de juegos yaplicaciones multimedia de altodesempeño. Haciendo uso de estaherramienta, podremos crear gráficos 2D y 3D; sonidos, música y efectos; yaplicaciones de red, como los juegosmultijugador, además de manejardispositivos de entrada como teclado,mouse, joystick, volante, gamepad, etc.

■ E3 (Electronic Entertainment Expo):Exposición anual de entretenimientoelectrónico realizada exclusivamente paramedios periodísticos, que se lleva a caboen los Estados Unidos. En este evento sesuelen presentar las novedades másimportantes del año en materia de juegos y hardware relacionado.

■ GPU (Graphics Processing Unit): Nombre que se le otorga almicroprocesador de la placa de video.

■ HLSL (High-Level Shader Language):Lenguaje de alto nivel que permiteespecificar el programa (shader) queejecutará una GPU programable. Dichoprograma también podría ser escrito enlenguaje ensamblador (del GPU), pero estosuele ser más complejo y se relaciona másfuertemente a una arquitectura específica.

■ Juegos AAA: Juegos que fueron creadoscon un gran presupuesto y poseen altacalidad de producción. Se distribuyen demanera masiva por los canales de ventatradicionales (mostrador, pre-venta) a unprecio superior a U$S 40 (por ejemplo, Half-Life 2, Doom 3, Far Cry, The Sims).

■ OpenGL: Librería gráfica 3D creada porSilicon Graphics Incorporated (SGI). Hoy endía es un estándar abierto de la industria.

EL LIBRO DE PASES ESTA ABIERTO

Recordemos que NVIDIAfue la encargada dedesarrollar la GPU de laprimera consola deMicrosoft (Xbox). Microsofttambién está desarrollandosu nueva consola, pero suGPU ya no será de NVIDIAsino de su competencia, ATI.

ESTA ES LA GAMECUBE DENINTENDO.

POWERUSR