Placas de video

Introducción

El ser humano siempre ha buscado la forma de plasmar sus ideas sobre lugares y cosas, compartirlas a los demás, para esto se ha apoyado en el uso de diferentes medios, como son: escritos, libros, símbolos, dibujos, etc., pero en algunas ocasiones estos elementos no pueden mostrar con certeza nuestras ideas o simplemente no son el medio adecuado para ello. Un ejemplo claro es cuando deseamos representar el comportamiento de una ecuación de dos variables, el cual puede ser representado en un plano, como puede ser una hoja de libreta o un pizarrón, sin embargo, cuando se requiere el uso de más de dos variables, es difícil representar esa tercer variable en un plano, es por ello que se recurre a un plano 3D con componentes donde a cada componente se le puede asignar una variable de estudio. Cuando además de querer plasmar la idea, deseamos que también puedan “sentir” la idea y visualizarla como nosotros lo hacemos en nuestra mente, se vuelve aún más difícil, ya que podemos comentarla verbalmente, realizar algún dibujo esquemático en una hoja de papel, pero en ocasiones esto no es suficiente para plasmar nuestras ideas, es entonces cuando podemos hacer uso de las computadoras, la cual nos permite plasmar nuestras ideas tan reales como queramos, permitiéndonos visualizarlas, interactuar con ellas en nuestro entorno virtual, explorarlas y sentirlas como si en realidad estuvieran presentes.
Un ejemplo de esta problemática y su evolución es la visualización de diseños arquitectónicos, los cuales en un principio solo se usaban planos, donde con la ayuda de diferentes instrumentos como son: reglas, transportadores, lápices, estilógrafos, etc., se crean planos estructurales, hidráulicos, etc., que permiten darnos una leve idea de la apariencia y estructura final de la arquitectura a desarrollar. Sin embargo, los procesos usados para crear estos planos son lentos, tediosos, cansados y en ocasiones poco precisos; además de que no permitía hacer modificaciones fácilmente. Al terminar el diseño del dichos planos, éstos eran principalmente entendibles para aquellas personas con suficiente conocimiento en planos, mientras que los clientes (futuros dueños de la propiedad), no podían tener una idea clara del aspecto de la arquitectura al terminar la obra, sólo les restaba tratar de imaginar el diseño del inmueble que el arquitecto tenía en mente.
Actualmente, la capacidad de procesamiento presente en las placas aceleradoras gráficas es explotado casi en su totalidad sólo por los motores de juegos de última generación, ya que la mayoría de esta nueva tecnología está orientada a los videojuegos; esto se debe a que el mercado del entretenimiento electrónico es el que más ingresos obtiene y por lo tanto, el que más invierte en investigación y desarrollo de motores de gráficos de ultima generación.
Historia

Las placas de video surgieron a finales de los 60 cuando se comenzaron a usar los primeros monitores para visualizar los resultados de los procesos realizados por el CPU.
La primer placa de video presentada fue desarrollada por IBM en 1980, la cual se llamó MDA (Monochrome Display Adapter), misma que sólo era capaz de trabajar en modo texto (25x80 líneas en pantalla) y estaba equipada con 4 KB de memoria de video. Estas placas eran usadas en monitores monocromáticos.
Los primeros gráficos a colores se implementaron en 1981, para los cuales se creó una placa llamada CGA (Color Graphics Adapter), ésta podía trabajar tanto en modo texto como en modo gráfico. Era capaz de mostrar 4 colores a una resolución de 320x200 puntos y contaba con cuatro veces más memoria que su antecesora (16 KB).
Posteriormente surgió HGC (Hércules Graphics Card), siendo ésta capaz de mostrar una resolución en pantalla de 720x340 puntos además de incluir 643 KB de memoria integrada; el problema de esta placa fue su incompatibilidad con tarjetas de IBM.
En 1985 IBM presenta su EGA (Enhanced Graphics Adapter), la cual era completamente compatible con sus predecesoras (MDA y CGA). Esta placa era capaz de mostrar una resolución en pantalla de 640x350 puntos y contaba con 256 KB de memoria en video, lo que le permitía representar 16 colores de una paleta de 64.
En 1990 IBM presenta dos placas de video, la VGA (Video Graphics Array) y la MCGA (Memory Controller Gate Array). Las placas VGA establecieron un gran avance en el desarrollo de gráficos de alta calidad, siendo capaces de representar 256 colores de un total de 262,144 tonalidades posibles, a una resolución de 640x480 puntos, contando con la misma cantidad de memoria de video que su antecesora (256 KB). Dicha placa seguía manteniendo la compatibilidad con sus predecesoras (MDA, CGA y EGA), de tal manera que el software desarrollado para las placas anteriores era perfectamente compatible con esta nueva placa de video.
El éxito logrado por la VGA impulsó a otras compañías a incursionar en el área, tales como ATI, Cirrus Logic y S3 (siendo esta última la que dominó gran parte del sector en esta
época). Los principales avances se enfocaron en el incremento de resoluciones y número de colores, dando paso a lo que serían las placas SVGA (Súper VGA). Por consecuente, las memorias de las placas de video también se vieron afectadas incrementándose rápidamente y llegando, a mediados de 1993, a la capacidad de 2 MB. Esta cantidad en memoria permitía alcanzar resoluciones de 1024x768 puntos a 256 colores.
Las placas de video siguieron evolucionando de la misma manera, fue sólo hasta 1995 cuando hubo un cambio importante, debido a que los juegos de esa época exigían mucho más que simples incrementos en resoluciones y colores. Fue entonces cuando compañías como Maxtor, Creative, S3, ATI, entre otras, desarrollaron las primeras tarjetas 2D/3D, las cuales aún seguían siendo SVGA pero con aditamentos extras (como unidades de procesamiento gráfico) que permitían un mejor desenvolvimiento de los juegos de esa generación. Dichas placas tuvieron en un principio un costo elevado, lo que las hacía inaccesibles para su uso en computadoras de escritorio, pero con el tiempo este costo fue disminuyendo.
Fue hasta 1997 cuando surgió una verdadera revolución en 3D con el chip Voodoo, por parte de la compañía 3DFX, el cual tenía la capacidad de calcular 450,000 triángulos por segundo, además de soportar un gran número de nuevos efectos que hacían ver los gráficos por computadora mucho más realistas. Sin embargo había un problema, esta placa sólo realizaba operaciones 3D, por lo que necesitaba de una tarjeta SVGA adicional que se encargara de las operaciones 2D. A pesar de esta carencia, que aumentaba los costos, y de la baja resolución capaz de mostrar (640x480), tuvo muy buena aceptación en los usuarios.
Posteriormente, en 1998, se crea la placa con el chip Voodoo 2 por parte de la misma compañía, la cual contaba con nuevos efectos y una mayor resolución en pantalla (1024x768), aun así, seguía necesitando de una tarjeta de video 2D extra.
Poco después de la aparición de la Voodoo 2, la compañía NVIDIA crea una nueva placa completamente revolucionaria y potente, la TNT. Ésta fue la primer placa que incluía capacidad de procesamiento 2D/3D en una sola placa, su potente procesador era capaz de manipular 6 millones de triángulos por segundo, el doble que una Voodoo 2. Dichas características le ayudaron a tener gran aceptación en los usuarios y fue así como NVIDIA comenzó a acaparar buena parte del mercado.
Posteriormente surgieron, la Voodoo 3 (por parte de 3DFX) con 16 MB en video y capacidad de mover 8 millones de triángulos por segundo, y la TNT 2 (por parte de NVIDIA) con 32 MB en video y capacidad de mover 9 millones de triángulos por segundo.
Todas estas placas funcionaban sobre el slot PCI (Port Communication Interface), pero la capacidad de éste (en ancho de banda y velocidad) se comenzaba a quedar corta para la nueva generación de placas, fue entonces cuando Intel desarrollo el puerto AGP (Acelerated Graphics Port), diseñado especial y exclusivamente para dar soporte a placas de video y solucionar los problemas entre el procesador y las placas de video.
Dado el inminente dominio del mercado por parte de NVIDIA, la compañía 3DFX le vendió su tecnología y equipos. NVIDIA dominó el mercado de finales de 1999 a principios de 2002, en este periodo se enfocó a la creación de nuevos y mejores chips gráficos, ahora denominándolos GPU’s (Unidades de Procesamiento Gráfico), las cuales tienen como función principal desempeñar rápidamente las operaciones matemáticas necesarias para visualizar el entorno, esta innovación dio paso al surgimiento de procesadores gráficos, por ejemplo las series: GeForce, GeForce 2, GeForce 3, GeForce 4, GeForce FX, y la GeForce 6800 entre otras, las cuales son capaces de realizar cada vez más operaciones por segundo y de incluir un gran número de efectos por hardware, tales como T&L (Transform and Lighting), Glow, Ultra Shadows, multitud de filtros, etc.
No sólo los chips gráficos se vieron afectados por la evolución de las placas, sino también la memoria de video, la cual se requería que fuera cada vez más rápida y de mayor capacidad de almacenamiento; es entonces cuando surgen placas de video con memorias DDR y con capacidades de 128 MB, 256 MB y 512MB.
Hoy en día las placas de video son capaces de realizar un número casi infinito de efectos visuales en tiempo real y de procesar un gran número de polígonos, lo cual hace algunos años creíamos imposible. Una placa de video actual es capaz de realizar más de 51 mil millones de operaciones de coma flotante por segundo sólo en el sombreado de píxeles.
La tecnología existente hoy en día nos permite usar numerosas operaciones y efectos (Filtro de texturas, efectos de alto rango dinámico, desenfoque, filtrado anisótropo de 16X, sombras suaves, translucidez, mapas de desplazamiento, etc.) en tiempo real que son factibles en aplicar, ya que no se sacrifica la precisión ni el rendimiento de los equipos, permitiendo llevar el realismo del cine a la computadora.

