Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RED-Mundo 3D
RED-Mundo 3D
ar
POWERUSR
PLACAS DE VIDEO
UN POCO DE HISTORIA
LA MEMORIA DE VIDEO
Cuando las placas SVGA eran las ms populares dentro
de nuestros flamantes gabinetes mini tower, la caracterstica ms importante del dispositivo era la cantidad de
memoria que posea. A mayor memoria, mayor cantidad
de colores y mayor resolucin para deleitarnos la vista.
Con 1 MB de RAM en nuestra placa de video, podamos
llegar a una resolucin de 1024x768 con profundidad de
256 colores y ser el orgullo (nerd) de la cuadra. En aquel
entonces, la memoria de video se utilizaba exclusivamente como video buffer, es decir que era una representacin lgica de lo que se vea en pantalla.
EL INICIO DE LA ERA 3D
En estas pginas pretendemos remitirnos ms a las generaciones y arquitecturas de dispositivos que a los modelos especficos que cada empresa saca al mercado cada seis meses. Sin embargo, existen hitos que son marcados especficamente por una u otra firma, y que no pueden quedar al
margen. Un ejemplo de lo expresado es el caso de la difunta
compaa 3Dfx Interactive (ver recuadro).
La primera generacin de procesadores de video inteligentes
consisti en la implementacin de un grupo de operaciones
prefijadas por medio de las cuales se procesaba una serie de
vrtices que luego finalizaran representando polgonos en
pantalla, materia prima de todo objeto 3D.
Dicha inteligencia fue vendida comercialmente a los usuarios finales por parte de NVIDIA bajo el nombre motor de
transformacin e iluminacin (Transformation and Lighting),
ms conocida popularmente por su abreviatura, TnL.
Para comprender un poco mejor cmo funciona este tipo
de dispositivos, es conveniente introducir el modo en que
LA VCS (VIDEO
COMPUTER SYSTEM)
ATARI 2600.
25
PLACAS DE VIDEO
DE ULTIMA GENERACION
3DFX INTERACTIVE
Caracterstica
Interfaz de memoria
Cantidad de memoria
Tipo de memoria
Velocidad memorias
Velocidad core
Fill rate
Vrtices por segundo
RAMDAC
Cantidad de pipelines
Cantidad de transistores
Vertex shader model
Pixel shader model
Tipo interfaz
Max. resolucin
POWERUSR
C O M O S E FO R M A N L A S I M A G E N E S
DE POLIGONOS Y VERTICES
NUNCA SE PREGUNTARON COMO ES QUE SE PROCESAN LAS IMAGENES EN LA COMPUTADORA? LA GENERACION
DE UN MUNDO 3D EN UNA PANTALLA BIDIMENSIONAL COMO LA DEL MONITOR IMPLICA LA APLICACION DE
DISTINTAS TECNICAS REALIZADAS DIRECTAMENTE POR LA PLACA DE VIDEO. AQUI VEREMOS COMO FUNCIONAN.
ETAPA 2: LA RASTERIZACION
En la rasterizacin se pintan los vrtices, y para hacerlo se utiliza una ecuacin en la cual participan varios elementos, como el color del vrtice, las luces
de la escena que lo afectan, la normal
que especifica el vrtice en cuestin y el
material activo que corresponda. Luego,
se rellena todo el tringulo, realizando
una interpolacin de los colores de cada
vrtice que lo conforman.
Un objeto 3D tambin puede estar cubierto por una textura, que es, bsicamente, un mapa de bits con ciertas propiedades. Las texturas, para poder ser
aplicadas a la geometra, deben estar
cargadas en memoria de video. De este
modo, ya no son slo utilizadas como
video buffer. Este uso secundario es,
hoy en da, la principal razn para optar
por tarjetas de mayor memoria: una placa de video con ms memoria podr albergar ms texturas, y de mejor calidad.
Las placas de ltima generacin poseen
256 MB o 512 MB de memoria de video,
ETAPA 1:
PROCESAMIENTO DE VERTICES
El pipeline se alimenta de vrtices. Cada
uno es convertido en coordenadas homogneas para, luego, poder ser multiplicado por tres matrices: la matriz de
mundo, la de vista y la de proyeccin.
Luego, la coordenada resultante es reescalada en funcin del punto de visualizacin especificado (en general, la pantalla completa o la ventana que estamos
utilizando como objetivo para el dibujado) y, en caso de quedar fuera del rea
de visualizacin, es eliminada.
Finalmente, el vrtice es transferido al
proceso de rasterizacin, donde ser dibujado en pantalla.
La matriz de mundo: la primera ma-
EL MISMO MODELO DE LA
IZQUIERDA, PERO YA CON UNA
TEXTURA APLICADA.
POWERUSR
procese el vrtice en funcin de sus necesidades. Estos pequeos programas reciben el nombre de shaders; ms especficamente, cuando trabajan con vrtices,
vertex shaders, y cuando lo hacen con
pixeles, pixel shaders.
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 versiones
Descripcin
Direccionamiento
Constante (tipo float)
Entrada
Temporal
Constante (tipo bool)
Constante (tipo int)
Contador de bucle
Predicado
Cantidad en VS 1.1
1
96 (como mnimo)
16
12
-
Cantidad en VS 2.0
1
256 (como mnimo)
16
12
16
16
1
-
Cantidad en VS 2.x
1
256 (como mnimo)
16
12 (como mnimo)
16
16
1
1
Cantidad en VS 2.0
1
1
1
2 (difuso y especular)
8
Cantidad en VS 2.x
1
1
1
2 (difuso y especular)
8
Descripcin
Posicin
Niebla
Tamao punto
Color
Coordenadas de textura
Cantidad en VS 1.1
1
1
1
2 (difuso y especular)
8
* 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.
POWERUSR
29
OPERADORES PROGRAMABLES
LOS SHADERS
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 LOS
UTILIZAN LOS PROGRAMADORES DE JUEGOS PARA CREAR SUS MARAVILLAS. EN ESTAS PAGINAS NOS
METEREMOS DENTRO DE LOS PIXEL Y VERTEX SHADERS, Y LOS MOSTRAREMOS EN DETALLE.
VERTEX SHADERS
Los vertex shaders podran reemplazar al
motor de transformacin e iluminacin
prefijado que exista en el pipeline tradicional utilizado por OpenGL o Direct3D.
Nuestra aplicacin podra utilizar ambos
para distintos vrtices, pero no para el
mismo, ya que se excluyen mutuamente
(ver figura del pipeline completo). Debido
a que los vertex shaders reemplazan al
motor TnL, se infiere que deberan producir la misma salida; en otras palabras, el
vertex shader recibir un vrtice y deber
entregar un vrtice, en una relacin estricta de uno a uno; no podr cambiar la
cantidad final de vrtices.
La entrada a un vertex shader es uno o
ms vrtices e informacin de estados del
pipeline (existen estados de renderizacin
que pueden modificar el modo en que se
produce la salida). La salida es la posicin
en espacio de recorte (clipping) y el resto
de la informacin usual del vrtice en
funcin de su formato (color, coordenadas
de textura, etc.).
ARQUITECTURA
DE LOS VERTEX SHADERS
El vertex shader es un programa que tomar como entrada un vrtice, y dejar
a la salida:
Un vrtice en espacio de recorte
Un color de vrtice (en funcin del
formato de vrtice)
Coordenadas de texturas (en funcin
del formato de vrtice)
Intensidad de niebla (opcionalmente)
Tamao de punto (en funcin del formato de vrtice)
Como mnimo, el programa del shader
deber tomar el vrtice y realizar una
transformacin que lo lleve de espacio
local a espacio de recorte. Luego, el vrtice contendr informacin opcional que
estar de acuerdo con el formato de vr-
oPos.x, v0, c0
oPos.y, v0, c1
oPos.z, v0, c2
oPos.w, v0, c3
EL PIPELINE COMPLETO
Primitiva de
teselacin de
alto nivel
Pixel shader
Vertex shader
Recorte y
reescalado
Informacin de
vrtices
30
Motor de
iluminacin y
transformacin
(TnL)
Blending de
niebla
Testeo de
Alpha, Stencil y
Depth
Frame buffer
blending
Multitexturado
de DirectX 6/7
POWERUSR
PIXEL SHADERS
Los pixels shaders reemplazan las operaciones de multitexturado fijas del pipeline prefijado. Para entender mejor cmo funcionan los pixels shaders hay que comprender el modo de funcionamiento dual que posee el pipeline de texturas. Tradicionalmente, dos caminos corren en paralelo manejando operaciones de color (vector pipe) y alpha (escalar pipe). El resultado de
estas operaciones se mezcla al final, y termina en la especificacin de un color con componente alpha.
Dentro del pixel shader se pueden realizar operaciones aritmticas (con valores de coordenadas de texturas) y operaciones con
texturas (haciendo uso de una coordenada de textura). De todos
modos, ms all de la operacin realizada, la salida debe ser
una estructura de color con componentes RGBA (Red, Green,
Blue, Alpha: Rojo, Verde, Azul y Alpha).
HLSL
Los dispositivos de video programables que existen hoy son las
GeForce#3 y superiores (exceptuando la GeForce#4 MX), y las
ATI Radeon 8500 y superiores.
Sin embargo, la capacidad de programacin de todas estas placas est fuertemente relacionada con el modo por el cual se accede a estas funcionalidades, por medio de la interfaz de vertex
shaders y pixel shaders de DirectX 8 (DX8) y DirectX 9 (DX9).
VERTEX SHADER
PROGRAMACION EN ENSAMBLADOR
En una poca, los juegos se programaban en lenguaje ensamblador. Este lenguaje consiste en instrucciones de procesador de bajo nivel, que luego se traducen en cdigo binario y, finalmente,
son ejecutadas por el microprocesador. Programar directamente
en el lenguaje que entiende la mquina posee muchas ventajas:
tendremos control absoluto del modo en que se administran los
registros (posiciones de memoria que se pueden leer y escribir
de manera muy veloz, porque son locales al microprocesador).
La gran desventaja es que programar en ensamblador es complicado. Veamos un programa sencillo en este lenguaje:
mov AX, algn_nmero
cmp AX, 5
je true
mov CX, 2
PIXEL SHADER
registros de vrtices
v0
v15
v0
a0
r0
r1
Unidad de
procesamiento
de vrtices
registros
temporales
registro de
direcciones
(VS 1.1 y
superiores)
oDn
Etapa 0
c1
constantes
oT
Etapa 1
t1
Etapa 2
t2
Etapa 3
t3
c95
registros de salida
REGISTROS DE ENTRADA, TEMPORALES Y DE SALIDA,
QUE SE PUEDEN UTILIZAR EN UN VERTEX SHADER.
registros
temporales
v1
c0
t0
c0
r11
POWERUSR
constantes
c1
Unidad de
procesamiento
de pxeles
c7
r0
r1
pixel de salida
jmp end
true:
mov CX, 1
end:
RENDERMONKEY
RenderMonkey es una aplicacin creada por la compaa diseadora de procesadores grficos ATI Technologies que puede descargarse libremente desde el sitio oficial. Es importante destacar
que no es un lenguaje, como suele pensarse comnmente, sino
una herramienta pensada para ayudar a los artistas y/o programadores a crear shaders.
Si alguien desea crear un shader y verlo en accin, deber
crear un framework que realice la carga de la geometra, texturas, pase las constantes al shader, etc. Todo este trabajo es realizado por RenderMonkey, por lo que quien quiera crear un
efecto deber concentrarse solamente en su programacin especfica del vertex y pixel shader, y no, en aplicaciones auxiliares. Adems, la aplicacin permite modificar elementos viendo
su consecuencia en tiempo real.
Si quieren obtener ms informacin respecto a RenderMonkey,
recomiendo visitar www.ati.com/developer/rendermonkey.
Nuevamente, el lenguaje de alto nivel permite realizar las mismas operaciones en menos pasos, mantener la legibilidad en
niveles razonables y desprenderse de caractersticas especficas
del hardware. Claro que en lo que respecta a la legibilidad, el
problema se reduce un poco debido a que los programas de
VS/PS no suelen poseer muchas lneas de cdigo.
Lo que se debe tener en cuenta es que, a pesar de estar realizando
una programacin en un nivel ms alto, las limitaciones de hardware siguen existiendo. En versiones de VS inferiores a la 2, la
cantidad de instrucciones mxima y la cantidad de registros pueden ser un inconveniente; adems, no existen instrucciones de
control de flujo de ejecucin (condicionales, bucles, etc.).
32
EL FUTURO CERCANO
PS3 Y SU EXTRAORDINARIO
CEREBRO
Sony, Toshiba e IBM han estado trabajando de manera mancomunada para crear lo
que ser el nuevo microprocesador de la
consola PlayStation 3, que, adems, tendr otra infinidad de usos.
Su nombre es Cell y ya se oficializaron
varias de sus caractersticas. El microprocesador correr a 4,6 GHz, lo cual no es
poco teniendo en cuenta lo difcil que le
est resultando a Intel sobrepasar la barrera de los 4 GHz para su familia de procesadores. Estar compuesto por 234 millones de transistores, casi el doble de la
cantidad que componen los ltimos procesadores Intel Pentium 4. En la prxima
edicin podremos encontrar un artculo
muy completo que analiza esta autntica
maravilla de la computacin.
Por otro lado, respec-
XBOX, LA PRIMERA
CONSOLA DE MICROSOFT.
34
XBOX 360
La nueva consola de Microsoft utilizar
tres microprocesadores IBM PowerPC corriendo a 3,2 GHz, cada uno con dos hilos
de ejecucin, 32 KB de cach L1 de datos
y 32 KB de instrucciones; los tres compartirn una cach de 1 MB del tipo L2.
La consola poseer 512 MB RAM del tipo
GDDR3, y el disco rgido ahora ser un
opcional (recordemos que la primera Xbox
inclua disco duro, caracterstica que incrementaba el peso, el ruido, el consumo y el
costo del sistema). Este disco ser fcilmente desmontable para poder ser trasladado a la consola de un amigo con los
juegos almacenados en l y, en principio,
se ofrecer con 20 GB de capacidad.
El avance de las partidas tambin podr
ser almacenado en tarjetas de memoria
que van de 64 MB a 1 GB.
La placa de video que poseer la consola
ya no ser NVIDIA sino ATI, corriendo a
500 MHz con 10 MB integrados de DRAM.
Los controles de juego sern inalmbricos
POWERUSR
NINTENDO REVOLUTION
De la nueva consola de Nintendo es de
la que menos informacin oficial existe.
A ciencia cierta, slo se conocen algunos
datos emitidos por el presidente de la firma, Satoru Iwata.
Lo que est claro es que la consola intentar revolucionar la experiencia gaming por medio del modo de controlar el
juego. Existieron rumores que no fueron confirmados respecto a que el control incluira un touch pad configurable
GLOSARIO DE TERMINOS
API (Application Programming Interface):
ASI SE VE LA CONSOLA
XBOX 360 DE MICROSOFT.
ESTA ES LA GAMECUBE DE
NINTENDO.
36
POWERUSR