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

RED-Mundo 3D

Embed Size (px)

DESCRIPTION

El mundo del 3D

Citation preview

  • No es novedad escuchar que la tecnologaavanza rpidamente, y este dicho, en el

    mundo 3D, est lejos de ser una excepcin. Quien no haya jugado aun videojuego en los ltimos dos aos se sorprender muchsimo al ver cunto

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

    En 1992 salieron al mercado Wlfestein 3D y Alone in the Dark, dos exponentes de ttulos en tresdimensiones que marcaran el comienzo de una poca. Claro que aquellos juegos distan mucho de lo quepodemos encontrar hoy en da en las consolas de ltima generacin, pero experimentar la sensacin que nos otorgaban haca evidente que la era de los juegos 2D estaba llegando a su fin.Desde el punto de vista tcnico, un juego 3D (si bien comparte muchas de las caractersticas de uno 2D) es un mundo nuevo, especialmente en el apartado grfico. Los personajes ya no son sprites sino modelosconformados por polgonos y recubiertos de texturas; los escenarios dejaron de ser mapas armados a partirde pequeos bitmaps, y ahora son autnticas 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 partculas 3D, etc.En esta nota, introduciremos algunos de los conceptos ms importantes que maneja la tecnologa 3D y veremossu aplicacin al desarrollo de videojuegos. Tambin analizaremos cules son los dispositivos que hoy se puedenencontrar en el mercado y cules son las consolas de videojuegos que anhelaremos en unos pocos meses.Pero, para lograrlo, vamos a ver un poco cmo fue avanzando este mercado, sumergindonos en la historiareciente de los adaptadores de video.

    Diego Ruiz | [email protected]

    24 POWERUSR

  • 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 ms complejas (principalmente, juegos). Dejaronde ser estpidos esclavos que slo lean una porcin desu memoria para generar la seal 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, clsicamente, se hacan por software, razn por la cuallas aplicaciones 3D se ejecutaban con ms velocidad.

    EL INICIO DE LA ERA 3DEn estas pginas pretendemos remitirnos ms a las genera-ciones y arquitecturas de dispositivos que a los modelos es-pecficos que cada empresa saca al mercado cada seis me-ses. Sin embargo, existen hitos que son marcados especfi-camente por una u otra firma, y que no pueden quedar almargen. Un ejemplo de lo expresado es el caso de la difuntacompaa 3Dfx Interactive (ver recuadro).La primera generacin de procesadores de video inteligentesconsisti en la implementacin de un grupo de operacionesprefijadas por medio de las cuales se procesaba una serie devrtices que luego finalizaran representando polgonos 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 detransformacin e iluminacin (Transformation and Lighting),ms conocida popularmente por su abreviatura, TnL.Para comprender un poco mejor cmo 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 ms popular era elMDA (un fabricante muy popular de aquel enton-

    ces era la empresa Hercules), un dispositivo que ofrecauna resolucin de 720x350 y era monocromtico.Luego, lleg el momento del color. Al comienzo, con dis-positivos modestos como el clsico CGA (Color GraphicsAdapter), que brindaba tan slo cuatro colores con unaresolucin de 320x200 (alcanzaba 640x480 en modo mo-nocromtico). Y tras l, el dispositivo EGA (EnhancedGraphics Adapter), que ofreca 16 colores en una ya de-cente resolucin 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 ofreca 256 colores en resolucin de320x200; el SVGA (Super Video Graphics Adapter), porsu parte, dependa de la cantidad de memoria que poseala placa. A partir de este punto, ingresamos en la historiareciente de las placas de video.

    LA MEMORIA DE VIDEOCuando las placas SVGA eran las ms populares dentrode nuestros flamantes gabinetes mini tower, la caracte-rstica ms importante del dispositivo era la cantidad dememoria que posea. A mayor memoria, mayor cantidadde colores y mayor resolucin para deleitarnos la vista.Con 1 MB de RAM en nuestra placa de video, podamosllegar a una resolucin 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-tacin lgica de lo que se vea 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 ms popular de Atari fue la gloriosa Atari 2600. Una de las razonesde su xito fue su bajo costo de fabricacin. 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 slo parados lneas de video. Los programadores debaningenirselas para escribir, de modo sincronizado, elbarrido vertical, y as crear en pantalla la imagen que eljuego necesitara en cada momento. La consola Atari 2600tena un procesador 6507 de 8 bits (1,19 MHz), 128 bytes de RAM,4 KB mximos de ROM, una resolucin en pantalla de 192x160pixeles y 16 colores (4 simultneos en pantalla). El primer modelosali a la calle en 1978, y el ltimo el Atari 2600 Jr., en 1986 (aunquerecientemente se lanz, para los nostlgicos, una pequea consolita Atari2600 dentro de su clsico joystick con diez juegos incluidos).

    LA VCS (VIDEOCOMPUTER SYSTEM)

    ATARI 2600.

  • PLACAS DE ULTIMA GENERACIONCaracterstica 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/sVrtices 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. resolucin 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 efmero que es el xito; muchos nola vieron venir. Se form en el ao1994, y en 1998 ya era duea casi totaldel mercado de aceleradoras 3D.Lo curioso del caso es que 3Dfx, en unprincipio, ofreca un dispositivo queera un complemento para el adaptadorde video principal del sistema. Por lotanto, una PC con los modelos deplacas Voodoo Graphics o Voodoo2requera una placa de videoconvencional para realizar el trabajoen escritorio de Windows. Adems,slo aceleraba aplicaciones enpantalla completa que hicieran uso desu API de programacin (Glide) yofreca una profundidad de colores denicamente 16 bits.Aun as, 3Dfx Interactive se convirtien el lder del mercado y entr en la

    fase ms compleja: mantenerse en lacresta de la ola.A mediados de 1999 sac al mercadoel modelo Voodoo3, que arremetacontra la mayor cantidad de defectosque se les poda achacar a los modelosanteriores, pero ya no estaba solo:NVIDIA poco a poco se converta 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 haba finalizado su flamanteGeForce: la suerte estaba echada.3Dfx Interactive tom malasdecisiones estratgicas 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 versin Ultra), mientras que

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

    trabajan las libreras 3D ms popula-res, como es el caso de OpenGL yDirect3D, ya que stas se desarrollanparalelamente al hardware, a talpunto que en algunos no es fcil de-terminar cul empuja a cul. De estohablaremos en las prximas pginas.

    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 tecnologa grfica.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 ms 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, mscalor, mayor tamao de placa, etc.Ambas empresas diferencian a losmercados de alto desempeo (highend) de aquellos ms modestos (low

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

  • 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 polgonos (ms especfica-mente, tringulos), los cuales, a su vez, seencuentran formados por vrtices.Cada vrtice de un objeto en particular(por ejemplo, un personaje del juego) estdefinido 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 serinmerso. Como es posible inferir, existeuna conversin de un espacio a otro quealguien debe realizar; al mismo tiempo,todos los vrtices debern ser reorientadosdentro de una escena para que sta seavisualizada desde un punto en particular(como si se tratara del ojo de una cma-ra). Entonces, se definen ciertos linea-mientos con los cuales se procesarn losvrtices y se facilitar la operacin conellos en los usos ms comunes.El pipeline prefijado establece (como sepuede apreciar en la figura de la pgina30) una serie de operaciones que se reali-zarn sobre cada vrtice entrante (de cadatringulo, de cada objeto del juego).

    ETAPA 1: PROCESAMIENTO DE VERTICESEl pipeline se alimenta de vrtices. Cadauno es convertido en coordenadas ho-mogneas para, luego, poder ser multi-plicado por tres matrices: la matriz demundo, la de vista y la de proyeccin.Luego, la coordenada resultante es rees-calada en funcin del punto de visuali-zacin 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 visualizacin, es eliminada. Finalmente, el vrtice es transferido alproceso de rasterizacin, 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 unatransformacin que va del espacio del

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

    La matriz de vista: esta segunda matrizreubica todos los objetos en funcin deun punto de visualizacin especificado.

    La matriz de proyeccin: especifica,principalmente, la escala y la perspecti-va adoptadas. Esta matriz determinar,tambin, cunto vemos de la escena, esdecir, el volumen de visualizacin.

    Es importante entender que el uso dematrices es un recurso matemtico crea-do para simplificar la manipulacin devrtices. Con ellas es muy sencillo mo-dificar la posicin, la orientacin y laescala de stos.Una vez que el vrtice ha sido procesa-do, si se mantiene dentro del volumende visualizacin predefinido, pasar auna segunda etapa: la rasterizacin.

    ETAPA 2: LA RASTERIZACIONEn la rasterizacin se pintan los vrti-ces, y para hacerlo se utiliza una ecua-cin en la cual participan varios elemen-tos, como el color del vrtice, las lucesde la escena que lo afectan, la normalque especifica el vrtice en cuestin y elmaterial activo que corresponda. Luego,se rellena todo el tringulo, realizandouna interpolacin de los colores de cadavrtice que lo conforman.Un objeto 3D tambin puede estar cu-bierto por una textura, que es, bsica-mente, un mapa de bits con ciertas pro-piedades. Las texturas, para poder seraplicadas a la geometra, deben estarcargadas en memoria de video. De estemodo, ya no son slo utilizadas comovideo buffer. Este uso secundario es,hoy en da, la principal razn para optarpor tarjetas de mayor memoria: una pla-ca de video con ms memoria podr al-bergar ms texturas, y de mejor calidad.Las placas de ltima generacin 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.

  • 29POWERUSR

    cifra que es el promedio, al da de hoy, dela memoria principal en nuestros equipos.Pero si bien el proceso de iluminar vrti-ces por hardware fue un gran avance, alpoco tiempo dej de ser suficiente. Seprecisaba una flexibilidad mayor, pero...cmo saber qu operaciones implemen-tar en una GPU, si las necesidades po-dran ser distintas? Pues permitiendo quecada desarrollador escribiera el programaque manipulara los vrtices a su gusto.Por ejemplo, cmo podramos imple-mentar que un conjunto de vrtices semoviera dentro de un rango de posicio-nes en funcin del tiempo? Utilizando elpipeline prefijado, deberamos modificarel valor de cada vrtice antes de ingresaren l, o modificar la matriz de mundopor cada vrtice que tuviera un valor es-pecfico. Ambos mtodos son factiblespero poco eficientes, pues requieren unuso notable de la CPU. Mejor sera poderhacer la cuenta del clculo del desplaza-miento de la posicin de cada vrtice enel pipeline y, mejor an, liberar a la CPUde dicho clculo.El pipeline programable nos permite es-pecificar (mediante un lenguaje especia-lizado para tal fin) un programa que

    procese el vrtice en funcin de sus ne-cesidades. Estos pequeos programas re-ciben el nombre de shaders; ms espec-ficamente, cuando trabajan con vrtices,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 caracterstica de algnmodo, y hasta algunos, recientemente,comenzaron a exigir que esta caracters-tica estuviera presente para poder iniciarsu ejecucin.La caracterstica bsica de esta nuevatecnologa consiste en una GPU progra-mable. Con los vertex shaders es posible

    especificar un pequeo programa que to-me al vrtice entrante y lo manipule a sugusto. De este modo, se pueden efectuarclculos aritmticos arbitrarios tomandocomo materia prima vrtices (en el casode vertex shaders) y pixeles (en el casode pixel shaders).La versin 9.0c de DirectX permite utilizarla versin 3.0 del set de instrucciones depixel y vertex shaders. En ella se incorporamayor cantidad de instrucciones aritmti-cas, mayor cantidad de registros y mayorcantidad mxima 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-lacin va software. Claro que lo hace conuna performance notablemente inferior ala implementacin en GPU.

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

    VERTEX SHADERS: REGISTROS DE SALIDARegistro Descripcin Cantidad en VS 1.1 Cantidad en VS 2.0 Cantidad en VS 2.xoPos Posicin 1 1 1oFog Niebla 1 1 1oPts Tamao 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 versin 3.0 de VS los registros de salida son 12 y son generales; se dej de lado la especificacin del tipo, y ahora el sistema es ms flexible y pueden utilizarse segn conveniencia.

    VERSIONES DE SHADERS EN DIRECTX

  • EL PIPELINE COMPLETO

    30 POWERUSR

    os vertex shaders operan sobrevrtices o, mejor dicho, la salidade la operacin de un vertex

    shaders es un vrtice en formato homo-gneo, listo para ser enviado a la etapade clipping y reescalado.Un vertex shader no puede crear ni des-truir geometra (no puede crear vrtices nitampoco puede eliminarlos). Opera con unvrtice a la vez y puede manipular la geo-metra existente modificando propiedadesdel vrtice 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 lageometra, como ciertas transformacionespara crear efectos especficos (como pe-queas olas en el agua), mientras que lospixel shaders se utilizan, principalmente,para realizar clculos arbitrarios de ilumi-nacin (como la iluminacin por pixelestan frecuente en los juegos actuales, comoDoom 3 y Far Cry).

    VERTEX SHADERSLos vertex shaders podran reemplazar almotor de transformacin e iluminacinprefijado que exista en el pipeline tradi-cional utilizado por OpenGL o Direct3D.Nuestra aplicacin podra utilizar ambospara distintos vrtices, 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 deberan produ-cir la misma salida; en otras palabras, elvertex shader recibir un vrtice y deberentregar un vrtice, en una relacin es-tricta de uno a uno; no podr cambiar lacantidad final de vrtices.La entrada a un vertex shader es uno oms vrtices e informacin de estados delpipeline (existen estados de renderizacinque pueden modificar el modo en que seproduce la salida). La salida es la posicinen espacio de recorte (clipping) y el restode la informacin usual del vrtice enfuncin de su formato (color, coordenadasde textura, etc.).

    ARQUITECTURA DE LOS VERTEX SHADERSEl vertex shader es un programa que to-mar como entrada un vrtice, y dejara la salida:

    Un vrtice en espacio de recorte Un color de vrtice (en funcin del formato de vrtice) Coordenadas de texturas (en funcindel formato de vrtice) Intensidad de niebla (opcionalmente) Tamao de punto (en funcin del for-mato de vrtice)

    Como mnimo, el programa del shaderdeber tomar el vrtice y realizar unatransformacin que lo lleve de espaciolocal a espacio de recorte. Luego, el vr-tice contendr informacin opcional queestar de acuerdo con el formato de vr-

    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 renderizacin.Veamos slo un poco de cdigo de unvertex shader que realice esta operacinmnima:

    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 notarnuna sintaxis familiar: un mnemnico re-presentando la operacin por realizar, uncomponente sobre el cual se realiza laoperacin (en este caso, componentes deun registro de salida) y luego argumen-tos de la operacin.

    dp4: operacin por realizar, significaproducto punto de cuatro componentes. oPos: registro de salida del vrtice (esun vector de cuatro componentes) v0: registro de entrada, desde donde to-mamos el vrtice con el cual trabajamos. c0..c3: constantes (vectores de cuatrocomponentes cada una de ellas).

    Esquematizando la operacin, lo que he-mos hecho es lo que se puede apreciar enla figura de la pgina siguiente. Es decir,hemos multiplicado el vrtice 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 deteselacin de

    alto nivel

    Informacin devrtices

    Vertex shader

    Motor deiluminacin y

    transformacin(TnL)

    Recorte yreescalado

    Pixel shader

    Multitexturadode DirectX 6/7

    Blending deniebla

    Testeo deAlpha, Stencil y

    Depth

  • 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 ms 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 vrtices entrantes.La interfaz de pixel shaders es un poco ms complicada y po-see ciertas restricciones que hay que tener en cuenta. La msimportante es que los pixel shaders slo 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 msde un flujo de ejecucin.Hasta el momento, para hacer uso de estas facilidades el progra-mador deba escribir el cdigo 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 lacreacin de efectos y lenguajes de alto nivel que luego son tradu-cidos al lenguaje ensamblador de la placa de video en cuestin.

    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 cdigo binario y, finalmente,son ejecutadas por el microprocesador. Programar directamenteen el lenguaje que entiende la mquina 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, algn_nmero ; asigna un nmero cualquiera al registro AX

    cmp AX, 5 ; compara el contenido del registro AX con el nmero 5

    je true ; si la comparacin fue existosa salta a la etiqueta true

    mov CX, 2 ; asigna el nmero 2 al registro CX

    PIXEL SHADERSLos pixels shaders reemplazan las operaciones de multitextura-do fijas del pipeline prefijado. Para entender mejor cmo 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-cin de un color con componente alpha.Dentro del pixel shader se pueden realizar operaciones aritmti-cas (con valores de coordenadas de texturas) y operaciones contexturas (haciendo uso de una coordenada de textura). De todosmodos, ms all de la operacin 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 ms) y una textura activa, y produce un valorRGBA de salida. Es posible ignorar los estados de etapas detexturas que estn 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 ms pequeoque 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 programacin 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 pxeles

    registros de salida pixel de salida

    registrostemporales

    registros de vrtices

    registrostemporales constantes

    constantes

    registro dedirecciones

    (VS 1.1 ysuperiores)

    v0 v1

    c95

    c1

    c0

    a0

    oToDn

    r11

    r1 Unidad deprocesamiento

    de vrtices

    v0

  • 32 POWERUSR

    jmp end ; salta a la etiqueta endtrue: mov CX, 1 ; asigna el nmero 1 al registro CXend:

    El mismo programa, en lenguaje C, se escribira del siguiente modo:

    a = algn_nmero; // asigno un nmero cualquiera a la variable a

    if (a == 5 // es igual a 5?b = 1; // asigno el nmero 1 a la variable bb = 2; // asigno el nmero 2 a la variable b

    Naturalmente, el cdigo escrito en C es mucho ms legible queel escrito en cdigo ensamblador. De hecho, el cdigo ensam-blador requiere de una documentacin mucho ms precisa, yaque entender cul es el propsito de un trozo de cdigo, sin es-tar contextualizado en el problema, resulta muy complicado.Otra ventaja de C es que el lenguaje no est atado a ningnmicroprocesador 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 podra 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 cdigo de VS se requiere para reali-zar una transformacin de vrtices 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 mximo entre r2 y r3mov oD0, r0 ; escribe |en registro de salida de color oD0 el

    valor del registro temporal r0

    Con HLSL, en cambio, deberamos 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 caractersticas especficasdel 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 lneas de cdigo.Lo que se debe tener en cuenta es que, a pesar de estar realizandouna programacin en un nivel ms alto, las limitaciones de hard-ware siguen existiendo. En versiones de VS inferiores a la 2, lacantidad de instrucciones mxima y la cantidad de registros pue-den ser un inconveniente; adems, no existen instrucciones decontrol de flujo de ejecucin (condicionales, bucles, etc.).

    Si estamos codificando en ensamblador de Vertex Shader/PixelShader, usualmente estaremos ms en contacto con las limita-ciones de hardware, ya que la programacin est estrechamenterelacionada a las caractersticas del dispositivo. Codificando enalto nivel, estas limitaciones podran saltearse e incurrir fcil-mente en errores de programacin. El lado negativo es similar al existente en la programacin tra-dicional en alto nivel contra la programacin en ensambladorde CPU, y es la optimizacin. Un compilador podr traducirnuestro cdigo no de la mejor manera posible, cuando una mul-tiplicacin y una adicin expresada en HLSL podran ser tradu-cidas a instrucciones de multiplicacin (mul) y adicin (add) in-dependientes o, tal vez, a una sola instruccin que realizaraambos procesos en una sola operacin (mad). Esta situacin re-dundar en mayor uso de GPU del necesario y, finalmente, enmenor cantidad de cuadros por segundo para nuestro juego.

    RENDERMONKEYRenderMonkey es una aplicacin creada por la compaa disea-dora de procesadores grficos ATI Technologies que puede des-cargarse libremente desde el sitio oficial. Es importante destacarque no es un lenguaje, como suele pensarse comnmente, sinouna herramienta pensada para ayudar a los artistas y/o progra-madores a crear shaders.Si alguien desea crear un shader y verlo en accin, debercrear un framework que realice la carga de la geometra, 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 programacin espe-cfica del vertex y pixel shader, y no, en aplicaciones auxilia-res. Adems, la aplicacin permite modificar elementos viendosu consecuencia en tiempo real.Si quieren obtener ms informacin 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.

  • 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 poseeruna variante de la tercera generacin desus aceleradoras grficas.

    XBOX 360La nueva consola de Microsoft utilizartres microprocesadores IBM PowerPC co-rriendo a 3,2 GHz, cada uno con dos hilosde ejecucin, 32 KB de cach L1 de datosy 32 KB de instrucciones; los tres compar-tirn una cach de 1 MB del tipo L2.La consola poseer 512 MB RAM del tipoGDDR3, y el disco rgido ahora ser unopcional (recordemos que la primera Xboxinclua disco duro, caracterstica que incre-mentaba el peso, el ruido, el consumo y elcosto del sistema). Este disco ser fcil-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 tambin podrser 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 sern inalmbricos

    LAS CONSOLAS DE JUEGOS DE PROXIMA GENERACION

    LA PLAYSTATION 3? NO! UN CLASICODISEO 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 muchsimo dinero. Porlo tanto, no debera sorprendernos

    la importancia que le brindan a esta uni-dad de negocio las principales empresasque dominan el mercado (Sony, Micro-soft y Nintendo). Slo en el ao 2004 sevendieron un total de 25 millones deconsolas en todo el mundo.Las consolas siempre se han caracteriza-do por ser muy avanzadas tecnolgica-mente, al menos cuando son lanzadas almercado. En un principio, los grficosson increbles, 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 aos, podramos establecer que lasconsolas actuales ya son piezas antiguas.Este ao en particular presenciaremos ellanzamiento de una nueva generacin deconsolas. Cuando esta revista se encuen-tre en los kioscos, Microsoft ya habrpresentado internacionalmente la nuevaXbox 360 en un programa especial emi-tido por el canal MTV. Una semana des-pus, Sony har lo propio en la exposi-cin de entretenimiento electrnico msimportante 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 juguetestecnolgicos. Tambin se vieron muchosposibles diseos de ellos, aunque casitodos eran fakes (falsos).Las noticias verdaderas se mezclan conlas falsas, y hasta el sitio ms creble sehace eco de rumores cuando no hay su-ficiente informacin para presentar y laexpectativa es grande. Por lo pronto, pa-semos en limpio la informacin oficialque se maneja para las consolas de nue-va generacin ms 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, adems, ten-dr otra infinidad de usos.Su nombre es Cell y ya se oficializaronvarias de sus caractersticas. El micropro-cesador correr a 4,6 GHz, lo cual no espoco teniendo en cuenta lo difcil 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 prximaedicin podremos encontrar un artculomuy completo que analiza esta autntica

    maravilla de la computacin.Por otro lado, respec-

    E

    XBOX, LA PRIMERACONSOLA DE MICROSOFT.

  • 36

    (hasta cuatro por consola), aunque tam-bin se permitir la conexin de controlescon cable. Poseer tres puertos USB 2.0 yuna unidad de DVD dual layer (y no untipo de unidad de nueva generacin comoBlu-Ray como se haba especulado en unprincipio); los formatos soportados sernDVD-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 venan si-guindole la pista, ya que, bsicamente,eran las que se rumoreaban. Por otro la-do, le empresa no innova demasiado enninguna caracterstica tcnica de hard-ware, y aunque es cierto que tres micro-procesadores PowerPC es bastante mspoder 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 informacin oficial existe.A ciencia cierta, slo 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 incluira un touch pad configurable

    para facilitar el manejo de tiposde juegos no muy populares alda de hoy en las consolas (porejemplo, juegos que en la PCsse suelen manejar con mouse,como los de estrategia y los deaccin 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, habrque darle crdito a Nintendo,que hace ya muchos aos se en-cuentra en este rubro y ha de-mostrado, de sobrada manera,que sabe cmo 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 librerapor medio de la cual es posible acceder alas funcionalidades que implementa.

    Direct3D: Subsistema de DirectX,encargado de crear grficos en 3D entiempo real y de un modo eficiente.

    DirectX: Conjunto de componentesdesarrollado por Microsoft para serutilizado en la creacin de juegos yaplicaciones multimedia de altodesempeo. Haciendo uso de estaherramienta, podremos crear grficos 2D y 3D; sonidos, msica y efectos; yaplicaciones de red, como los juegosmultijugador, adems de manejardispositivos de entrada como teclado,mouse, joystick, volante, gamepad, etc.

    E3 (Electronic Entertainment Expo):Exposicin anual de entretenimientoelectrnico realizada exclusivamente paramedios periodsticos, que se lleva a caboen los Estados Unidos. En este evento sesuelen presentar las novedades msimportantes del ao 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 tambin podra ser escrito enlenguaje ensamblador (del GPU), pero estosuele ser ms complejo y se relaciona msfuertemente a una arquitectura especfica.

    Juegos AAA: Juegos que fueron creadoscon un gran presupuesto y poseen altacalidad de produccin. 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: Librera grfica 3D creada porSilicon Graphics Incorporated (SGI). Hoy enda es un estndar abierto de la industria.

    EL LIBRO DE PASES ESTA ABIERTO

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

    ESTA ES LA GAMECUBE DENINTENDO.

    POWERUSR