Introducción a la graficación por computadora

Muchos de nosotros hemos visto entornos virtuales, ya sea en computadoras o en videojuego. Sin embargo, muchos de nosotros no sabemos cómo se crean estos entornos, cómo se genera la interactividad en ellos, qué es lo que hace que algunas computadoras puedan generar entornos virtuales ricos en realismo y otras no, cómo se generan esos efectos visuales tan impactantes que vemos en los juegos y en películas, o cómo pueden darle vida a personajes, animales o cosas que no existen.
Toda escena 3D, llámese entorno virtual, juego, escena renderizada, etc., es creada casi de la misma manera. Cuando vemos un objeto en el mundo real podemos observar que éste cuenta con una definición perfecta y detalles infinitos; incluso cuando nos acercamos más podemos apreciar otros detalles que en un principio no veíamos. Sin embargo, cuando se crea un entorno virtual artificial, éste debe almacenar todos esos detalles en forma digital, además de permitir su manipulación en tiempo real sin retrasos, lo que nos permite producir la sensación de movimiento natural. Además, toda esta información contenida en el entorno es almacenada en memoria con capacidad limitada, lo que impide guardar toda la información detallada que una escena real requiere. Es por eso que, cuando se crea un mundo virtual, se intenta aprovechar al máximo la capacidad de almacenamiento de información para lograr el mejor nivel de detalle posible.
El objetivo que se busca lograr en todo entorno virtual, es el equilibrio entre el nivel de detalle y la facilidad de manipulación de la escena para que podamos movernos en ella sin retrasos.
Todo entorno virtual está compuesto por objetos con propiedades específicas, y cada objeto se compone de primitivas, de las cuales hay diferentes tipos:

§ Píxeles 3D: también llamados voxels

§ Vectores: Indican una dirección

§ Polígonos: triángulos, cuadriláteros

§ Primitivas de volumen: esferas, conos, cilindros

§ Vértices: Coordenadas 3D (x,y,z)

Los polígonos son las primitivas más usadas en la representación de escenas, dichas primitivas están compuestas por vértices que conforman un plano.
Todos los objetos representados en los entornos virtuales están compuestos por polígonos. Normalmente, estos polígonos son triángulos, ya que es el objeto más simple que se puede representar con pocos vértices (3 en total), además de que con el triángulo se pueden representar otro tipo de figuras, tales como un cuadrado (Fig. 1), compuesto de 2 triángulos. Otra ventaja que ofrece el uso de triángulos, es su facilidad de compartir vértices para formar mallas de polígonos más complejas (Fig. 2).



Fig. 1. Cuadro con polígonos

Fig. 2. Malla de triángulos

La mayoría de las placas de video actuales usan triángulos en la representación de geometría en escenas. Las GPU (Unidades de Procesamiento Gráfico) son procesadores especializados en operaciones sobre triángulos y en operaciones de matrices, vectores, etc.
Los vértices contienen diferentes tipos de información:

1. Posición 3D (coordenadas x,y,z).
2. Un identificador, el cual indica a qué triángulo pertenece.
3. Coordenadas de textura.
4. Un vector normal (perpendicular al plano que forma el triángulo)
5. Color e información de iluminación.
6. Parámetros de Skining.

Así es como se crean los objetos en los entornos virtuales, mediante las primitivas de las que están compuestos. Ahora se verá cómo esto se realiza en tiempo real mediante el flujo de procesamiento gráfico 3D, lo cual se logra mediante funciones matemáticas necesarias para representar los gráficos 3D en pantalla.

Tecnologías de graficación 3D


Las tecnologías de graficación son aquellas que nos permiten mostrar objetos u entornos 3D en computadoras o consolas de juegos; dichas tecnologías, a pesar de llevar un mismo propósito (representar gráficos 3D), pueden variar unas de otras.
Algunas tecnologías de graficación tridimensional fueron diseñadas con propósitos específicos, como en la industria del cine (para mejorar la calidad visual de las películas); otras fueron diseñadas con fines científicos (simulación de fenómenos físicos o químicos) o con el simple propósito de entretener. Otras más fueron adaptadas de su propósito original a otro distinto, tal es el caso de la tecnología OpenGL, que fue diseñada por la compañía SGI (Silicon Gráphics) con el fin de usarla en sus supercomputadoras, y que posteriormente fue adoptada en la creación de juegos 3D.

API (Application Program Interface), es una colección de rutinas para escribir programas con soporte para cierto tipo de hardware o sistema operativo. Una API 3D permite crear programas que automáticamente hacen uso de la capacidad de una placa aceleradora gráfica, los cuales se ejecutan directamente en el chip gráfico de ésta mediante lenguajes de bajo nivel.
Las APIs más conocidas y usadas en la graficación para equipos de uso doméstico son:

Direct 3D

Es una API propietaria de Microsoft que fue rechazada por los programadores en sus comienzos, puesto que su programación era bastante compleja; aun así fue fuertemente difundida, ya que Microsoft la incluyó en sus plataformas Windows 95/98.
Existen varias versiones de esta tecnología, que van desde DirectX 5 hasta el actual DirectX 10. Sin embargo, las versiones que más impacto tuvieron en los desarrolladores de software 3D fueron la versión 7 (donde se incluye la tecnología T&L) y la 8, la cual estaba enfocada precisamente al aumento de realismo.

DirectX 8

Esta tecnología incluyó gran variedad de avances significativos, pero el mayor de ellos fue la capacidad de programación, la cual permite a los desarrolladores de gráficos 3D crear efectos y agregar funciones a las unidades de procesamiento gráfico (GPU), mediante cálculos específicos sobre los píxeles y vértices. Las versiones de DirectX posteriores eran flujos de procesamiento fijo, lo que significa que los programadores no tenían la libertad de programar el hardware directamente y tenían que depender de funciones estáticas de la API. El conjunto de instrucciones que incorpora DirectX 8 son instrucciones de bajo nivel.
Una de las primeras GPUs capaz de soportar esta API fue la GeForce 3 creada por la compañía NVIDIA, la cual estaba orientada a equipos de uso doméstico.
La capacidad de programación de DirectX 8 se divide en dos partes. La primera opera sobre los vértices (geometría) y se le conoce como Vertex Shaders (sombreado por vértices) programables. La segunda opera sobre los píxeles y se le denomina Pixels Shaders, ésta permite aplicar efectos personalizados a cada píxel.

OpenGL

Esta API fue creada por la compañía Silicon Graphics (SGI) y es usada en juegos y en programas de aplicación 3D como Maya, 3D Studio MAX, etc.
La tecnología OpenGL está diseñada para ser independiente de plataformas y sistemas operativos, lo que la hace una API portable y de fácil migración. OpenGL puede incorporarse a la red, lo que hace posible crear aplicaciones cliente-servidor, permitiendo que el servidor se ocupe de la compleja simulación gráfica y el cliente únicamente de la visualización.
En OpenGL sólo se cuenta con primitivas de objetos geométricos: puntos, líneas y polígonos. Dado que en un principio las bibliotecas de OpenGL no incluían soporte para ventanas, como por ejemplo: abrir una ventana, cerrar una ventana, escalar una ventana, dar forma a una ventana, leer la posición del cursor; ni soporte a los dispositivos de entrada como la lectura del teclado, Mark J. Kilgard de SGI desarrolló una biblioteca adicional independiente de la plataforma que resuelve este problema, a la cual se le conoce como GLUT-library.
John Carmack fue quien utilizó por primera vez esta API para el desarrollo de juegos de video 3D (siendo Quake el primero de ellos), y la escogió por su facilidad de programación, algo que en ese entonces no ofrecía Direct3D. Posteriormente se crearon más programas y juegos con soporte para OpenGL como Quake II, QuakeIII, 3DMax, Maya, etc., por lo que se requería que las placas de video de esa y posteriores generaciones, soportaran esta API.

VRML

