miércoles, agosto 20, 2008
|
No bien nos enteramos de tecnología que nos permitirá crear imágenes con detalles sin precedentes en tiempo real por Internet, cuando sale ahora NVIDIA y demuestra una tecnología que permite crear gráficos con técnicas de raytracing, en tiempo real y en alta definición, utilizando su última generación de GPU (Graphic Processing Units), en tu PC de escritorio.
Para que tengan una idea de lo que estamos hablando, y por qué esto es sorprendente, les explico brevemente lo que es raytracing, y lo que es scanline rendering. Primero, todos los video-juegos que utilizan gráficos de 3D, sea en una PC, un Nintendo Wii, una Xbox 360, un Sony PSP o PlayStation 3, utilizan la técnica de scanline rendering. Lo que esa técnica hace (a altos rasgos) es determinar la posición de la geometría de los objetos en el espacio, determinar dónde hay fuentes de luces, y determinar los colores, propiedades y texturas de las superficies de tales objetos, y calcular en base a complejos algoritmos como se "debería" ver una determinada superficie tridimensional en pantalla. Es decir, el cálculo para "renderizar" un cubo sobre una superficie plana va mas o menos así: "El ángulo de la cara izquierda del cubo está a 45 grados en relación a la cámara por la cual se ve el video-juego, y como hay una luz del otro lado eso significa que esa cara del cubo debe ser un poco oscura, por tanto, pintemos esa cara del cubo de color azul oscuro." En otras palabras, scanline rendering (o rasterizing), es una técnica de deducción, y aunque puede ofrecer excelentes resultados, no es muy precisa ya que no simula "la realidad". Raytracing, sin embargo, es una técnica mucho mas sencilla y fácil de implementar que scanline rendering, ya que de la manera que funciona es como una "cámara digital inversa". Notemos que una cámara digital lo que hace es captar rayos de luz del mundo exterior, sobre un sensor de dos dimensiones (digamos, de 1920 x 1080 pixeles), asignándole a cada puntito en el sensor un valor que indica el nivel de intensidad (y color) de la luz que calló en ese punto. Al combinar todos los puntos obtenemos una imagen. Raytracing hace lo mismo que una cámara digital, pero al revés. En esta técnica, nosotros creamos una "sensor virtual" cuyas dimensiones sean las mismas que la pantalla en donde pensamos desplegar la imagen tridimensional (digamos, un monitor con resolución de 1920 x 1080 pixeles), y lo que hacemos ahora es que simulamos un rayo de luz, no entrando al sensor, sino que saliendo de este hacia el mundo exterior (que en este caso es un cubo sobre una superficie plana), y "midiendo" el rayo de luz mientras este interactúa con los objetos de la escena, la idea siendo que después de que ese rayo de luz emitido por el sensor virtual haya llegado lo suficientemente lejos, que podremos determinar el valor del punto (o pixel) en el lugar desde donde salió el rayo de luz virtual. Es decir, en vez de recibir luz en un sensor (como en una cámara digital), lo que hacemos es emitir luz "blanca", y en base a donde "rebote" ese haz de luz (digamos que la superficie del cubo es de color azul), determinar cual es el color real de ese punto en el sensor (que en este caso hemos determinado no es blanco, sino azul). Esto tiene como resultado que estamos simulando la realidad "al revés", pero simulándola de todas maneras, por lo que podemos obtener resultados verdaderamente asombrosos y realistas. Esta es la técnica que se utiliza en el cine cuando se necesita el mas alto grado de realidad en la pantalla. Siguiendo el ejemplo anterior, la computación en este caso iría algo así: "Acabo de disparar un haz de luz blanca pura desde el pixel con coordenadas 100,580 de la pantalla y voy a ver hacia donde va. Oh, acabo de chocar contra algo (la pared del cubo), ¿cuáles son las propiedades de este objeto en este lugar? ¿cómo desviaría este haz de luz? ¿cómo afectaría su color? Oh, terminaría siendo un color azul. Ahora desviar el rayo de luz unos 193 grados y con menor intensidad X, ya que la superficie es un poco reflectiva, y repetir el proceso unas vez mas, siguiendo el rayo hasta que rebote 10 veces mas y obtener el color final para este pixel." Ahora, los que aun estén leyendo esta explicación dirán, ¿y por qué no utilizar esta técnica en vez de la otra? Por la sencilla razón que es demasiado demandante en poder de computación, ya que por cada punto del "sensor virtual", hay que disparar un rayo de luz virtual, y seguirlo, mientras este rebota, se modifica, se atenúa, etc por toda la escena, y después hacerlo con todos los otros pixeles virtuales. Para que tengan una idea, con un sensor virtual de 1920 x 1080 (que es "full" alta definición en Blu-ray), hablamos de repetir este proceso 2,073,600 veces, y no solo eso, sino que hay que hacer estos cálculos unas 30 veces mas en un solo segundo para lograr video en movimiento. O aproximadamente 60 millones de rayos de luz por segundo, cada uno sumamente demandante en cálculos matemáticos. Es esta la razón por la cual, hasta ahora, las películas de Hollywood que dependen de muchos efectos especiales con raytracing se ejecutan en miles de máquinas en paralelo, las cuales toman tan solo un cuadro de la película, y lo renderizan en cuestión de minutos o hasta horas (a veces días), y después todos estos cuadros son ensamblados en secuencia para formar la película. Habiendo dicho eso, noten ahora el significado de esta noticia: NVIDIA acaba de demostrar que puede hacer raytracing con video de alta definición, en tiempo real a 30 cuadros por segundo, suficiente para uno renderizar el mundo entero de un video-juego mientras uno lo juega. Por ahora la calidad no será igual que la de Hollywood, pero conforme aumenta el poder de computación la calidad continuará incrementando. Noten que en raytracing, aparte de la calidad del algoritmo que calcula cómo es afectado un pixel virtual conforme la luz interactúa con el medio ambiente virtual, saltando de una superficie a otra como si de espejos se tratara, que la otra gran variable que determina la calidad visual de una escena renderizada con raytracing es precisamente cuántas veces uno permite que un rayo de luz "salte" de un lado a otro en la escena, ya que mientras mas saltos y reflejos da ese haz de luz, con mas exactitud se puede calcular el valor final del pixel virtual. Noten que Intel es un gran proponente de raytracing, y dice que sus futuros diseños de chips serán optimizados para acelerar la renderización tridimensional con esta técnica. Reseña curiosa: Hace unos 15 años atrás, con una computadora Commodore Amiga 500, renderizar una escena medio compleja por medio de raytracing me tomaba hasta un día entero (sí, 24 horas, o hasta mas). Hoy día esa misma escena se renderiza en unos segundos, y con esta tecnología de NVIDIA se renderiza en "tiempo real". ¡Como cambian los tiempos y el poder de computación! Fuente de la foto (tienen mas fotos) con mas información Previamente en eliax: Renderización de gráficos en tiempo real desde el Internet (Agosto 2008) autor: josé elías |
6 comentarios |
Tecnología Visual |
Comentarios
Añadir Comentario |
"Interesante en extremo..!
Sería fascinante poder compartir tu consciencia de esa forma con otra persona.."
Sería fascinante poder compartir tu consciencia de esa forma con otra persona.."
en camino a la singularidad...
©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax
Seguir a @eliax
Hola
Se podran crear animaciones para los juegos increibles a parte de la tecnologia de ati que podran hacer personas reales.
Otra cosa deberian poner lo de bota por la web en un parte visible para que no se traspagine y boten mas personas
saludos