La Tarjeta Grafica Una tarjeta grafica es un dispositivo electrónico que nos permitirá mostrar la información del PC en el monitor.
El sistema de gráficos El sistema de gráficos es una relación estrecha entre la tarjeta gráfica y el monitor. Este hecho es tan verdadero que estas partes deberían siempre comprarse juntas. Las performances soportadas por el monitor son aquellas que permite su circuitería interna y el tubo de rayos catódicos CRT o TFT, así como también la performance de la tarjeta gráfica que lo controla.
El monitor Un buen monitor es por definición un monitor con suficiente superficie de desplegado para permitir una legibilidad confortable sin esfuerzo de parte del usuario, un parecido suficiente a los colores reales, suficiente brillo y contraste para dar detalles realistas aún cuando la imagen no sea ideal, sin parpadeo visible para que no dañe los ojos aún si se usa por largos períodos de tiempo, una gama de resoluciones de color suficiente para permitir una variedad interesante y un tamaño de punto de pantalla suficientemente pequeño para que los detalles de las imágenes se acerquen a una calidad fotográfica. En números, esto significa por lo menos un monitor de 15 pulgadas capaz de una tasa de refresco de al menos 72hz a 75hz a una resolución de 1024 X 768 con un tamaño de punto de .28 lo cual es el caso de la mayoría de los los monitores actuales de rango medio. Para mejores performances un monitor de 17 pulgadas es más flexible pero en este caso usted debe elegir uno que soporte resoluciones de 1600 X 1200 a una tasa de refresco de al menos 85hz a la máxima resolución, con un tamaño de punto de .25 para que las imágenes no luzcan granuladas mientras no se percibirá ningún parpadeo.
Los monitores convencionales utilizan el mismo sistema que los televisores han usado durante décadas, el tubo de rayos catódicos, de cuyas siglas en inglés reciben su nombre: CRT. Dicho sin tecnicismos, consisten en un cañón que dispara electrones sobre una superficie cubierta de fósforo y la imagen se produce ya que el electrón despide luz en el choque. Los de color tienen 3 cañones de electrones. Estos bombardean la placa de fósforo en la parte interior de la pantalla y liberan puntitos de luz a color rojo, verde y azul (RGB) llamados Píxel.
En realidad, lo que consideramos puntos de color están formados por ternas de píxeles con los colores básicos del sistema aditivo (RGB). Al contemplarlo desde lejos nuestro cerebro los mezcla produciendo el resto de colores del espectro. En las pantallas planas de tipo LCD ("Liquid Crystal Display"), TFT ("Thin Film Transistor"), las ternas de pixels están en tres capas superpuestas, de forma que aún inspeccionándolas de cerca, solo se ve un píxel con la luz resultante de las tres capas. El modelo cromático utilizado en las aplicaciones informáticas es aditivo, ya que se realiza sobre monitores CRT ("Cathodic Ray Tube") o pantallas LCD ("Liquid Crystal Display") que utilizan esta tecnología para representar el color. En consecuencia, los programas de edición gráfica, e incluso los lenguajes de programación representen los colores en función de sus componentes RGB. Codificación RGB
Color resultante
0,0,0 100,100,100 100,0,0 0,100,0 0,0,100 100,100,0 0,100,100 100,0,100 100,50,50
Negro Blanco Rojo Verde Azul Amarillo Cián Magenta Salmón
Muestra
Habida cuenta que cada píxel debe ser digitalizado (reducido a un número), la mayoría de las veces el píxel se considera descompuesto en sus tres componentes RGB, indicándose la proporción de cada uno (brillo) mediante una terna ordenada de números. Suponiendo 0 para la ausencia de color y 100 para el máximo, tendríamos las combinaciones de colores que se muestran en la tabla. Un punto es la porción posible más chica de la pantalla de un monitor y su tamaño varía de acuerdo a la calidad del tubo de imágenes mientras que un pixel es un área determinada que cubre una porción de la pantalla cuyo tamaño es determinado por la aplicación en uso. En otras palabras un pixel puede usar más de un punto de pantalla, pero nunca puede ser más pequeño que un punto. De todas maneras, en un monitor de alta definición un pixel puede ser tan pequeño en la pantalla que si alguien usara un fondo negro en la pantalla y sólo un pixel blanco se desplegara sería muy difícil de localizar para la mayoría de la gente. Pero el futuro se encuentra en los monitores de cristal líquido, habitualmente conocidos como LCD o TFT. Su funcionamiento es parecido al de las pantallas de calculadoras o relojes digitales, aunque por supuesto con más colores y más definición. Tenemos una matriz de celdas rellenas de cristal líquido que se colorean según los impulsos eléctricos recibidos. No hay ningún cañón, no hay necesidad de que el monitor tenga más que unos centímetros de fondo.
Para resumir todo esto podemos decir que la calidad de un monitor puede ser definida por el siguiente criterio: • • • •
Un punto de pantalla pequeño Alta resolución Alta tasa de refresco Superficie de pantalla grande
La tarjeta gráfica Realiza dos operaciones: •
Interpreta los datos que le llegan del procesador, ordenándolos y calculando para
poder presentarlos en la pantalla en forma de un rectángulo más o menos grande compuesto de puntos individuales de diferentes colores ( pixels).
•
Coge la salida de datos digitales resultante de ese proceso y la transforma en una señal analógica que pueda entender el monitor.
CLUT - tabla de equivalencia de colores Er, Eg, y Eb - señales analógicas de tensión
Una tarjeta gráfica es una parte muy complicada. De hecho hay tantos componentes en un circuito de una tarjeta gráfica que casi se puede considerar como una pequeña computadora independiente. Como en la placa madre de la computadora la tarjeta gráfica utiliza su propio circuito de reloj para temporizar cada operación computada que ejecuta, la tarjeta gráfica también posee su propio BIOS el cual como la placa base del ordenador puede ser actualizada por software (Flash BIOS) y el circuito de la tarjeta gráfica también tiene su propio chipset autocontenido el cual en este caso es llamado el chipset gráfico o procesador grafico, que según el fabricante que lo diseñe puede tener el nombre de VPU, GPU, etc, y finalmente la tarjeta gráfica también está acompañada de una memoria, en varios formatos y cantidades. También hay alguna circuitería específica como la RAMDAC que es usada para convertir la señal de forma digital a una señal analógica, requerido esto por el monitor así como también por el conector de expansión que permite el uso de tarjetas añadidas para agregar características como la aceleración Mpeg, sintonizador de TV, etc.. Estos son los criterios más importantes para considerar cuando se elige una tarjeta gráfica: • • • •
La frecuencia de la RAMDAC La mayor resolución posible La mayor posible tasa de refresco La máxima memoria permitida
Funcionamiento Una tarjeta de vídeo basa su funcionamiento en la información que recibe del software, hay dos partes de software en la tarjeta de vídeo . Una parte se encarga de la generación de caracteres en formato texto y otra parte se encarga de los gráficos. Para la generación de caracteres en formato texto, la tarjeta de vídeo dispone de una ROM
de arranque o BIOS que carga el juego de caracteres para visualizar.
Este juego de caracteres se genera a partir de una matriz de puntos de tal forma que para generar por ejemplo la letra B se usaria una secuencia de unos y ceros como la que aparece en la figura.
La tarjeta de vídeo se encarga entonces a partir de esta matriz de puntos de generar las señales necesarias para "pintar" estos puntos en la pantalla. A medida que le van llegando caracteres, almacena estos en memoria y se encarga de convertirlos en una lista de puntos a visualizar en pantalla. Para la generación del modo gráfico, la tarjeta de vídeo tiene almacenada en memoria la
configuración de la pantalla (es decir tiene un area de memoria de 800 x 600 bits en el caso de 256 colores). A cada bit del área de memoria le asigna un valor en función del color a visualizar (por ejemplo 00 es negro, FF es blanco) de esta forma la tarjeta envía al monitor el punto con su correspondiente valor de color para generar la imagen gráfica. Su rendimiento depende en gran medida de la velocidad del procesador de tu ordenador, por lo que no esperes ejecutar un juego de última hornada en un Pentium II de 233 MHz, por muy buena que sea la aceleradora. La cantidad de memoria de tu equipo también influye notablemente, sobre todo en la ejecución de los juegos 3D.
Aceleración 2D/3D. Las aceleradoras actuales ofrecen, todas ellas, tanto aceleración 2D como 3D. Eso sí, la
aceleración no será igual en todas ellas ni muchísimo menos. Este hecho es especialmente importante en el caso de los juegos. Y es que las tarjetas de gama baja, totalmente válidas para tareas de ofimática, son incapaces de mostrar correctamente un juego.
Cuando aparecieron los juegos que recurrían a las tres dimensiones, los fabricantes optaron inicialmente por montar tarjetas adicionales específicas para esa tarea. Por lo tanto, teníamos que disponer de dos soluciones funcionando en paralelo. Sin embargo, pronto nacerían aquellas capaces de cumplir ambas funciones y liberar, así, una de las ranuras para otros dispositivos. Otro aspecto, que suele provocar confusión, es el relativo a la existencia de tarjetas 3D "puras" para uso de juegos o aplicaciones 3D, o y tarjetas que equipan chips con capacidad 2D/3D. En el primer caso, se trata de tarjetas que sólo funcionan y aceleran aplicaciones o juegos que utilizan un determinado tipo de instrucciones para presentar imágenes en 3D, de tal forma que es necesario tener otra tarjeta gráfica "normal" para poder utilizar el ordenador de forma normal. Es decir, el ordenador tiene dos tarjetas gráficas, que funcionan de forma coordinada. Cuando el ordenador ejecuta una aplicación habitual, conocida también por 2D (dos dimensiones), tipo MSDOS o las "ventanas" de Windows, la imagen la procesa la tarjeta gráfica "normal". Pero si se inicia una aplicación o un juego que utiliza instrucciones 3D, el control y el proceso de la imagen pasa a la tarjeta aceleradora especializada de 3D. Por eso, una imagen 3D en este tipo de equipos no se puede visualizar en una ventana 2D, ya que se genera un conflicto entre las dos tarjetas instaladas. Con este tipo de equipamiento, los rendimientos suelen ser espectaculares en juegos y aplicaciones 3D, pero su coste queda fuera del alcance de muchos usuarios, sobre todo considerando que la mayoría de las tarjetas 3D disponibles solo cuentan con los controladores o "drivers" adecuados para ejecutar juegos, pero no aplicaciones profesionales.
El coste de este tipo de soluciones y los problemas de configurar y hacer trabajar juntas dos tarjetas gráficas, ha impulsado a los fabricantes a desarrollar procesadores o "chips" de imagen que incorporen capacidad de calculo 2D/3D e incluso tratamiento de imágenes de video, tipo MPEG para DVD. De esta forma, han ido apareciendo en el mercado tarjetas cada vez más potentes, que se acercan en prestaciones, aunque sin alcanzarlas, a las tarjetas 3D especializadas. Sus ventajas son unos precios menores, prestaciones en alza y mayor facilidad de instalación y uso.
¿Qué es la aceleración 3d?: Desde hace ya bastantes años, los ordenadores comerciales, los que llegan al gran público, poseen la potencia necesaria para representar gráficos tridimensionales en sus pantallas La idea de incluir en el ordenador algún tipo de hardware específico para la generación de gráficos en 3D no es nueva. El primer impulso en este sentido lo dieron un grupo de ingenieros que presentaron ante las grandes compañías un chip especialmente diseñado para la computación gráfica. Estas lo rechazaron, con lo que el grupo de diseñadores se unió para formar lo que hoy conocemos como Silicon Graphics.
¿Para qué sirven la aceleración 3d?: Las tarjetas gráficas con aceleración 3d son, básicamente, una unidad de proceso periférica que se encarga de realizar los cálculos necesarios para la representación tridimensional. De este modo, la CPU está libre para encargarse de otras tareas, acelerando el conjunto. Estas tarjetas se componen generalmente de unos procesadores conectados a un BUS y a unas memorias de alta velocidad. Los procesadores se encargan del trabajo de cálculo, utilizando las memorias de la tarjeta para almacenar los datos necesarios (como las texturas) y el BUS para comunicarse con la CPU. Aunque existen variaciones sobre esta arquitectura como el AGP. Aparte de mayor velocidad, las tarjetas aceleradoras al ser chips dedicados, pueden encargarse de los gráficos de modo mucho más eficiente y con mejores resultados que las CPUs, aunque sean menos potentes. Mejor calidad de imagen, mejores efectos especiales, más suavidad y mayor precisión en la representación son algunas de las principales ventajas, pero no las únicas. Las tarjetas aceleradoras vienen siendo utilizadas en el campo profesional desde mucho antes que en el del entretenimiento, lo que nos da una pista de las posibilidades que este hardware ofrece.
Funcionamiento interno de una aplicación 3D La pantalla es un espacio bidimensional, es decir, los píxeles que se iluminan en ella sólo tienen dos coordenadas (x, y), mientras que la aplicación trabaja con un espacio tridimensional. Cada triángulo se compone de 3 vértices, y éstos se sitúan en el espacio 3D según unas coordenadas x,y,z. El proceso de generación de una imagen 3D comienza, como hemos dicho, en la construcción de un espacio tridimensional por parte de una aplicación. Ésta se basará en un Interface para la Programación de Aplicaciones (API), es decir, un lenguaje de programación centrado en los gráficos 3D que será Open GL o Direct3d (subconjunto de DirectX para producir gráficos interactivos en 3D). El API enviará ese mundo 3D al hardware gráfico utilizando un driver creado para tal fin. El driver se encargará de convertir las instrucciones del API al código máquina del chip gráfico. La tarjeta gráfica, por último, convertirá en píxeles esa información recibida para que finalmente sean representados en el monitor. Este proceso vuelve a comenzar cada vez que se genera una imagen (frame).
Este sería un esquema de las partes que intervienen en el proceso. Aplicación -> API -> Driver -> Hardware Gráfico -> Pantalla. Técnicamente, las fases del proceso de renderizado de una imagen 3D sería más o menos estas: 1. Generación de la geometría por parte de la aplicación. 2. Transformación e Iluminación (T&L) de la geometría 3. Configuración de Triángulos 4. Rasterización. El objetivo principal de toda aplicación 3D es simular con mayor o menor realismo un entorno por el cual el usuario será capaz de moverse e interactuar con él. Para ello, las aplicaciones 3D emplean objetos mediante una representación geométrica de los mismos y los distribuyen por el entorno con unas relaciones de distancia y posición establecidas. El usuario será capaz de moverse por el entorno libremente, cambiando principalmente su posición (andar, correr, saltar, volar) y orientación (giros de cabeza, giro de dirección), de tal modo que la aplicación deberá volver a calcular las nuevas posiciones de los objetos guardando las relaciones establecidas, pero desde el nuevo punto de vista del usuario.
Para la representación geométrica de los objetos se emplean las mallas 3D, que no son sino una sucesión de puntos en el espacio pertenecientes a las superficies de los objetos. Estos puntos en el espacio se denominan vértices, y se unen unos con otros formado los triángulos que componen la malla del objeto. Obviamente, a mayor número de vértices disponibles en un objeto más triángulos tendrá éste y estará definido con mejor calidad. Una vez que el objeto 3D queda definido, es necesario realizar una serie de transformaciones (traslaciones, rotaciones, o escalados, entre otras muchas) para colocar el objeto dentro del entorno. Posteriormente, el objeto se iluminará, según las luces establecidas en la escena y según el material del que esté compuesto.
Además, es necesario realizar unas proyecciones para poder representar los objetos en tres dimensiones de la escena y plasmarla en una imagen bidimensional en una superficie como la pantalla, este proceso se denomina “renderización”. Por último, la “rasterización” o proceso de rellenar los triángulos con los colores y texturas adecuadas, En el caso de una tarjeta gráfica este proceso convierte una imagen en puntos de color, según sea el color obtenido en el proceso de iluminación. Por lo tanto, dejamos atrás los vértices y triángulos (geometría) y comenzamos a hablar de píxeles. Tras la configuración de triángulos, donde se le ha dado a cada triángulo su posición y tamaño en el espacio de pantalla, se empieza a rellenar esos triángulos de píxeles.
Este complicado proceso lleva consigo millones de operaciones, dependiendo de la complejidad de la escena, y, en un principio, era el propio procesador principal del ordenador el encargado de realizarlas, con lo que rápidamente puede entenderse que éste se quedará saturado a las primeras de cambio cuando se introducían un número alto de vértices y triángulos. Es aquí donde la figura de la aceleradora gráfica aparece para poder “echar una mano” al procesador en sus tareas. Las aceleradoras gráficas se encargan de realizar uno, varios o todos estos procesos dependiendo de su potencia. A esto hay que añadir que el hardware de las aceleradoras gráficas está pensado y optimizado para el procesamiento de vértices y triángulos. Fundamentalmente, su rendimiento se mide en el número de polígonos y texels (pixels con textura) que pueden generar. En un objeto 3D, cuantos más triángulos y texturas
contenga, más realismo adquirirá, pero exigirá efectuar numerosos cálculos que correrán a cargo del chip integrado en la tarjeta. Además, hay que tener en cuenta que dichos gráfico se realizan en tiempo real, lo que significa la creación de los mismos según se produce su movimiento; para darnos una idea de los cálculos a realizar en el traslado o rotación de un polígono, se deben realizar 16 operaciones de punto flotante por segundo. Si disponemos de una escena compuesta por 1000 triángulos, que se mueven a una velocidad de 30 fps, es decir 30 pantallas por segundo, habrá que hacer 1.440.000 operaciones en punto flotante por segundo.
Esquema del proceso En el siguiente esquema podemos ver resumido todo el proceso. Además se aprecian las partes físicas de la gráfica que intervienen en cada etapa.
La CPU envía a la tarjeta gráfica la geometría, las instrucciones (pixel y vertex shaders) y las texturas que servirán para renderizar la escena. Todo ello se almacena en la memoria de video. El chip gráfico, además de recurrir a la memoria de video, también dispone de varias cachés (pequeñas pero muy rápidas) en las que almacena determinados datos, como los programas shaders o las texturas que se requieren en cada ciclo para rellenar los triángulos.Las texturas se utilizarán en la etapa final (rasterización), y la geometría va a las unidades vertex para iniciar su tratamiento (transformación, iluminación y configuración de triángulos). La memoria gráfica, también llamada Frame Buffer, almacena los datos que van a mostrarse en la pantalla. Cada imagen individual puede tener varios megabytes de tamaño, dependiendo de su resolución.
La resolución y el número de colores En el contexto que nos ocupa, la resolución es el número de puntos que es capaz de presentar por pantalla una tarjeta de vídeo, tanto en horizontal como en vertical. Así, "800x600" significa que la imagen está formada por 600 rectas horizontales de 800 puntos cada una. Para que nos hagamos una idea, un televisor (de cualquier tamaño) tiene una resolución equivalente de 800x625 puntos. En cuanto al número de colores, resulta casi evidente: los que puede presentar a la vez por pantalla la tarjeta. Así, aunque las tarjetas VGA sólo representan a la vez 16 colores, los eligen de una paleta de 64 colores. Siendo el numero de colores = 2 elevado al nº de bits de profundidad de color, asi tenemos que :
Profundidad Paleta de de color colores bits
Bytes Nombre Nombre por Windows común píxel
2
4
0.25
4
16
0.5
6
64
0.75
8
256
1
16
65,536
2
24
16,777,216 3
32
16,777,216 + canal 4 Alfa
MDA 16 colores
CGA
256 colores
VGA Estándar modo de 256 colores (Pseudocolor)
Color de alta densidad 16 bits Color verdadero 24 bits Color verdadero 32 bits
High-Color True-Color 24 bits True-Color 32 bits
La combinación de estos dos parámetros se denomina modo de vídeo; están estrechamente relacionados: a mayor resolución, menor número de colores representables, y a la inversa. Cuantos más píxeles sean capaces de dibujar en pantalla por la unidad de tiempo, mejor rendimiento obtendremos en las aplicaciones que usen intensivamente los gráficos, ejemplo:
640x480 a 256 colores
1280x1024 a 256 colores
1. Puedes ver cómo en el primer caso, los iconos se ven más grandes y, por tanto, caben menos. Por consiguiente, el logotipo de Duiops se verá con menos definición y más "cuadriculado". Las ventanas se colocarán unas encimas de otras y el trabajo se hará muy engorroso. 2. En el segundo caso, los iconos se ven más pequeños y, por tanto, caben más. Por consiguiente, el logotipo de Duiops se verá con más definición y más perfilado. Los píxels son muy difíciles de apreciar. Las ventanas podrán abrirse una al lado de la otra, de forma que se vea el contenido de ambas, y el trabajo será más amigable.
Características de las tarjetas gráficas Ahora daremos un rápido vistazo en algunos de los componentes más importantes usados en tarjetas gráficas:
Procesador Grafico (GPU) Es el elemento más importante en una tarjeta grafica, aunque, al igual que en procesador del PC, su rendimiento se vera influenciado por el resto de componentes, especialmente la memoria.
Procesadores graficos de nVIDIA y ATI
El procesador grafico, en adelante GPU ( Graphics Processing Unit), se parece poco a la CPU del ordenador, entre otras cosas porque la GPU hace las funciones de procesador y chipset, es decir, no solo realiza los cálculos propios del procesador, sino que además, controla las entradas y salidas (a través del bus), el acceso a la memoria, etc. Crea las señales que el monitor debe recibir para formar las imágenes. Las tarjetas actuales no sólo disponen de procesadores que realizan todos los cálculos que se refieren a los gráficos, sino que también incluyen grupos de chips de aceleración. De esta manera, el procesador principal del ordenador sólo se encarga de transmitir las órdenes acerca de lo que cambia en pantalla a través del controlador de la tarjeta y no se ocupa para nada del trabajo pesado en la generación de gráficos. De él depende que la tarjeta sea compatible con OpenGL, DirectX, Glide... o que simplemente se dedique a visualizar Windows sin funciones de aceleración por ningún lado.
Radeon X800 XT Platinum Edition Architecture
Por lo demás, las características que se aplican a una CPU se pueden aplicar a una GPU, estas son escala de integración, velocidad de funcionamiento, numero de transistores, bus, nº de bits, etc. Vamos por partes: Escala de integración: es, básicamente, el tamaño de los transistores y la distancia entre
estos dentro del chip. Normalmente se indica en micras y a menor numero, mayor cantidad de transistores en el mismo espacio. Al reducir la escala de integración, se puede aumentar la velocidad de un chip y reducir su temperatura. No es un factor determinante a la hora de comprar una tarjeta. Nº de transistores: indica la cantidad de transistores que el fabricante ha sido capaz de
meter en el chip, esta íntimamente relacionado con el anterior y no sirve absolutamente para nada. Las hay que tienen unos 384 millones de transistores.
Frecuencia de funcionamiento: se mide en Mhz, al igual que en las CPU y, lógicamente,
cuanto mas mejor, pero claro, siempre con el mismo chip, ya que entre chips distintos no indica mayor rendimiento. Este valor hay que tomarlo con cuidado, ya que para que sirva como referente dos tarjetas solo se pueden diferenciar en la velocidad de funcionamiento de la GPU, si se diferencian en cualquier otra cosa, especialmente la memoria, no sirve de nada. Actualmente llegan hasta los 650 Mhz. Nº de bits: indica la cantidad de bits con los que el procesador es capaz de trabajar
simultáneamente, en una instrucción. Actualmente son todos de 256 bits, claro que no siempre el numero de bits es real, sino que, a veces, lo que un procesador hace es trabajar con 4x128 bits por ejemplo. Bits del bus: esto hace referencia al numero de bits que se transmiten por el bus hacia o
desde la memoria. Es mucho mas importante que el anterior, ya que a mayor numero de bits, mayor información transmitida en el mismo tiempo. Normalmente es de 128, 256 o de 384 bits.
The X800 Memory Interface Velocidad del bus de memoria: nos indica a que velocidad se transmite la información por
el bus y viene dada en Mhz. Este factor esta mucho más identificado con la memoria que con el procesador, ya que será la primera la que determine la velocidad efectiva del mismo. Hay que tener en cuenta que según el tipo de memoria que lleve la velocidad pude ser distinta, me explico: normalmente la velocidad del bus de memoria, o de la memoria, se indica para memoria SDR, sin embargo si la memoria es DDR, lo mas común hoy en día, la velocidad efectiva será de el doble, ya que la memoria DDR transmite dos datos por ciclo de reloj. Bus de conexión: es la manera en la que se va a conectar la tarjeta a al PC y lo pongo dentro de la GPU porque será esta la que determine que tipo de conector usara. Por norma una tarjeta grafica debería usar el bus AGP 8X o el PCI Expres, frente al resto de tarjetas que utilizaran el PCI o PCI Expres, sin embargo hay tarjetas, especialmente las antiguas, que se conectan a través de bus PCI. Píxel y Vertex Shaders: Es una función de proceso gráfico (añade efectos especiales a los
objetos de una escena 3D). Esto esta a medio camino entre el hardware y el software, si el software no lo aprovecha no sirve de nada. Se introdujeron con la familia Geforce3 y permitían que el chip grafico ofreciera cierta libertad de programación a los desarrolladores de software. Explicare esto: un chip grafico tiene una serie funciones implementadas, por ejemplo, una función implementada en el chip podría ser que un determinado polígono girase hacia la derecha, sin embargo no puede hacer nada que no este implementado en una función, es decir, los chips gráficos no son programables.
Un Vertex Shader programable permite a los desarrolladores ajustar efectos mediante la carga de instrucciones software en la memoria dedicada a él. Efectúan operaciones matemáticas sobre los datos de un vértice de un objeto. Cada vértice se define mediante un número de variables, como mínimo X, Y y Z, coordenadas que definen su posición, pero pueden contener información del color, canal alpha y/o características de la textura e iluminación.
Bien, una manera más sencilla de verlo es refiriéndonos a polígonos. Lo que vemos en nuestro monitor en una escena 3D está compuesto de polígonos. Cada triángulo, como sabéis, está compuesto de 3 vértices. Pues lo que hace el motor Vertex Shader es controlar la posición y el contenido de dichos vértices (textura, iluminación,...). Usado con acierto, ayuda a suavizar movimientos, que no den la sensación de avanzar a trompicones. Efectos que ganan en calidad con un Vertex Shader por hardware: Motion Blur (efecto de movimiento rápido), Efecto Lente (ojo de pez (fig.1), etc..) y Deformaciones Procedurales (bandera ondeante, objetos arrugados,...), niebla, refracción de luz como a través de un vaso, etc...
Efecto lente (ojo de pez)
Los beneficios más evidentes los encontramos en la animación de personajes (p.ej: emociones faciales) y los efectos de piel. Cosas impensables hasta ahora, como la animación de una prenda de vestir de un personaje son posibles.
Actualmente las hay con 8. Los Píxel Shaders son entidades extremadamente complejas. Hasta ahora hemos hablado de polígonos, triángulos y vértices de dichos triángulos. Bien, pues cuando todas las operaciones han sido hechas sobre dichos polígonos y están listos para mostrarse en pantalla, estos están formados por un conjunto de píxels individuales. Con el Píxel Shader, los desarrolladores pueden controlar totalmente cómo quiere que se vea cada pixel por pantalla. En la GeForce2 GTS, aparecía la funcionalidad de Píxel Shaders, ese chip podía realizar 7 operaciones en una pasada sobre un píxel, mientras que el GeForce3 puede efectuar 36 y además programables, no fijas de una lista de efectos existentes. Algunas de sus aplicaciones pueden ser: Propiedades de Materiales especiales (seda, piel, cuero), cabellos en tiempo real, sombras suaves, reflexiones y refracciones perfectas, bump mapping por píxel con corrección Z, superficies extremadamente detalladas....
Efecto de Bump-Mapping por píxel y además con reflexiones
Actualmente las hay con 8. Shader Model. El número que acompaña indica la versión que acepta como máximo. Las
versiones 1.x trabajaban con enteros y a partir de las 2.x trabajan con coma flotante. Mayor precisión permite evitar errores de redondeo, mayores cuanto más cálculos tenga que realizar el shader (la evolución es a shaders cada vez más complejos, para realizar efectos más vistosos) La 2.x exige como precisión 24 bits, mientras que la 3.0 exige 32 bits. Esta diferencia de precisión no se va a notar visualmente en la gran mayoría de los casos. La diferencia principal entre 2.x y 3.0 es la facilidad a la hora de programar. Si, tiene algunas características nuevas, pero lo fundamental es que se ha introducido dentro del juego de instrucciones la posibilidad de realizar bucles y comparativas. Con los Shaders se permitía al desarrollador de software que pudiera programar una serie de funciones, para hacer lo que el quisiera. Para acceder a estos shaders deben usarse las librerías DirectX 8.0 o superior y cada chip tendrá una versión de cada uno en función de lo nuevo que sea y un número distintos de estas unidades. Píxel Pipelines, unidades de texturas y demás: una pipeline viene a traducirse como una
tubería y es “por donde va la información”. Pues los píxel pipelines son el numero de estas tuberías que tratan a los píxeles y las unidades texturas la cantidad de unidades capaces de aplicar una textura a un polígono. A modo resumido cuanto mas mejor, sobre todo de unidades de texturas, ya que mientras mas tenga mas texturas pueden aplicarse por ciclo de reloj, aunque su rendimiento vendrá dado porque un juego la use o no, y no todos hacen uso de múltiples texturas para un mismo polígono. Actualmente las hay con 48.
T&L Transform & Lightning: Esta es la unidad de “transformación y luces” y apareció con la
primera GeForce. Antes de la aparición de esta unidad la aceleradora de video solamente se encargaba de calcular y renderizar triángulos, todo lo demás lo realizaba la CPU, incluido el calculo de transformaciones e iluminación. A modo resumido diremos que la CPU calcula un objeto, un humanoide por ejemplo, la tarjeta se encargaba de unir los vértices de los triángulos que lo forman y aplicarles las texturas. Si el “hombre” se acerca, el objeto no cambia, solo se transforma, es decir, aumenta su tamaño, pero, generalmente, esta formado por los mismos polígonos.
Por otro lado en una escena hay numerosas fuentes de luz que afectan a los objetos, el calculo de estas también dependía de la CPU. Los cálculos mas complejos eran los dos últimos, sobre todo el de la iluminación y que hacia que el rendimiento del juego bajara, con la aparición de las T&L la propia GPU se encarga de estos cálculos. Todas las tarjetas graficas que se venden actualmente incluyen una unidad de T&L salvo restos de stock de 3Dfx, Kyro, o, en general, todas las anteriores a las Geforce256.
Generación de software: Esta ha sido una nueva manera de distinguir unos chips de otros
aparecida con las GF4MX y básicamente consiste en decir que versión de DirectX sobre todo y
OpenGL soportan por hardware las tarjetas. Esta íntimamente relacionado con el numero y versión de los shaders. Optimización de la memoria: define que algoritmos están implementados en el chip para
ahorrar ancho de banda. Este concepto surge con los chips Kyro y el “Tile Rendering” y a modo general consiste en no calcular los polígonos que no se ven, para así no tener que procesar una información no necesaria. A esto se le añade, además, los distintos modos que tiene el fabricante de acceder y tratar la información de la memoria, LMA, HyperZ, etc. Anisotropic filtering y FSAA: estos son distintos nombre para lo mismo, mejorar la calidad
de imagen. El problema esta en la pixelacion o “dientes de sierra” típicos del Quake, por ejemplo, cuando nos acercábamos a la pared; las texturas se ven muy “cuadradas”. Estos dos métodos buscan la reducción de este efecto de manera similar. Básicamente funcionan de forma similar a un desenfoque gausiano en photoshop por ejemplo, calculan el color que tiene que tener el píxel central entre otros dos de manera que se suavice la imagen. Esto en realidad es mucho mas complejo, sobre todo el segundo que es el que realmente reduce el rendimiento y que cada fabricante aplica de manera particular. Para que todos lo entendamos se busca calcular los puntos intermedios que no tenemos a partir de una serie de puntos que si conocemos. Al FSAA le sigue un numero que pude ser 2X, 4X, 6X, 8X ó 16X en función de las muestras de las que es capaz de tomar referencias, a mayor, mejor calidad, pero peor rendimiento.
Ramdac Random Access Memory Digital to Analog Converter (memoria RAM del convertidor digital a analógico) : este dispositivo empezó estando fuera del propio chip pero
poco a poco se ha ido introduciendo dentro de la GPU y aumentando su numero, siendo lo mas normal que ahora mismo la tarjeta disponga de 2 internos. Este chip sirve para realizar la conversión de los datos digitales del color de cada punto a componentes analógicos de rojo, verde y azul (RGB: red, green, blue) para ser enviados al monitor. Cada vez que una nueva imagen es procesada por la circuitería de la tarjeta gráfica tiene que ser convertida por la RAMDAC para ser enviada al monitor. De hecho nuevas imágenes son constantemente enviadas al monitor aún si nada cambia en la pantalla porque la pantalla del monitor necesita ser refrescada a una frecuencia correspondiente a su tasa de refresco. Por lo tanto, un RAMDAC lento hará que la pantalla no se refresque suficientemente rápido, produciendo parpadeo y cansando nuestra vista. Ahora mismo su frecuencia esta entre los 350 y 400Mhz pudiendo alcanzar resoluciones mayores de las que ningún monitor soportaría. Al tener mas de uno nos permite enviar dos
señales de video, una al monitor y otra a la TV por ejemplo o a dos monitores distintos. Algunas placas tienen además una ramdac externo, normalmente a menor frecuencia, que permite conectar una tercera pantalla, por ejemplo la Parhelia. Tasa de refresco: es sólo el número de veces que la imagen está siendo refrescada en la
pantalla del monitor. Por ejemplo, si usted fijaba su tarjeta gráfica para una tasa de refresco de 75hz entonces significa que la imagen completa de la pantalla del monitor será totalmente refrescada 75 veces en un segundo. La razón por la que usamos tales altas tasas de refresco es para evitar un efecto que se llama "Parpadeo" que genera muchísima fatiga de los ojos cuando alguien permanece frente al monitor de una computadora por un período prolongado de tiempo. Para trabajar cómodamente necesitaremos 70 Hz. Tasas de refresco por encima de 72hz generan muy poco parpadeo o casi imperceptible. Para trabajar ergonómicamente, con el mínimo de fatiga visual, 80 Hz o más . El mínimo absoluto son 60 Hz; por debajo de esta cifra los ojos sufren muchísimo, y unos minutos bastan para empezar a sentir escozor o incluso un pequeño dolor de cabeza. Cuando usted está ajustando la tasa de refresco de su tarjeta gráfica debe tener gran cuidado con la tasa máxima de refresco soportada por el monitor porque superar la máxima tasa de refresco de su monitor causará una dramática reducción en la expectativa de vida del monitor y en el peor de los casos puede causar daños mayores a la muy sensible circuitería interna de su monitor. Entonces, Nunca debe utilizar una tasa de refresco en la tarjeta gráfica mayor que el máximo soportado por su monitor. Esto depende de las características del mismo, en concreto de la Frecuencia Horizontal. La cantidad de datos que puede ser convertida por la RAMDAC está relacionada
directamente con la resolución de color usada por sus aplicaciones, multiplicada por la tasa de refresco usada más un factor adicional que tiene que ser tenido en cuenta, y es el tiempo que los cañones de rayos catódicos están refrescando fuera del área visible de la pantalla del monitor y este factor es 1.32. De acuerdo a esto se puede definir una fórmula para hacer este cálculo como sigue: MHZ = (Resolución Vertical X resolución horizontal X tasa de refresco) X 1.32
Por ejemplo supongamos que tenemos una resolución de pantalla de 1600 X 1200 y usaremos una tasa de refresco de 85hz. Usando la fórmula hallaremos que se requerirá de la RAMDAC una frecuencia de 1600 X 1200 X 85 X 1.32 = 215.4mhz para procesar adecuadamente esta resolución de pantalla a esta tasa de refresco. Como se puede ver, el uso de esta simple fórmula nos permite estar seguros sobre la máxima resolución y tasa de refresco que deberá ser soportada por la tarjeta gráfica que se pretende comprar será efectivamente soportada por la RAMDAC instalada en esa tarjeta gráfica. Bits de color: esto actualmente no se usa como referente, porque todas las tarjetas usan 8
8 bits para el rojo, verde y azul mas 8 bits para el canal Alpha, lo que da un total de 32, sin embargo la Parhelia (10 bits) y los chips de nueva aparición aumentaran esta cantidad, lo que requiere, además, aumentar el numero de bits de color de los Ramdacs y demás. Actualmente no se le saca mucho rendimiento.
Tecnologías propietarias ATI Smartshader HD: Conjunto de recursos hardware diseñados para optimizar la ejecución de los
algoritmos de sombreado de píxeles y vértices en la familia de VPU Radeon X800. La función de estos componentes es describir la forma en que el procesador gráfico debe renderizar una
imagen. Smoothvision HD: Técnicas de mejora de la calidad de las imágenes implementadas en la
familia Radeon X800. Los tres componentes básicos de esta tecnología son los responsables de la eliminación de los bordes dentados (antialiasing ), así como del filtrado y compresión de las texturas. Hyper Z HD: Compendio de técnicas concebidas para reducir las exigencias de ancho de banda en aquellas operaciones en las que está involucrado el buffer de profundidad o buffer Z .
La utilización de esta memoria intermedia requiere habitualmente mayor ancho de banda que cualquier otro componente involucrado en el proceso de renderizado. NVIDIA CineFX 3.0: Tecnología que dota a los gráficos generados por ordenador del realismo propio
del vídeo basado en imágenes reales. Para lograrlo, esta tercera generación del motor no impone limitación hardware alguna a los programas responsables del sombreado y permite a los programadores escribir shaders más eficaces gracias, entre otras cosas, a lo que se conoce como control dinámico del flujo. UltraShadow II: Conjunto de técnicas y recursos hardware que permiten calcular la forma en
que las sombras afectan a los objetos mostrados en las imágenes de forma muy rápida. Su utilización es especialmente interesante en escenas en las que hay varias fuentes de luz y múltiples objetos visibles.
Intellisample 3.0: Tecnología para mejorar el rendimiento y la calidad de las imágenes que se
apoya en la utilización de avanzados algoritmos de compresión del color, recursos hardware que permiten el borrado rápido del buffer de color, técnicas de corrección gamma de forma dinámica y múltiples opciones en lo que concierne al filtrado de texturas y la eliminación de los bordes dentados de los objetos mostrados en pantalla.
Memoria La memoria de una tarjeta grafica y la memoria principal del PC es exactamente lo mismo, se usan para lo mismo y funciona, dependiendo del tipo, de la misma manera, sus únicas diferencia se encuentra en la velocidad de funcionamiento. La memoria se utilizara, básicamente, para guardar las texturas a aplicar a los polígonos y almacenar los datos de estos, aunque sin duda será lo primero lo que más ocupe en la misma. Si la tarjeta dispone de poca memoria, ésta se saturará con frecuencia, con lo que bajará la velocidad y el rendimiento general de la tarjeta. Su tamaño influye en los posibles modos de vídeo (cuanta más, mejor); su tipo determina si conseguiremos buenas velocidades de refresco de pantalla o no. Hace algún año, la cantidad de memoria repercutía en la resolución de pantalla (640x480, 800x600, 1024x768, etc.) y en la cantidad de colores (16, 256, 16 millones...), pero las tarjetas actuales ya no causan preocupación en estos aspectos. Antiguamente se encargaba de almacenar la configuración de la pantalla, o sea las líneas verticales, líneas horizontales y profundidad de color que se manejaba, como por ejemplo la típica configuración de 800x600x16. Actualmente también almacena las texturas de los juegos 3D así que cuanto más MB de memoria de vídeo tengamos, mejor, ya que manipularemos la textura en la memoria de vídeo y no tendremos que recurrir a la RAM del equipo, que es más lenta. La tarjeta debe ser capaz de recordar una pantalla completa cada vez. Para que lo veas más fácil, cada pantalla de imagen que vemos en el monitor es un mapa de bits que debe generarse y moverse entre la memoria de la tarjeta, el bus de datos y la RAM del ordenador. Por lo tanto,
la memoria es el criterio donde un usuario puede determinar con mayor exactitud la calidad gráfica que va a obtener de su tarjeta. La tarjeta gráfica 3D requiere mucha más memoria que la tarjeta gráfica 2D porque su arquitectura de memoria es considerablemente diferente. Mientras una tarjeta gráfica 2D requiere sólo un área de memoria para almacenar los datos las tarjetas gráficas 3D usan 3 bancos específicos de memoria de video. Las áreas de memoria de una tarjeta gráfica 3d se llaman de la siguiente forma: • • •
El buffer frontal (requerido para almacenar la imagen que está siendo mostrada) El buffer trasero (requerido para almacenar la próxima imagen que se está procesando) El buffer Z (requerido para almacenar la información de 3a. dimensión)
Tamaño: esto no tiene mas misterio, es la cantidad de memoria disponible en la tarjeta
expresada en Mb.
Tiempo de acceso: exactamente igual que en la RAM principal salvo que aquí los tiempos
son menores. Se mide en nanosegundos (ns) y viene reflejado en el chip de memoria al final de la denominación, normalmente separado con un guión. En función del tiempo de acceso el chip podrá funcionar a una frecuencia u otra (ns). Frecuencia de Funcionamiento: al igual que en la ram principal o en el microprocesador
indica a que velocidad funciona el reloj de la memoria, es decir, a que velocidad realizara las operaciones. Hay que distinguir entre memoria SDR y DDR, DDR,DDR2 y DDR3. Actualmente las velocidades llegan a 1.7GHz.
Memoria de 3,6 ns en formato BGA Tipo de encapsulado: Se refiere al formato en el que se fabrico el chip de memoria y
normalmente no viene especificado en las características de la tarjeta, ya que no tiene una importancia vital. Existen 2 tipos, el TSOP y el BGA, el primero de ellos es el tradicional y se distingue a simple vista por ser rectangular, aproximadamente el doble de largo/alto que alto/largo. El BGA es de reciente aparición y se fabrica como los procesadores hasta hace poco o como los chipset. Este ultimo tiene la ventaja de que se calienta menos pero vale mas caro. A simple vista se diferencia del anterior por ser cuadrado. En la imagen anterior veíamos un chip BGA.
Ancho de banda: Es la cantidad de información que se transmite entre el microprocesador y
la memoria en un segundo y expresada en GB/s. Es un valor teórico que se obtiene como relación entre la frecuencia de la memoria y los bits del bus de la misma. Actualmente llegan hasta 54.4GB/s.
Conectores Como su nombre indica es por donde la tarjeta se conecta con otros dispositivos, ya sea un monitor o la placa base. En principio podemos distinguir el que conecta con la placa, de los que trabajan con “imágenes”, ya sean de entrada o salida. Bus de Conexión: es el conector que une la tarjeta grafica a la placa base y se distingue
fácilmente por tener una forma similar a un peine en la parte inferior de la tarjeta y sobre saliendo de esta. Es donde están los distintos contactos metálicos para unirse con la tarjeta y por los que se pincha en la placa. Puede ser de dos tipos, PCI o AGP: - El PCI era el conector típico de toda placa base y evolución del conector ISA. Su diseño es general, es decir, puede conectarse cualquier tipo de tarjetas que soporten este estándar, claro esta, desde módems hasta tarjetas de sonido, pasando por tarjetas de red, etc. Actualmente no se usa para las tarjetas graficas, salvo en modelos antiguos o muy concretos, pero no es una opción a tener en cuenta, salvo necesidades especificas.
- El AGP es único en la placa base y claramente diferente del PCI, para empezar es de color gris oscuro(conector hembra situado en la placa) y esta desplazado sobre la línea de los PCI. El conector de la grafica se puede distinguir por tener 3 conectores frente a los 2 del PCI, aunque depende el AGP 1X también tenia dos conectores, aunque el más pequeño de los dos estaba mas cerca de la tapa de slot o del conector de VGA, mientras que en el PCI estaba al lado contrario. El AGP tiene modos de funcionamiento que van desde el 1X hasta el 8X en función de su velocidad.
El PCI- Express (conocido como PCIe), Las plataformas de hoy utilizan el bus 8x AGP (Puerto gráfico acelerado) especializado para la conexión de tarjetas gráficas, el cual está migrando de forma progresiva a la conexión PCI Express x16, la cual duplica el rendimiento de las conexiones gráficas a 4 GB/seg, (frente a los 2133MB/s del AGP 8X). La mejora mas evidente del PCI Express es su topología punto a punto, que permite una conmutación compartida para distribuir los recursos compartidos (ancho del bus) entre los dispositivos PCI Express
conectados, de acuerdo con su prioridad. En este caso, cada dispositivo tiene un acceso directo y exclusivo (link) al conmutador (switch). Además, el conmutador priorizará los datos transferidos de manera que las aplicaciones en tiempo real pueden obtener un acceso inmediato al conmutador. PCie
PCI Bandwidth Bandwidth, Express per duplex Lanes Stream
1 2 4 8 16
256 MB/s 512 MB/s 1 GB/s 2 GB/s 4 GB/s
512 MB/s 1 GB/s 2 GB/s 4 GB/s 8 GB/s
En la siguiente imagen vemos la forma física de este nuevo estándar (el de color rojo corresponde al PCie X16, el cual es de uso exclusivo para la tarjeta gráfica y reemplazante del AGP 8X)
El 15 de enero del 2008, PCI-SIG (Special Interest Group), el organismo encargado de mantener los estándares PCI, ha confirmado las especificaciones oficiales del bus PCIe 2.0. Sobre el papel, trae mejoras de ancho de banda y otras características requeridas por el hardware futuro. Esta nueva especificación, dobla el ancho de banda del bus de datos PCI express de 8GB/s a 16GB/s, esto en puertos PCI Express de 16 líneas de datos en modo de transmisión bidireccional. El ancho de banda por linea se ha incrementado de 250 MB/s a 500 MB/s, lo que hará que una tarjeta con soporte para PCIe 2.0 x16 te permitirá obtener un ancho de banda máximo de 16 GB/s. El 18 de noviembre de 2010, el Grupo de PCI Special Interest publico oficialmente la versión definitiva de la especificación PCI Express 3.0 a sus miembros para construir dispositivos basados en esta nueva versión de PCI Express. El régimen 128b/130b es la nueva codificación que permite también cerca del 100% de eficiencia, que ofrece un aumento de eficiencia del 25% durante 8 GT / s, en comparación con la eficiencia 8b/10b de las versiones anteriores, lo que permite el ancho de banda doble. PCIe arquitectura
Velocidad de bits en bruto
Ancho de Interconexión banda por de ancho de carril por banda sentido
Ancho de banda bidireccional del enlace x16
PCIe 1.x
2,5 GT / s
2 Gbps
~ 250 MB / s
~ 8 GB / s
PCIe 2.x
5.0GT / s
4 Gbps
~ 500 MB / s
~ 16 GB / s
PCIe 3.0
8.0GT / s
8 Gbps
~ 1 GB / s
~ 32 GB / s
Conector VGA: es el conector mínimo que se puede encontrar en todas las tarjetas y es por el
que se conecta la tarjeta al monitor. Se distingue fácilmente porque es de color azul (yo solo lo he visto de ese color). Transmite la información de manera analógica y no representa un factor a tener en cuenta a la hora de elegir una tarjeta, salvo en el numero de los que disponga, ya que si tenemos una tarjeta con soporte para dos monitores, necesitaremos dos conectores, que son del tipo D-sub15.
Conector DVI: Se esta usando recientemente y funciona de manera similar al VGA pero
transmite la información de manera digital. Tenemos que asegurarnos de que disponemos de un monitor con un conector de este tipo, si no necesitaremos un adaptador. Ofrece mejor calidad que el VGA, pero prácticamente, solo si disponemos de un monitor TFT. Conector para salida/entrada de TV/Video: Los hay de varios tipos aunque el más extendido
seguramente sea el primero:
- S-Video: separated video (Señal Y/C), es la salida estandar de televisión junto con la salida de video compuesto. Se compone de un conector de 4 pines, dos con las señales Y y C (color y luminancia) y dos masas.
- Video Compuesto: conector de un solo pin+masa, la señal viaja mezclada por el cable y da menos calidad que S-Video.
Soporte de software: Librerías y APIs En cuanto a la programación en 3D, cada chip gráfico tiene una forma de procesar las rutinas implementadas en ellos, por lo que hay una incompatibilidad (en el 2D existe el estándar VESA que libera de estos problemas). En un inicio, prácticamente cada fabricante utilizaba su propio "lenguaje" para que los programas se comuniquen con el hardware. Evidentemente una tarjeta aceleradora 3D, no sirve de nada si no hay software que la utilice. Todas las tarjetas tienen un modo propio para que se las pueda programar: las Mystique tienen el modo MSI y las tarjetas con chipset Voodoo tienen el 3Dfx's Glide. En realidad, si programamos un juego usando una API concreta, cualquier acelerador 3D que soporte esa API funcionará perfectamente. El problema es que no todas las tarjetas soportan todas las API. Para ello, han surgido las librerías de programación.
LAS API,s 3D Sin entrar en tecnicismos diremos que API Apliccation Programming Interface (Interfase para programación de aplicaciones), son unas herramientas de programación encargadas de sacarle partido a nuestra aceleradora 3D. Una API, es una colección de librerías y mecanismos de control que permiten que el sistema operativo pueda realizar una serie de acciones para las que originariamente no fue creado. La principal función de un API, es permitir utilizar todas las técnicas del diseño en 3D mediante las librerías y funciones que éste incorpora. Una serie de funciones que facilitan al programador acceder a la máquina. En el caso de la aceleración para juegos, se trata de un puente o interface entre el juego y la tarjeta aceleradora. Hay dos tipos de API's, nativas y genéricas. Las nativas son API's que solo están soportadas por un chipset, como pudieran ser las famosas Glide de 3Dfx (Voodoo), y que son desarrolladas por la propia empresa fabricante del hardware. En contra, un API genérico puede ser utilizado por varias tarjetas y aprovecha las características comunes de todas. Esto quiere decir que se pierde quizás el aprovechamiento al cien por cien del hardware a cambio de una mayor portabilidad y versatilidad de uso. Son ellas las que “usan” los drivers de la tarjeta gráfica y nos presentan mundos tridimensionales cuya calidad depende de la propia API, del chip gráfico y la potencia del microprocesador central del PC. Imaginemos una secuencia cualquiera de un juego 3D. Supongamos que estamos en un oscuro y siniestro pasillo y lanzamos un misil contra un enemigo. A través de la niebla observamos el resplandor del motor del misil en las paredes y un sonido estridente invade nuestros altavoces. Esto que parece casi imposible se consigue de la siguiente forma: 1. El procesador genera los “cimientos” de la imagen a base de polígonos que normalmente
vienen a ser triángulos. Es mas o menos una imagen parecida a la que vemos en la tele cuando están diseñando un avión o un coche y aparece lleno de líneas por todas partes.
2. El acelerador 3D “cubre” la estructura de la imagen que le proporciona el procesador con
diferentes texturas: una para el suelo, otra para las paredes, otra para el techo.... y finalmente superpone la textura de la niebla por el túnel y la mueve para que realmente parezca niebla. 3. Por último el acelerador 3D proporciona el efecto de luz del misil y la tarjeta de sonido
reproduce el sonido del motor de forma “tridimensional”.
De estos tres puntos sacamos una serie de conclusiones: -. Cuanto más rápido sea el procesador, mas triángulos por segundo, o sea una imagen mas detallada y en menor tiempo. -. Cuanto mas rápido sea el chip gráfico mas rápido colocará las texturas y cuanto más
moderno sea, mas calidad en los efectos 3D obtendremos ya que será capaz de emplear filtros u otros efectos para proporcionar imágenes más nítidas. -. Cuanto más avanzada sea la API 3D empleada, más efectos 3D podrá ofrecer al chip gráfico.
TIPOS DE API,s En realidad, si programamos un juego usando una API concreta, cualquier acelerador 3D que soporte esa API funcionará perfectamente. El problema es que no todas las tarjetas soportan todas las API.
Para ello, han surgido las librerías de programación, para unificar en un API las diferentes funciones. OpenGL
OpenGL no solamente es un API sino que es todo un estándar en la definición y manipulación de gráficos en 3D. Este conjunto de librerías de aceleración 3D se han estado usando en entorno industrial hasta que se ha empleado en juegos. El estándar fue definido por Sillicon Grafics Inc. (SGI) para unificar el manejo de gráficos en 3D independientemente de la plataforma. Este carácter abierto es lo que quiere decir el "Open" de su nombre. Según Wrigth y Sweet OpenGL es "una interfaz software para gráficos por hardware". Esto quiere decir que este API "aísla" al programador del hardware sobre el que va a correr el software, lo que hace al software diseñado con soporte OpenGL altamente portable (capacidad de ejecutar el software independientemente de la máquina).Esto es una gran ventaja del OpenGL frente a otros interfaces para 3D como el Glide de las Voodoo. Son realmente buenas y rápidas pero algo complicadas de usar debido a la gran cantidad de facetas de aceleración que poseen. Está adoptada por sistemas como Unix, Iris, Windows NT, para profesionales. Cada vez más tarjetas (ATI, Voodoo, Millenium, Hercules, etc.) soportan esta API. Muchos desarrolladores de OpenGL, defienden que el OpenGL es muchísimo más eficiente y cómodo para programar que Direct X. Para el Quake II, John Carmack, el gran gurú de OpenGL, programó una API específica basada en OpenGL, el QuakeGL (que usa el motor mini-GL). DirectX
Las librerías DirectX tienen un poco de historia: cuando en 1995 Microsoft lanzó al mercado Windows 95 cumplió dos objetivos que se había marcado: hacer más popular el acceso a internet, y ofrecer aceleración 3D en Windows 9x. No creáis que Microsoft programó desde la nada Direct3D. Simplemente compró una librería llamada RealityLab 3D a una tercera empresa, la modificó y la renombró como Direct3D. Esta librería era lenta y muy complicada aunque por el contrario era compatible 100% con Windows. Digamos que DirectX no ha funcionado medio regular hasta la version 5.0 y que realmente deja de ser mediocre con la versión 8.0, la cual ya se beneficia de la colaboración de Silicon Graphics con Microsoft. Actualmente todas las tarjetas gráficas 3D soportan las dos librerías, es decir, “comprenden el lenguaje de la librería” y por consiguiente entienden las instrucciones de aceleración que les ordena, tales como efectos de luz, nieblas... Parece que en un futuro cercano sólo sobrevivirá Direct3D, aunque eso sí, gracias a un acuerdo colaboración entre Microsoft y Silicon Graphics que permitirá fusionar totalmente ambas plataformas (de hecho en las DirectX 6 ya está presente gran parte del API OpenGL). Microsoft obtiene de Silicon Graphics la tecnología que ofrezca mas velocidad y calidad a DirectX y en cambio incluye OpenGL en Windows 2000 para uso profesional.
Nota: DirectX 10 y superiors no corren en Windows XP La tecnología shaders es cualquier unidad escrita en un lenguaje de sombreado que se puede compilar independientemente. Es una tecnología reciente y que ha experimentado una gran evolución destinada a proporcionar al programador una interacción con la GPU hasta ahora imposible. Los shaders son utilizados para realizar transformaciones y crear efectos especiales, como por ejemplo iluminación, fuego o niebla. Para su programación los shaders utilizan lenguajes específicos de alto nivel que permitan la independencia del hardware. Version
Main Innovation
DirectX 6
Environment mapped Bump Mapping
DirectX 7
Transformation and Lightning in the graphic chip
DirectX 8
Shader 1.0, 1.1 and 1.2
DirectX 8.1
Shader 1.3 and 1.4
DirectX 9.0
Shader 2.0
DirectX 9.0c
Shader 3.0
DirectX 10
Shader 4.0
DirectX 11
Shader 5.0
Microsoft aunque se resiste a abandonar su API, mucho más ahora que es la base de su nueva consola, la XBox; ha cedido ante el fuerte empuje de las compañías desarrolladoras de software lúdico y en sus nuevos sistemas operativos incluyen un soporte combinado de Direct X y OpenGL mediante una serie de controladores llamados "Farenheit".
¿Qué versión de DirectX tengo instalada?
Sobre todo en juegos, pero también en programas multimedia, para que funcionen correctamente es necesario tener instalada una versión concreta de DirectX, los controladores esenciales de Microsoft.
•
Primero, en el menú
•
Después, escribe dxdiag y pulsa Aceptar.
•
, elige la opción
Aparecerá la Herramienta de diagnóstico de DirectX y ahí tienes el nombre exacto de la versión instalada en tu equipo.
Códecs de audio y vídeo Puesto que el sonido sin comprimir y las imágenes en movimientos suponen una enorme cantidad de datos (en el caso del vídeo hasta 25 MB/s), estos datos deben comprimirse para su edición en un PC. Para ello son necesarios los "códecs" adecuados (compresor-descompresor) para audio y vídeo. Algunos sirven para comprimir audio y vídeo, otros son sólo para audio o sólo para vídeo. También se pueden combinar distintos códecs. Los códecs de audio más conocidos son por ejemplo WMA (Windows Media Audio) y MP3 (MPEG Audio Layer 3). Para vídeo existen el MPEG-1 y MPEG-2, WMV (Windows Media Video) así como DivX y XviD. Hay un hecho que contribuye a crear confusión en torno a los códecs, y es que algunos formatos de archivo (.AVI / .MOV / .WAV) sólo presentan un tipo de contenedor para los datos de audio y vídeo. Por ello, la extensión del archivo en general no nos indica qué códec se ha empleado en un archivo concreto. Para la codificación de datos con un códec determinado, así como para la reproducción, el códec adecuado debe estar instalado en el sistema.