Virtual Reality Modeling Language (VRML) es un lenguaje de modelado de mundos virtuales en tres dimensiones.
En la Primera Conferencia Mundial de la WWW en Ginebra, se aprobó el desarrollo de un nuevo lenguaje que permitiese crear mundos en tres dimensiones a los que se pudiera acceder por la World Wide Web. El lenguaje se desarrolló con base en varios requisitos: que fuese adaptable a la red, que no requiriese anchos de banda elevados, que fuese multiplataforma, etc.
El VRML es un lenguaje textual que describe elementos tridimensionales y entornos interactivos que pueden ser visualizados desde Internet. Éste lenguaje surgió en 1994 y ha ido evolucionando en varias versiones. Aunque un ambiente VRML puede ser generado en un simple editor de texto como el Notepad, existe más de una forma de crear archivos VRML, una opción es mediante lenguajes de bajo nivel, la cual requiere de un pleno conocimiento de las sintaxis del lenguaje de bajo nivel especificadas en la ISO 8879; otra alternativa es usando un programa de diseño 3D en el cual se crea el entorno para posteriormente ser exportado en un archivo VRML compatible, esta ultima alternativa tiene como ventaja la rápida creación de los entornos, gracias a las herramientas de modelado con que cuentan los programas de diseño 3D de la actualidad, y como desventaja el poco acceso a todas las posibilidades del lenguaje VRML, además de que el código generado no es el mas eficiente.
Los archivos VRML son simples archivos de texto que contienen las instrucciones para crear los objetos y el entorno virtual, los cuales pueden ser creados o abiertos con cualquier editor de texto, por ejemplo Notepad. Posteriormente, mediante un visualizador que se carga en nuestro navegador, podemos visualizar el mundo virtual generado a partir de este archivo.
La ventaja de VRML es lo ligero que es, ya que los archivos son sólo texto y no ocupan mucho espacio de almacenamiento, lo que los hace una opción ideal para su uso sobre Internet. VRML es también independiente de la plataforma y el sistema operativo.
La desventaja de VRML es que, dada su simplicidad, no ofrece una amplia gama de efectos visuales ni texturas detalladas que permitan un alto nivel de realismo en entornos virtuales.
Existen otras tecnologías de graficación 3D, como por ejemplo: Glide y Power SGL, las cuales no fueron muy difundidas o incluso ya no se usan en la actualidad. Las tecnologías más importantes y con mayor soporte son las API’s DirectX y OpenGL, las cuales son soportadas por las placas de uso doméstico de última generación.

Características

Antialiasing

El Aliasing, es el efecto de dentado que resulta muy visible en los monitores cuando se crean líneas en ángulos cercanos a líneas verticales u horizontales. A este efecto se le conoce como “jaggies”, irregularidades, escalera o dientes de sierra, debido al aspecto irregular de las líneas que deberían parecer uniformes, donde la altura de cada “diente” es proporcional a un píxel en pantalla.


Aliasing en pantalla completa.

Las distorsiones en pantalla también pueden hacer que las líneas parezcan más gruesas de lo que en realidad son. Ambos “defectos” de la imagen se pueden observar en la siguiente figura, la cual muestra dos versiones de una línea: una línea casi perfecta y otra con irregularidades. (Nota: Las líneas se han ampliado para visualizar mejor el problema).


Aliasing en líneas.

Las distorsiones son causadas por la cuadrícula de píxeles de la pantalla, la cual funciona como si fuera una matriz en la que los píxeles se encuentran ubicados en filas y columnas exactas. El aliasing o distorsión se produce cuando una línea cruza las filas y columnas en un ángulo diferente al formar los bordes de los objetos en la escena, ya sean objetos 3D o imágenes 2D; este efecto reduce mucho el realismo y credibilidad en los objetos. La técnica denominada antialiasing intenta eliminar o reducir esta distorsión.


Tetera sin antialiasing. Tetera con antialiasing.

Existen varias técnicas para eliminar el efecto de aliasing, unas más optimizadas y rápidas que otras. Algunas técnicas se basan simplemente en crear la imagen a una mayor resolución y posteriormente mostrarla en un tamaño menor, lo que cuesta bastante trabajo al procesador gráfico. Otra forma de realizar el antialiasing es generando degradados de colores por píxel entre las fronteras de los objetos o entre la frontera de un objeto y el fondo, engañando así al ojo humano. Hoy en día existen muchas técnicas de antialiasing más rápidas y eficientes, por ejemplo el Quincunx (muestreando píxeles vecinos), Antialiasing 2x, 4x, 6x, 8x, Accuview, Intellisample, etc., todas ellas con el mismo fin: lograr mayor realismo en los objetos mediante la eliminación del efecto de dentado.
A continuación se muestran imágenes comparativas capturadas del juego Quake III que muestran diferentes tipos de antialiasing logrados con una placa de video GeForce 3, además de los rendimientos correspondientes para cada tipo de antialiasing según la compañía NVIDIA.


Quake III con diferentes tipos de antialiasing (AA).



Desempeño en Quake III a 1024x768 a 32 bits.


Como se puede observar en la primer figura, la calidad obtenida con el antialiasing Quincunx y el 4x es muy semejante, sin embargo, de acuerdo a la gráfica de la segunda imagen, el rendimiento obtenido con el método Quincunx es bastante superior al método 4x, ya que logra un incremento de 30 FPS; esto lo convierte en el mejor método (en relación calidad/rendimiento) para eliminar el efecto de aliasing en los entornos virtuales.
El antialiasing provee de entornos virtuales más nítidos y con líneas más definidas, que les da un aspecto más suave, definido y semejante a la realidad, eliminando el molesto efecto de objetos dentados. Gracias a esto, el antialiasing puede proveer un mayor realismo e inmersión en los entornos virtuales.
Como se mencionó anteriormente, existen diferentes tipos de antialiasing, los cuales varían en rendimiento y calidad dependiendo de la placa de video con que se cuente. No se ha dado una explicación completa y detallada de cada uno de los diferentes tipos de antialiasing, sólo se dieron a conocer algunos métodos y se propone aquél que se considera más óptimo en relación a la calidad mostrada y el desempeño obtenido, según pruebas hechas por la compañía desarrolladora de estas tecnologías.
Independientemente del método de antialiasing que se escoja, el simple hecho de usarlo en un entorno virtual arquitectónico ayudará a que éste tenga una apariencia más detallada, suave y realista a la que se obtendría sin usar ninguno de estos métodos.
El antialiasing, además de las ventajas anteriormente mencionadas, ofrece la ventaja de que no necesariamente tiene que ser programado, ya que éste puede ser activado de dos formas: la primera mediante programación en la aplicación 3D y la segunda mediante las opciones de configuración avanzada del controlador de video, el cual puede detectar la aplicación que se está ejecutando y ajustar los parámetros (previamente seleccionados) de antialiasing automáticamente.

Iluminación y Transformación (T&L)

Uno de los aspectos mas importantes que se deben tener en cuenta para mejorar el realismo en los entornos virtuales, es el correcto manejo de luces y sombras.
El principal logro deseado por los gráficos computarizados y diseñadores arquitectónicos, es poder crear en el usuario la percepción de una realidad alternativa.
Los efectos de iluminación mejoran el impacto en los entornos virtuales, ya que confieren mayor realismo a los detalles de una escena, debido a que el ojo humano es más sensible a los cambios de brillo que a los de color. Por ello, la iluminación es uno de los pasos más importantes en la representación gráfica de entornos virtuales, ya que sitúa las imágenes procesadas más cerca de nuestra percepción del mundo real.
Los cálculos de iluminación se usan para modificar de forma sutil o radical el brillo de los objetos 3D y hacerlos más semejantes a los del mundo real. El correcto tratamiento de luces y sombras es de vital importancia para crear escenas realistas que sean más atractivas a los usuarios, ya que, a mayor realismo en las escenas 3D, mayor será su impacto y utilidad.
Como se pueden apreciar en la siguiente imagen, una escena con mejores efectos de iluminación conseguirá transmitir más información al espectador en el mismo lapso, que una que no los tenga.


Ejemplo de iluminación.

En los gráficos 3D, la iluminación consta de dos componentes principales: la iluminación difusa y la iluminación especular. La iluminación difusa es aquella que incide sobre un objeto y se dispersa de igual forma en todas las direcciones, de tal manera que la luz reflejada no depende de la posición del observador; un ejemplo de iluminación difusa en el mundo real es el sol en un terreno de juego. La iluminación difusa también sirve para calcular el brillo de los objetos en las escenas 3D. Por el contrario, la iluminación especular depende de la posición del espectador, la dirección de la luz y la orientación del triángulo en el que se refleja; la iluminación especular muestra las propiedades reflectantes de los objetos y permite crear efectos de reflejos y resplandores. La siguiente imagen muestra dos ejemplos de estos tipos de iluminación.

Luz Difusa Luz Difusa + Luz Especular
Tipos de iluminación.

Los reflejos creados con la luz difusa se mueven a través de los objetos cuando el observador o el objeto se mueven con respecto a la fuente de luz, por lo que deben ser calculados en tiempo real y ser dinámicos a los cambios de posición en el entorno. La iluminación especular se usa para crear efectos de desplazamiento y para dar la apariencia a los distintos materiales de los objetos, por ejemplo, la apariencia de una camisa de seda que es distinta a la de una de algodón o los reflejos en el mármol pulido que serían distintos a los de un mármol sin pulir. El pulido no afecta el color ni la textura del mármol, pero sí el modo en que la luz se refleja en él.
Es tal la importancia que se le ha dado a la iluminación, que la mayoría de las placas de video actuales incluyen, en su GPU, unidades de procesamiento especialmente dedicadas a la iluminación y transformación (T&L).
La iluminación y el sombreado dependen del tipo y posición de la fuente de luz, así como de otros factores adicionales, como son: punto de vista del observador, posición de los objetos, complejidad de los objetos, etc., debido a que las luces y sombras generalmente son dinámicas. Así pues, sin una iluminación integrada, los objetos no pueden reaccionar con precisión a los cambios complejos del punto de vista del observador con relación a las fuentes de luz.
La transformación e iluminación forman parte de uno de los primeros y más importantes pasos en el flujo de procesamiento gráfico 3D de una GPU. Durante este paso es necesario ejecutar un conjunto concreto de instrucciones miles de millones de veces por segundo para procesar una escena. Es tanto el poder de procesamiento que se necesita para calcular las transformaciones e iluminaciones de los entornos, que se optó por incluir motores de transformación e iluminación en las GPU, cuyas funciones son:

- Transformaciones matemáticas entre los diferentes sistemas de coordenadas o “espacios” en los entornos, los cuales pueden ser:
1. Espacio del mundo, el cual contiene todos los objetos 3D del entorno.
2. Espacio del ojo, el cual se usa para iluminar y seleccionar los objetos.
3. Espacio de la pantalla, que es la vista que se muestra al usuario y se almacena en el búfer de tramas gráficas.


Tipos de coordenadas (“espacios”).

Las operaciones de transformación son operaciones de multiplicación de matrices de tamaño 4x4. Un vector que representa datos 3D, se multiplica por una matriz 4x4 llamada matriz de transformación y el resultado es un vector transformado.


Multiplicación de matrices

- Cálculos de luces. Los cuales realiza el motor de iluminación mediante el cálculo de los vectores de distancia entre las luces y los objetos 3D del entorno, y entre los objetos y los ojos del usuario; como ya se sabe, los vectores contienen información sobre la dirección y la distancia, datos que son obtenidos por el motor de iluminación. Los cálculos de luces se utilizan en la iluminación por vértices, pero además, ayudan a crear otros efectos visuales tales como la niebla.
La ventaja que se obtiene al usar motores T&L, es que todos los procesos que anteriormente se realizaban en la CPU y ocasionaban problemas, ahora se llevan a cabo de manera más rápida y eficiente en la GPU, liberando así al microprocesador de esta tarea para que pueda encargarse de otras más específicas (simulaciones físicas, Inteligencia Artificial, etc.) y permitiendo a los desarrolladores crear entornos 3D con mayor riqueza de detalles y objetos más definidos, a las mismas velocidades de trama (FPS).


Uso del T&L.

Como se puede apreciar en la imagen, la posibilidad de usar un mayor número de polígonos puede incrementar enormemente el realismo en los objetos. En la imagen de la izquierda se observa la falta de detalles (ruedas octogonales, puertas simples, etc.) que ocasiona pérdida de realismo, esta carencia de detalles hace una gran diferencia en el nivel de inmersión al momento de crear experiencias interactivas en los usuarios.

Sombreado

Como ya se explicó anteriormente, la iluminación es un factor clave en el aumento de realismo en entornos virtuales; así mismo, como todos sabemos, casi toda fuente de luz produce sombras al incidir sobre un objeto, las cuales dependen de diversos factores como: la posición de la luz, el tipo de luz, el color de la luz, la textura, el tipo de objeto sobre el que incide, etc.
Un entorno virtual puede estar perfectamente iluminado, pero de no existir sombras, el ojo humano no percibe dicho entorno como algo creíble debido a que estamos a acostumbrados a que, al incidir la luz sobre un objeto, éste proyecte su sombra sobre otros objetos o sobre sí mismo. En resumen, un entorno virtual sin sombras provocará en los usuarios un menor nivel de realismo e inmersión, que aquél que sí las proyecte. Lo anterior puede ser apreciado en la siguiente imagen.


Sin sombra Con sombra
Sombras en los entornos.

Las luces y sombras son parte de nuestra existencia, la ausencia de ellas engaña a nuestros ojos y nos provee de poca información sobre el entorno. El ser humano capta inconscientemente mucha información de las sombras, como puede ser: la profundidad de los objetos, la distancia a la que se encuentran unos de otros, la posición de la fuente de luz que los está iluminando, el color de los objetos, el tipo de luz, la intensidad de la luz, entre otros. Por ejemplo, en la imagen anterior sin sombra no se puede apreciar con exactitud la distancia entre las columnas y la pared; por el contrario, la imagen con sombras nos permite apreciar claramente la distancia entre las columnas y la pared, además de provocar una mejor percepción de los espacios y dimensiones de la escena 3D.
Todos los cálculos de luces y sombreado son operaciones matemáticas complejas, las cuales resultan ser demasiadas para procesarse y mostrarse en tiempo real. Para solucionar este problema se creó una técnica llamada Light Maps (mapas de luces) y otra llamada Shadow Maps (mapas de sombras); ambas crean un sombreado e iluminación ficticia a partir de texturas. Este tipo de iluminación no necesita de fuentes de luz, ni de realizar cálculos complejos de incidencia de luces y proyecciones de sombras que sí se requieren cuando se trata de luces dinámicas, y, al no realizar esto, sus procesado es mucho más rápido (Weinhaus y Devarajan 1997).
Estas técnicas de iluminación y sombreado se crean gracias a la capacidad de multitextura que incluyen las GPU’s, la cual permite combinar dos o más mapas de texturas para conseguir efectos especiales más reales en los mundos tridimensionales.

A B C

Multitextura

La imagen A muestra un mapa de textura de ladrillo bidimensional (textura base), la imagen B representa un mapa de luz y sombras (light map) y la imagen C muestra el resultado obtenido al aplicar multitextura. Esta técnica está disponible desde la versión DirectX 7.
El inconveniente de esta técnica es que no permite al usuario cambiar la posición de la luz, su intensidad, o algún otro parámetro de ésta, ya que se utiliza generalmente para sombras y luces estáticas. Además, cuando se necesita de una fuente de iluminación y sombreado dinámico, y se requiere que ésta sea manipulada por el usuario, no se puede hacer uso de esta técnica, por lo que se necesitan algoritmos más complejos que permiten crear luces dinámicas en tiempo real.
Existen muchas técnicas para representar sombras realistas, cada una con su propia ventaja y desventaja. Una de las técnicas más usadas por hardware gráfico es la llamada mapeo de sombras (shadow maps), la cual fue incorporada por primera vez en la GPU GeForce 3 de NVIDIA, y presenta las siguientes características:

• Escenas complejas
El mapeo de sombras funciona bien en las escenas de gran complejidad arbitraria que contienen un gran número de objetos o formas detalladas.
• Bordes de sombra más uniformes
Esta técnica puede suavizar los bordes de las sombras mediante un algoritmo de filtro de exclusivo.
• Auto sombra
Los objetos pueden proyectar su sombra sobre sí mismos.
• Compatible con rendering multitextura
Permite aplicar sombras en un solo paso a aquellos objetos que usan la técnica de multitexturizado, lo que optimiza el ancho de banda de la memoria de video.

Los efectos obtenidos mediante la técnica de shadow maps ofrecen una buena opción para ambientar entornos virtuales realistas que requieran una buena iluminación y sombreado en tiempo real.


Escenas complejas - Bordes suaves - Auto sombras
Técnicas de shadow mapping.

Hasta hace poco tiempo, esta tecnología sólo era implementada en equipos profesionales de renderizado, lejos del alcance de los usuarios convencionales. Fue NVIDIA la primer compañía en incluir este tipo de tecnología en sus placas de video (GeForce 3) orientadas a usuarios convencionales (PC desktops), y en implementar varias tecnologías que dan soporte nativo (por hardware) a la representación de diversos tipos de luces y sombras.
La técnica de Shadow maps hace posible implementar, en diseños arquitectónicos, luces que simulen focos, lámparas o luces ambientales en diferentes horas del día (atardecer, anochecer, etc.). También permite crear las sombras de los objetos según la posición del la fuente emisora de luz y modificar (en tiempo real) los atributos de ésta.
Las placas de video actuales proveen nuevas y más avanzadas tecnologías para crear sombras más detalladas y verosímiles. Un ejemplo de éstas es la tecnología de Ultrashadow de NVIDIA, la cual acelera los cálculos necesarios para determinar las interacciones entre las distintas fuentes de luz y los numerosos objetos y personajes que componen una escena, permitiendo crear entornos virtuales más realistas y veloces. Esta técnica se encuentra implementada en las placas de video GeForce FX 5900, 5700, Go5700 y GeForce 6, siendo esta última la posee soporte para Ultrashadow II, que permite duplicar el rendimiento.
La técnica de Ultrashadow II ya se está implementando en juegos de alto rendimiento y realismo como son Doom III de Id Software y Abducted de Contraband Entertainment; los cuales, gracias al correcto manejo que muestran de la iluminación y el sombreado, y a las tecnologías optimizadoras como Ultrashadow II, logran crear una gran sensación de inmersión en el jugador.
Esta técnica de optimización de sombras se basa en suprimir el análisis de las partes innecesarias de la imagen, mediante la definición (por parte del programador) de una zona en la escena conocida como límites de profundidad que limita los cálculos de luces y sombras únicamente a los objetos que se encuentran dentro de esta área, liberando así a la GPU de cálculos innecesarios. Además, Ultrashadow cuenta con la capacidad de descartar los píxeles ocultos, haciendo que el hardware no tome en cuenta aquéllos que no van a contribuir a formar la imagen final.


Definición de los valores mínimos y máximos para cálculos de luces.

Niveles de Detalle (LODs)

Para lograr un mayor realismo en un entorno virtual, se deben usar escenas complejas y detalladas que requieren un gran número de polígonos y una gran capacidad de procesamiento de gráficos, lo cual, hasta hace algún tiempo, no era fácil de adquirir en equipos de escritorio o en sistemas menos complejos. Por esta razón se decidió realizar versiones más simplificadas de los objetos (lo que implica menos polígonos y menos procesamiento gráfico) sin perder las características visuales de éstos. En 1976, Clark sugirió el uso de versiones más simples de geometría para objetos que tuvieran menos importancia visual, como aquéllos lejanos al observador; a estas simplificaciones se les conoce con el nombre de Niveles de Detalle (LODs) (Clark, 1976).
Los LODs se crearon para resolver el problema entre desempeño en interactividad y convincentes formas detalladas de muchos objetos en una escena. Los LODs automáticos ajustan la complejidad de la forma de los objetos, mediante uno o más parámetros de entrada, mostrando el nivel de detalle más adecuado para las condiciones de vista actual.
Uno de los parámetros de entrada más usados para definir el nivel de detalle que se mostrará en los objetos, es la distancia que hay entre éstos y el observador. Mientras mayor sea la distancia entre el objeto y el observador, menor será el detalle y complejidad del objeto y viceversa. La siguiente imagen muestra un ejemplo de LODs con el parámetro distancia.


Niveles de detalle.

Las placas aceleradoras actuales para computadoras personales o estaciones de trabajo (tales como las GeForce de NVIDIA y la Radeon de la ATI) son capaces de lograr dichos niveles de simplificación dinámicamente por hardware.
La siguiente imagen muestra un objeto en modo Wireframe (modo malla o líneas) con alto y bajo nivel de detalle. La imagen de la izquierda se encuentra más alejada del observador, mientras que la imagen de la derecha se encuentra más cercana al observador.


Bajo nivel Alto Nivel
Niveles de detalle en un dinosaurio.

En resumen, la capacidad de representar distintos niveles de detalle dinámicos (DLOD) en los objetos de un entorno virtual, según la cercanía de éstos con el observador, nos da la posibilidad de no sobrecargar la computadora tratando de representar el máximo detalle de los objetos en el entorno, cuando muchos de éstos ni siquiera son tomados en cuenta por el observador, o no se encuentran en su rango de visión. En caso de que el observador desee visualizar un objeto (o grupo de objetos) con mayor detalle, bastará simplemente con acercarse lo más que pueda al objeto (tal como lo hacemos en la vida real) para apreciarlo con mejor calidad hasta observarlo con el nivel detalle que fue creado.
Un ejemplo del uso de niveles de detalle en la vida real es cuando visualizamos en la lejanía un carro, una persona, ave o avión, y su detalle es poco (dada la distancia a la que se encuentra), pero a medida que nos acercamos a éstos, podemos apreciarlos mejor.

Vertex Shaders (Sombreado por vértice)

Con el fin de incrementar aun más el realismo en los entornos virtuales y videojuegos, se desarrollaron dos nuevas tecnologías: Vertex Shaders y Píxel Shaders, las cuales podían representar una gran cantidad de efectos visuales de alto impacto en los usuarios. Microsoft implementó la capacidad de usar estas dos nuevas tecnologías en su API DirectX 8.0 y posteriores; y fueron NVIDIA, ATI, MATROX, entre otras compañías de placas de video, las que les dieron soporte por hardware.
Mediante el uso de la API DirectX 8.1 de Microsoft y una placa aceleradora que dé soporte a esta tecnología, una computadora de escritorio es capaz de recrear una gran cantidad de impresionantes efectos visuales en tiempo real, lo cual no era posible anteriormente. Estos efectos van desde niebla y efectos de movimiento, hasta agua realista, sombras dinámicas reales, pelo, rugosidad, ola de calor, deformación de procedimiento, etc., y serán mostrados con más detalle posteriormente.
Vertex Shaders es una función de procesamiento gráfico que genera efectos especiales en los objetos de una escena gráfica 3D, permitiendo a los programadores ajustar dichos efectos mediante el uso directo de nuevas instrucciones de software en los motores de sombreado por vértice, las cuales están orientadas a realizar operaciones matemáticas precisamente con los datos almacenados en los vértices de los objetos. Estos datos pueden ser coordenadas x,y,z, color, canal alfa, textura, características de iluminación, entre otros. En la siguiente figura se muestra un ejemplo de la información que almacena un vértice.


Datos de un vértice.

El sombreado por vértice programable es esencialmente una extensión de los motores de iluminación y transformación, los cuales nos permiten realizar un número casi infinito de efectos visuales de alto detalle, sin afectar las velocidades de trama en tiempo real. Todos los cálculos de sombrado por vértice programable son realizados por la GPU, lo que permite que la CPU se ocupe de realizar otros cálculos matemáticos más específicos.
A continuación se muestran los principales efectos visuales que se pueden crear mediante el uso de Vertex Shaders y las ventajas que ofrecen al usuario:

• Animación compleja de personajes.
Da la posibilidad al usuario de recrear piel y ropa más realista, que se puede estirar y arrugar correctamente en las articulaciones como codos y hombros. También pueden crearse animaciones faciales, las cuales pueden incluir hoyuelos o arrugas que aparecen cuando el personaje sonríe y desaparecen cuando éste deja de hacerlo. Esta característica permite crear gestos más específicos que recrean con más exactitud los estados de ánimo en las personas virtuales (avatar).
Las siguientes imágenes fueron obtenidas de un demo de NVIDIA que hace especial uso de esta tecnología, siendo capaz de mostrar en tiempo real distintos tipos de expresiones humanas en un personaje virtual, además de recrear exitosamente las deformaciones que aparecen en la piel cuando expresamos nuestro estado de ánimo mediante un gesto facial. La capacidad de poder expresar estados de ánimo en los personajes hace que el usuario los perciba más realistas.


Animaciones faciales en tiempo real mediante Vertex Shaders.

La capacidad de Vertex Shaders de admitir hasta 32 matrices de control, permite usar hasta un máximo de 32 huesos y músculos para crear distintos componentes del esqueleto de un personaje. Al incluir huesos y músculos en las animaciones de los personajes, se recrean efectos de movimientos más reales para el espectador, haciéndole creer que el avatar virtual es en verdad una persona.


Animaciones por huesos.

• Efectos de entorno.
Gracias a los Vertex Shaders, es posible crear niebla o humo e incluirlo en las escenas virtuales, pudiendo resaltar ciertos objetos por encima de dicha niebla, gracias a que vertex shaders permite aplicar, de forma selectiva, efectos basados en la altura o elevación de cada vértice en el objeto.


Niebla mediante Vertex Shaders.

Otro efecto de entorno que se puede realizar mediante el uso de vertex shaders es el efecto de ondas de calor, el cual crea la ilusión de deformación de los objetos cuando éstos se encuentran en ambientes muy calurosos (Fig. A).

A B
Efectos visuales extra.

Además de los efectos de calor, pueden crearse efectos cáusticos y de refracción, los cuales son necesarios cuando se desea crear agua con gran realismo en escenas 3D (Fig. B).

• Deformación de procedimiento.
Este tipo de deformación puede añadir movimientos complejos a los objetos, que de otro modo tendrían que ser estáticos o muy poco realistas. Por ejemplo, deformaciones en las ondas de agua, el ondear de una bandera, la respiración en el tórax de un animal o de una persona, deformaciones en la ropa, etc.
Deformación de agua Deformación de bandera

Tipos de deformaciones mediante vertex shaders.


Otro efecto es el de movimiento borroso, como el que se muestra cuando un objeto va a gran velocidad, por ejemplo, una nave espacial a supervelocidades.
El efecto de deformación también puede ser estático en lugar de dinámico, por ejemplo las deformaciones que se producen en un objeto metálico por el impacto de las balas de gran calibre.

A B

Deformaciones estáticas y dinámicas.


• Interpolación de tramas.
Es una técnica similar a la de animación por key frames, la diferencia es que la interpolación de tramas se crea a partir de varias versiones de un objeto, mezclando (interpolando) la posición de cada vértice en dos imágenes (Fig. A y C) y generando una intermedia (Fig. B); la versión interpolada se genera un poco antes de necesitarse y se almacena temporalmente, después es eliminada para generar otra interpolación. Este tipo de animación depende del hardware, por lo tanto, con un hardware mas rápido, se generan más interpolaciones por minuto y la animación resultante es más fluida.



A) Delfín n°1 B) Delfín Interpolado C) Delfín n°2
Interpolación de tramas.


• Efectos de lente e iluminación personalizados:
Gracias a los vertex shaders también podemos crear algunos efectos especiales como los efectos de lentes ópticos. Un ejemplo es el efecto “ojo de pez”, el cual se genera cuando vemos a través de una mirilla de puerta o del visor de una minicámara.
Anteriormente no era posible la iluminación de las dos caras de un polígono, ya que no todas las GPUs eran capaces de gestionar la parte posterior de un triángulo, debido a que la parte interior de un objeto hueco no se ve en pantalla. Intentando resolver esto, los diseñadores creaban dos objetos, uno interior y otro exterior, lo que implicaba el doble de polígonos. Ahora, con vertex shaders esto no es necesario.


Efecto de ojo de pez. Luces personalizadas.

Como se puede observar, los vertex shaders nos permiten crear, en tiempo real, una gran variedad de efectos visuales que antes no eran posibles. Estos efectos aportan un aumento considerable en el realismo de los entornos virtuales, puesto que, gracias a ellos, podemos simular acciones, efectos y eventos que suceden en la vida real y que estamos acostumbrados a visualizar cotidianamente.
Los efectos por vertex shaders generalmente no se aplican solos, sino que se encuentran acompañados de los efectos generados por píxel shaders; los cuales, como veremos a continuación, aportan un detalle extra a los objetos.

Píxel Shaders (Sombreado por Píxel)

Otra técnica que se inventó e implementó en las placas aceleradoras con el fin de aumentar el realismo en los entornos virtuales, es la denominada Píxel Shaders o sombreado por píxel. Esta técnica permite crear efectos especiales de alto realismo mediante pequeños programas (de bajo nivel) que manipulan ciertos píxeles en la escena; algo que habría resultado imposible de conseguir con el hardware 3D anterior.
Muchos de los efectos creados con este tipo de tecnología hacen uso de más de una textura aplicada a un objeto, por lo que es necesario que el hardware gráfico soporte multitexturizado, el cual permite aplicar, en una sola pasada, varias texturas a un mismo objeto.
Los motores nfiniteFX (llamado así por el número casi infinito de efectos posibles de crear) de NVIDIA y SMART SHADERS de ATI, cuentan con la capacidad de gestionar 4 o más texturas en una sola pasada, lo que posibilita la creación de efectos píxel a píxel anteriormente imposibles de generar en plataformas convencionales. La capacidad de aplicar 4 texturas en una sola pasada aumenta el rendimiento en el proceso de rendering, ya que, al hacerlo en varias pasadas, éste se vuelve más lento.
Un efecto visual de alto impacto creado mediante el uso de píxel shaders y la capacidad de multitexturizado, es el efecto de Bump Mapping o mapeado de relieve, el cual crea la ilusión de geometría adicional que puede observarse en los relieves de los pisos, paredes rugosas, ladrillos, arrugas en la piel de animales u objetos, etc. Existen varios tipos de mapeos de relieve: Dot3, EMBM (Environmental Bump Mapping), etc; a continuación se expondrá el Dot3.
El mapeado de relieve Dot3 requiere de la capacidad de procesar múltiples capas de texturas, ya que, para aplicar este tipo de mapeo a los objetos, se necesitan 3 texturas: una textura base, un mapa de altura (Fig. A) y un mapa normal; gracias a ellas se puede definir la superficie visible. El mapa de altura es una imagen a escala de grises, donde los tonos de grises representan la altura del píxel; un píxel más claro (blanco) representa una altura mayor, y un píxel más oscuro (negro) una altura menor. El mapa normal (Fig. B) es un mapa RGB que define el efecto de iluminación en la superficie, es decir, cómo se comportará la luz al incidir sobre las distintas partes del objeto. Cuando se dice “normal” se refiere a la normal matemática que define la dirección de un vector, en este caso, del vector dirección hacia donde será reflejada la luz. La textura base (Fig. C) es una textura RGB que indica el color y la tonalidad del objeto, por ejemplo, para una pared, podría ser una textura de ladrillo. A continuación se muestra un ejemplo de Dot3 bump mapping.

A B C D – Imagen resultante

Dot3 bump mapping.


Como se puede apreciar en la imagen anterior (Fig. D), el efecto de bump mapping permite apreciar los objetos con un detalle semejante al que muestran en la realidad sin necesidad de incrementar el número de polígonos en la escena (la “pared” anterior sólo cuenta con dos triángulos), lo que nos brinda la capacidad de crear entornos virtuales con paredes más realistas, a las mismas velocidades de tramas.
Este tipo de mapeo requiere de una o más fuentes de luz que iluminen los objetos, para así poder producir el efecto de relieve en éstos. A continuación se muestran algunas imágenes que usan este tipo de tecnología:


Ejemplos de pixel shaders.

Todos los cálculos de relieves y sombreado pueden ser modificados en tiempo real dependiendo de la fuente de luz, lo cual hace del mapeo de relieve una técnica ideal para representar escenas en movimiento, como por ejemplo, cuando la luz viaja entre diferentes objetos, es decir, cuando la luz no es estática.
Dado que los mapeos de relieve creados mediante Dot3 bump mapping requieren una o más fuentes de luz y, como se explicó anteriormente, el cálculo de luces es algo complicado, el rendimiento de una escena puede verse disminuido (aún en las placas de video actuales) cuando se usa un gran número de luces, debido al cálculo excesivo necesario para generar los relieves.
Para resolver este posible problema se creó otra técnica de mapeo de relieve, la cual no necesita de una fuente de luz para generar tales relieves, pero sí de la capacidad de multitexturizado por hardware. Esta técnica usa 3 mapas de textura: la textura base (Fig. A), la textura de alturas (Fig. B) y la textura de iluminación (Fig. C), esta última indica cómo incidirá la luz en el objeto. Mediante este tipo de técnica se pueden crear objetos con relieves estáticos a mayor rendimiento que el obtenido con la técnica Dot3 (Fig. D).

A B C D

Mapas de relieve sin fuente de luz.


Como se puede apreciar en la imagen anterior, el relieve de los objetos (en este caso ladrillos) es definido por un mapa de alturas, igual que en las opciones de relieve anteriores; sin embargo, con este tipo de técnica la iluminación es especificada por un mapa, el cual simula la existencia de una fuente de luz. Este tipo de iluminación es muy usado en lugares con fuentes de luces fijas, como por ejemplo, una lámpara que se encuentra fija en una pared rugosa, una lámpara iluminando una calle empedrada, etc.
Si nos damos cuenta, casi todas las luces o fuentes de iluminación que vemos en la vida real son luces estáticas, por lo que podríamos usar frecuentemente este tipo de iluminación y mapeo de relieves sin necesidad de incluir un gran número de luces que saturen nuestra tarjeta gráfica, sólo se incluirían aquéllas que son necesarias para iluminar los objetos, incluso aquellos con pelo.
Gracias a las técnicas de relieve podemos crear objetos con alto grado de detalle e impacto al ojo humano, lo que nos permite crear entornos virtuales más realistas e inmersivos.

Mapas de Desplazamiento por Hardware (HDM)

Otra técnica basada en texturas para crear relieves en los objetos y hacerlos ver más detallados y realistas, es la técnica conocida como Displacement Mapping o mapas de desplazamiento, la cual se encuentra disponible a partir de las librerías DirectX 9.0 y hace uso tanto de píxel shaders como vertex shaders. La primera placa de video que incluyó esta técnica fue la Matrox Parhelia (Matrox 2002).
El HDM tiene el principio básico de la técnica de mapeo de relieve, sin embargo, esta técnica no simula geometría de altura en los objetos, sino que genera geometría real a partir de mapas de desplazamiento; éstos consisten en imágenes a escala de grises, y son similares a los mapas de altura usados en la técnica Dot3 bump mapping. A continuación se muestran los pasos para aplicar la técnica HDM:

1. Primero se requiere de una malla base con pocos polígonos (Fig. A) para posteriormente realizar el teselado (Fig. B), el cual es un proceso que añade más polígonos a la malla base donde ésta los requiera; esto ayudará, en algunos casos, a dar suavidad geométrica a las superficies de los objetos. Matrox usa una técnica llamada N-Patch para realizar el teselado de las superficies.

A B

Teselado de superficie.


2. El siguiente paso es aplicar el mapa de desplazamiento (Fig. A) a la malla teseleada. Este mapa modificará (de forma semejante a la técnica de mapeo de relieve) la geometría de la malla, de manera que las partes más oscuras de éste representen en la malla las zonas de más bajo nivel y las más claras las de más alto nivel (Fig. B).

A B

Aplicando mapa de desplazamiento y texturizado.


El mapa de desplazamiento también puede ser dinámico (teselado dinámico), lo que permite aplicar distintos niveles de detalle a la superficie, manteniendo una suave transición entre la geometría de los objetos cercanos y lejanos. Esta diferencia en niveles de detalle se crea gracias a los mip-maps (versiones más pequeñas de la textura original), cuya variación permite incrementar los detalles en las superficies cercanas a la cámara y decrementarlos en aquéllas lejanas a la misma, reduciendo así la cantidad de polígonos necesarios en la escena, por ejemplo de 165,150 triángulos (Fig. B) a 17,794 triángulos (Fig. A) en la siguiente imagen.

A

B
Mip-maps aplicados en displacement maps.


3. El último paso en este proceso es el aplicado de texturas y efectos por píxel (píxel shaders) y por vértice (vertex shaders). A este proceso se le conoce como renderización de la escena y mediante éste se obtiene la imagen final que se muestra al usuario.



Gran Cañón usando Displacement Mapping.

La principal ventaja de generar geometría real a partir de los mapas de desplazamiento, es que los objetos pueden proyectar sombras reales ya sea sobre sí mismos o sobre otros objetos, algo que no se puede hacer con los mapas de relieve.
Para entender mejor las diferencias entre bump mapping y displacement mapping, a continuación se muestra un mismo objeto pero con diferentes técnicas de rugosidad.



Diferencias entre Bump Mapping y Displacement Mapping.

Como se observó anteriormente, gracias al mapeo de desplazamiento podemos añadir mayor realismo a los entornos virtuales arquitectónicos de una manera más fácil, ya que nos permite generar (no simular) geometría y su respectiva sombra a partir de simples texturas. Esta geometría puede crear en lo usuarios la impresión de que lo observado es más real. Por ejemplo, si se desea crear un castillo con paredes de ladrillos resaltados, anteriormente sólo se aplicaba la textura plana de ladrillos a la pared, con lo cual no se lograba una apariencia muy real; ahora, podemos hacer que los ladrillos en realidad existan y emerjan de la pared haciéndola parecer más realista e impactante al usuario.


Diferencia entre texturizado normal y displacement mapping.

Otra de las ventajas de usar displacement mapping es la capacidad de crear modelos de personajes detallados a partir de modelos más simples (con pocos polígonos), es decir que, con el mismo modelo simple, se pueden crear diferentes tipos de personajes cambiando únicamente la textura de desplazamiento, la cual variará conforme al personaje que se desee crear. Esta posibilidad ofrece además la ventaja de ocupar menos espacio en disco para el almacenamiento de los modelos de personajes, por lo que la aplicación total se verá beneficiada en su reducción de tamaño.


Modelos de personajes usando Displacement Mapping.


Como se puede apreciar en la imagen anterior, a partir de un modelo base se crearon tres personajes diferentes: un ser extraterrestre, un hombre y una mujer, únicamente cambiando la textura de desplazamiento aplicada al modelo simple.
Gracias a los mapas de desplazamiento, es posible crear personajes más detallados sin necesidad de diseñarlos con tanta complejidad. El nivel de detalle del personaje puede ser modificado una vez que se encuentra en la escena y cambiar dinámicamente dependiendo de la distancia del observador, permitiendo que, a una distancia cercana, un personaje pueda mostrar arrugas en la cara, cuello, etc., e incluso simular las elevaciones de la piel producidas por los huesos.


Modelo detallado usando Displacement Mapping.

La tecnología de displacement mapping es de gran utilidad y de mucha aplicación, sin embargo, esta tecnología únicamente está disponible en las librerías de DirectX 9.0 y posteriores, y en aquellas placas de video que soportan esta API. Algunos modelos de placas de video que la soportan son: por parte de NVIDIA, toda la serie GeForce FX y las más actuales GeForce 8600; por parte de ATI, desde la serie 8500, 9700, 9700Pro, la serie 9800 y las nuevas X800; por parte de Matrox la serie Parhelia, etc. Existen otras compañías que desarrollan placas de video con soporte para las librerías de DirectX 9, sin embargo, las placas de las compañías anteriormente mencionadas, son las que mejor se comportan según los resultados de algunos de los Benchmarks de placas de video, como el 3D MARK de la compañía FUTUREMARK..
Cualquiera que sea su elección, si desea incluir la tecnología Displacement Mapping en su aplicación o videojuego, asegúrese de que su Sistema Operativo se encuentre actualizado con las librerías de DirectX 9 y de que la placa de video de su elección tenga soporte para dicha API.
Además de las tecnologías antes mencionadas (píxel shaders, vertex shaders, etc.), existen otras herramientas e impactantes efectos visuales que se pueden generar mediante el uso de hardware gráfico.

Motion Blur

Cuando una cámara crea una imagen, esa imagen no representa un sólo instante del tiempo. Por las restricciones tecnológicas o los requisitos artísticos, la imagen representa la escena sobre un período de tiempo. Como los objetos en un movimiento de la escena, una imagen de que la escena debe representar una integración de todas las posiciones de esos objetos, así como también el punto de vista de la cámara, sobre el período de exposición determinada según la velocidad del obturador. En tal imagen, cualquier objeto moviéndose con relación a la cámara se verá borroso o embarrado a lo largo de la dirección de movimiento relativo. Esto puede ocurrir en un objeto que se mueve o en un segundo plano de estática si la cámara se mueve. En una película o una televisión la imagen, esto se ve natural porque el ojo humano se comporta adentro muy en la misma forma.
Porque el efecto se debe al movimiento relativo entre la cámara, y los objetos y la escena, el trazo confuso de movimiento puede ser evitado moviendo la cámara en relación a los objeto, adecua la cámara a rastrear esos objetos en movimiento. En este caso, aún por mucho tiempo la fotografía cronometra, los objetos aparecerán más afilado, y los antecedentes más borrosos.

Animación por Computadora: de modo semejante, en la animación de la computadora de tiempo real cada marco muestra un ejemplo perfecto con el tiempo (análogo para una cámara con un obturador infinitamente rápido), con trazo confuso de movimiento de cero. Esto está por que un juego del video con una tasa del marco de 25-30 cuadros por segundo parecerá extraño, mientras el movimiento natural filmado en la misma tasa del marco aparece continuo. Para compensar para esto, las tasas del marco más altas se prefieren, de 60 marcos por segundo o más. La mayoría de los vídeos juegos de la siguiente generación presentan trazo confuso de movimiento, especialmente los de carreras o simuladores de vuelo se les agrega el efecto trazo confuso de movimiento para simular una velocidad acelerada (como una cámara).
En la animación presuministrada de la computadora, algo semejante como películas CGI, simplemente la elevación la tasa del marco no es siempre posible, pero el trazo confuso realista de movimiento puede trazarse porque el suministrador tiene mucho más para trazar cada marco. El aliasing temporal produce marcos como una mezcla de muchos instantes.

Componentes

GPU

La GPU (Graphics Processing Unit, Unidad de Procesado de Gráficos) es un procesador (como la CPU) dedicado al procesamiento de gráficos; su razón de ser es aligerar la carga de trabajo del procesador central y, por ello, está optimizada para el cálculo en coma flotante, predominante en las funciones 3D. La mayor parte de la información ofrecida en la especificación de una placa de video se refiere a las características de la GPU, pues constituye la parte más importante de la placa. Dos de las más importantes de dichas características son la frecuencia de reloj del núcleo, que en 2006 oscilaba entre 250 MHz en las placas de gama baja y 750 MHz en las de gama alta, y el número de pipelines (vertex y fragment shaders), encargadas de traducir una imagen 3D compuesta por vértices y líneas en una imagen 2D compuesta por píxeles.

Memoria de video (VRAM)

Según la placa de video esté integrada en la motherboard o no, utilizará la memoria RAM propia de la computadora o dispondrá de una propia. Dicha memoria es la memoria de vídeo o VRAM. Su tamaño oscila entre 128 MB y 892 MB. La memoria empleada en 2006 estaba basada en tecnología DDR, destacando DDR2, GDDR3 y GDDR4. La frecuencia de reloj de la memoria se encontraba entre 400 MHz y 1,8 GHz.
Una parte importante de la memoria de un adaptador de video es el Z-Buffer, encargado de gestionar las coordenadas de profundidad de las imágenes en los gráficos 3D.

RAMDAC

El RAMDAC es un conversor de digital a analógico de memoria RAM. Se encarga de transformar las señales digitales producidas en la computadora en una señal analógica que sea interpretable por el monitor. Según el número de bits que maneje a la vez y la velocidad con que lo haga, el conversor será capaz de dar soporte a diferentes velocidades de refresco del monitor (se recomienda trabajar a partir de 75 Hz, nunca con menos de 60). Dada la creciente popularidad de los monitores digitales y que parte de su funcionalidad se ha trasladado a la placa base, el RAMDAC está quedando obsoleto.

Salidas

Los sistemas de conexión más habituales entre placa de video y el dispositivo visualizador (como un monitor o un televisor) son:

SVGA: estándar analógico de los años 1990; diseñado para dispositivos CRT, sufre de ruido eléctrico y distorsión por la conversión de digital a analógico y el error de muestreo al evaluar los píxeles a enviar al monitor.

DVI: sustituto del anterior, fue diseñado para obtener la máxima calidad de visualización en las pantallas digitales como los LCD o proyectores. Evita la distorsión y el ruido al corresponder directamente un píxel a representar con uno del monitor en la resolución nativa del mismo.

S-Video: incluido para dar soporte a televisores, reproductores de DVD, vídeos, y videoconsolas.

Otras no tan extendidas en 2007 son:

Vídeo Compuesto: analógico de muy baja resolución mediante conector RCA.
Vídeo por componentes: utilizado también para proyectores; de calidad comparable a la de SVGA, dispone de tres clavijas (Y, Cb y Cr).

HDMI: tecnología digital emergente en 2007 que pretende sustituir a todas las demás.

Interfaces con la mother-board

ISA: arquitectura de bus de 16 bits a 8 MHz, dominante durante los años 1980; fue creada en 1981 para los IBM PC.

MCA: intento de sustitución en 1987 de ISA por IBM. Disponía de 32 bits y una velocidad de 10 MHz, pero era incompatible con los anteriores.

EISA: respuesta en 1988 de la competencia de IBM; de 32 bits, 8.33 MHz y compatible con las placas anteriores.

VESA: extensión de ISA que solucionaba la restricción de los 16 bits, duplicando el tamaño de bus y con una velocidad de 33 MHz.

PCI: bus que desplazó a los anteriores a partir de 1993; con un tamaño de 32 bits y una velocidad de 33 MHz, permitía una configuración dinámica de los dispositivos conectados sin necesidad de ajustar manualmente los jumpers. PCI-X fue una versión que aumentó el tamaño del bus hasta 64 bits y aumentó su velocidad hasta los 133 MHz.

AGP: bus dedicado, de 32 bits como PCI; en 1997 la versión inicial incrementaba la velocidad hasta los 66 MHz.

PCIe: interfaz serie que desde 2004 empezó a competir contra AGP, llegando a doblar en 2006 el ancho de banda de aquel. No debe confundirse con PCI-X, versión de PCI.

Dispositivos refrigerantes

Debido a las cargas de trabajo a las que son sometidas, las pla-cas video alcanzan temperatu-ras muy altas. Si no es tenido en cuenta, el calor generado puede hacer fallar, bloquear o incluso averiar el dispositivo. Para evitar-lo, se incorporan dispositivos refri-gerantes que eliminen el calor excesivo de la placa. Se distinguen dos tipos:

Disipador: dispositivo pasivo (sin partes móviles y, por tanto, silencioso); compuesto de material conductor del calor, extrae este de la placa. Su eficiencia va en función de la estructura y la superficie total, por lo que son bastante voluminosos.

Ventilador: dispositivo activo (con partes móviles); aleja el calor emanado de la tarjeta al mover el aire cercano. Es menos eficiente que un disipador y produce ruido al tener partes móviles.
Aunque diferentes, ambos tipos de dispositivo son compatibles entre sí y suelen ser montados juntos en las placas de video; un disipador sobre la GPU (el componente que más calor genera en la placa) extrae el calor, y un ventilador sobre él aleja el aire caliente del conjunto.

Alimentación

Hasta ahora la alimentación eléctrica de las placas de video no había supuesto un gran problema, sin embargo, la tendencia actual de las nuevas placas es consumir cada vez más energía. Aunque las fuentes de alimentación son cada día más potentes, el problema se encuentra en el puerto PCIe que sólo es capaz de aportar una potencia de 150 W. Por este motivo, las placas de video con un consumo superior al que puede suministrar PCIe incluyen un conector (PCIe power connector) que permite una conexión directa entre la fuente de alimentación y la tarjeta, sin tener que pasar por la placa base, y, por tanto, por el puerto PCIe.
Aún así, se pronostica que no dentro de mucho tiempo las placas de video podrían necesitar una fuente de alimentación propia, convirtiéndose dicho conjunto en dispositivos externos.

Fabricantes

En el mercado de las placas de video se distinguen dos tipos de fabricantes:
De chips: generan exclusivamente la GPU. Los dos más importantes son:

NVIDIA
ATI


De placas: integran los chips adquiridos de los anteriores con el resto de la placa, de diseño propio. De ahí que placas con el mismo chip den resultados diferentes según la marca.

NVIDIA
NVIDIA Corporation (Nasdaq: NVDA) es un fabricante estadounidense de procesadores gráficos (GPUs), chipsets, placas de video y dispositivos para consolas (Playstation 3). Con base en Santa Clara, California, es junto con ATI Technologies e Intel Coporation, uno de los líderes del sector. En 2001, tuvo beneficios por valor de 1.370 millones de dólares.

ATI
AMD/ATI Technologies Inc. es la mayor empresa de hardware que diseña procesadores gráficos, placas de video y procesadores. Su mercado acapara todo tipo de productos para el procesamiento gráfico y multimedia, tanto para computadoras personales, como para dispositivos portátiles, videoconsolas, teléfonos móviles y televisión digital. Su fundación data del 20 de agosto de 1985 (ATI). A la empresa se le ha conocido por varios nombres. Se fundó llamándose Array Technology Inc., pero durante los primeros 5 meses se le cambió a Array Technologies Inc., el 18 de diciembre de 1985 pasó a llamarse ATI Technologies Inc., y definitivamente paso a ser parte de AMD el 25 de octubre de 2006.
ATI tiene su sede en Markham, Ontario, en Canadá. Su plantilla laboral, de acuerdo con su sitio web corporativo, es de 3.300 empleados directos en el continente americano, Europa y Asia. Aunque la manufactura de los productos de ATI se realiza principalmente en Canadá y Taiwán.

Conclusión

Este trabajo práctico presenta un caso de estudio en el cual se analiza la historia, funcionamiento, tecnologías, características, etc. de los monitores y placas de video. Podemos ver que la tecnología tuvo un gran avance en estos últimos años, ya que la grafica obtenida supero muchas expectativas y otras no, pero esas expectativas que no se obtuvieron dan paso a continuar con la investigación de nuevas tecnologías y tratar de mejorar día a día “desperfectos” gráficos y brindar mas beneficios a los usuarios, ya sea en calidad, como en precio.

Glosario


Colores: En cuanto a número de colores nos referimos a la cantidad de colores que puede representar a la vez. La combinación de estos 2 parámetros (Resolución, color) están estrechamente relacionados a mayor resolución menor número de colores a representar, y la inversa.
DRAM: Se utilizaban en las placas de video mas antiguas obtienen un refresco de 60hz.
EDO: O ‘EDO DRAM’ el estándar en placas de calidad media, de muy variables refrescos dependiendo de la velocidad de la EDO entre 40hz (la velocidad de la memoria no el refresco asociado) son las peores y de 25 Hz las mejores.
Driver: El encargado de colocar en la memoria de video los datos procedentes de la aplicación que está ejecutándose es el microprocesador, este se encarga de convertirlos en información y que sean representados a través del monitor.
Entrelazado: Es una técnica que permite al monitor alcanzar mayores resoluciones refrescando el contenido en 2 pasadas en lugar de uno, primero las líneas impares y luego las pares. Lo malo de esta técnica es que produce un efecto de parpadeo muy molesto, debido a que el tiempo de refresco no es lo suficientemente pequeño como para mantener el fósforo activo entre las dos pasadas, este modo cansa muchísimo la vista, por esos procurar que vuestro monitor sea no-entrelazado.
Frecuencia de refresco: Es el número de veces que se dibuja la pantalla por segundo a mayor veces de dibujo de la pantalla, menos se nos cansara la vista. Esta frecuencia se mide en hertzios por ejemplo 70hz significa que la pantalla se dibuja cada 1/70 de segundos.
Memorias de video: A mayor memoria mejor, su tipo determina si conseguiremos una buena velocidad de refresco de pantalla o no.
Monitor: Es uno de los periféricos de salida más usual, en el se ve la información suministrada por la computadora.
Monitores color: Las pantallas de estos monitores están formadas internamente por tres capas de material de fósforo, una por cada color básico (rojo, verde y azul). También consta de tres cañones de electrones e igual que las capas de fósforo, hay uno por cada color.
Para formar un color en pantalla que no sea ninguno de los colores básicos, se combinan las intensidades de los haces de electrones de los tres colores básicos.
Monitores CRT: Son las tradicionales cuya base es un tubo de rayos catódicos, están formada por dos filtros polarizantes con filas de cristales líquidos alineados perpendicularmente entre sí, de modo que al aplicar o dejar de aplicar una corriente eléctrica a los filtros, se consigue que la luz pase o no pase a través de ellos, según el segundo filtro bloquee o no el paso de la luz que ha atravesado el primero.
Monitores LCD: Las tecnologías han ido evolucionando, las primeras pantallas usaban tecnología DSTN o matriz pasiva, las actuales hacen uso de la tecnología TFT (Thin Film Transistor) o de matriz activa y las que vienen ya no usaran LCD sino Plasma con la que en la actualidad se construyen las grandes pantallas de TV. Las pantallas planas cuestan una 7 veces más que las tradicionales CRT. En un principio solamente se utilizaban para los ordenadores portátiles pero la tecnología ha permitido la fabricación de pantallas de mayor tamaño por lo que se comercializan también para los ordenadores de sobremesa.
Monitores monocromáticos: Muestra por pantalla un solo color: negro sobre blanco o ámbar, o verde sobre negro. Uno de estos monitores con una resolución equivalente a la de un monitor color si es de buena calidad, generalmente es más nítido y más legible.
Monitores de Plasma: Son lo ultima generación, obtiene una resolución excelente y una tamaño realmente superior a los de hoy.
Píxel: Es la mínima unidad de información grafica que es representable en un monitor. Cada píxel en la pantalla se enciende con un determinado color para formar la imagen. De esta forma, cuanto más cantidad de píxeles puedan ser representados en una pantalla, mayor resolución habrá. Es decir, cada uno de los puntos será más pequeño y habrá más al mismo tiempo en la pantalla para conformar la imagen. Cada píxel se representa en la memoria de video con un número, dicho número es la representación numérica de un color especifico, que puede ser de 8, 16 o más bits. Cuanto más grande sea la cantidad de bits necesarios para representar un píxel, más variedad de colores podrán unirse en la misma imagen. De esta manera se puede determinar la cantidad de memoria de video necesaria para una cierta definición y con una cierta cantidad de colores.
Pulgadas: Es el tamaño de un monitor viene determinado en pulgadas y existen de 9’’,14’’,15’’,17’’,19’’, 20’’ y 21’’ aunque hay que tener en cuenta que dicha medida no hace referencia a la zona de visión real de la pantalla, sino a la longitud diagonal de la pantalla.
Resolución: Es el numero de puntos que es capaz de presentar la tarjeta de video tanto en forma vertical y horizontal. Por ejemplo la resolución 800 x 600 significa que tendrá 600 rectas de 800 puntos cada una.
SDRAM: La SDRAM adaptada para uso grafico, de los mejor en el mercado, camino de ser estándar.
Tamaño del punto: Esta es una de las características que depende del tubo, y define el tamaño que tendrá cada uno de los puntos que forman la imagen, por tanto cuanto más pequeño más preciso será. No confundir el tamaño de punto con el ‘píxel’ este depende de la resolución de la pantalla, y puede variar, mientras que el punto es fijo, y depende exclusivamente del tubo. El tamaño normal es alrededor de 0,28 mm y es aconsejable que no sea de mayor tamaño, en todo caso menor, como los 0,25 de los tubos Trinitron.
Tarjeta gráfica, de video ó adaptador de video: Es el elemento de hardware que se encarga de controlar la información que aparece en la pantalla del monitor.
VRAM – WRAM: Bastantes buenas aunque en desuso en tarjetas de calidad, muy buenas características.

No hay comentarios.: