Ir al contenido principal

El mito de las sombras

Este post nada tiene que ver con "el mito de la caverna" de Platón. Hoy me voy a poner un poco técnico y hablar de iluminación en PS3. El tema viene a cuento de que mi colega Ryoga se quejó hace un tiempo de que en las sombras del Metal Gear Solid 4 aparecían "dientes de sierra". Él se imaginó que tal "glitch" se solucionaría con alguna actualización del firmware de PS3, gracias a los prodigios de Sony. En el momento no le quise revelar que los Reyes Magos no existen y que Chuck Norris es gay. Pero ha llegado el momento de hacerse adulto (y parar el ojete), Ryoga.

El problema en cuestión no es exclusivo del Metal Gear Solid 4, ni de PS3. En XBOX 360 o en PC aparecen los mismos "glitches", o peores. Ultimamente estoy jugando al "Assassin's Creed" y muchas veces hay sombras "intermitentes", que aparecen y desaparecen. Si algún juego parece no tener el problema, seguramente es porque el escenario es pequeño o la imagen está filtrada. El problema de las sombras viene de una técnica llamada Shadow Mapping. Lo intentaré explicar en un lenguaje sencillo.

Lo que hace el "shadow mapping" es almacenar la información de las "sombras" en una textura en la tarjeta gráfica o GPU (en concreto, lo que se almacena es la información de la distancia de un foco de luz a la escena), para poder calcular la proyección de las sombras en tiempo real. Como la textura es una imagen con una resolución finita, si la cámara se acerca mucho a la sombra de un objeto lejano pues es probable que se vea el "aliasing" (dientes de sierra). Si la sombra es muy delgada, incluso puede desaparecer con pequeñas variaciones de cámara. Hay varios métodos para solucionar esto, como usar Logarithmic Shadow Maps, pero es algo que se empieza a introducir ahora en las GPU. Por ejemplo, el famoso Larrabee de Intel incluirá un Irregular Z-Buffer para solventar esto. Os recomiendo el libro Real Time Rendering si queréis más información del asunto.

De todas maneras, estos métodos no resuelven el problema del todo, simplemente lo disimulan mejor. Pixar no tiene ninguno de estos problemas porque no generan fotogramas en tiempo real, sino resolviendo el problema de Iluminación Global a base de raytracing. ¿Pero sería posible olvidarse de texturas y aplicar iluminación global en tiempo real? Pues en parte, es posible, y lo veremos pronto en algunos juegos. Con middleware como Enlighten, es posible calcular Radiosidad en tiempo real. Aunque no resuelve todos los problemas de iluminación global, es un buen comienzo ;)

¿Pero entonces, la PS3 se quedará a dos velas? Pues no. El tal middlewear "Enlighten" está disponible para PS3. Pero además, en teoría sería posible implementar las otras técnicas que he mencionado más arriba, haciendo el cálculo en alguna de las SPU del procesador CELL. La idea original del procesador Cell es precisamente esa: tener libertad para programar tus propios módulos y no depender de la arquitectura de la GPU. Esa es a lo bestia la filosofía de Larrabee: dar total libertad al programador para cambiar todo el funcionamiento de la GPU, al fusionar la GPU con la CPU.

Y la respuesta a lo que Ryoga se está preguntando, ¿se verán mejor las sombras en el Metal Gear Solid 4? Pues va a ser que no. No va a haber ningun update milagroso que cambie la GPU. Lo que he dicho antes significa que se lo tienen que currar los programadores, o usar algún middleware. Aunque el middleware lo sacara Sony, significa de todos modos tener que adaptar todo el código del juego al nuevo sistema de rendering. Dudo que Kojima Productions se curre un mega-patch que cambie todo el juego.... Para eso, mejor trabajar en la siguiente entrega!

Ufff, que rollazo he soltao. Espero que haya servido de algo ;)

Comentarios

Anónimo ha dicho que…
salludos jefe,
de momento vamos a ver si dormimos un poco antes de poder ver las fotos, pero encuantito podamo las tienes saturando tu correo.......

un abrazo

Entradas populares de este blog

En el mundo real -- los "riajuu" リア充

Allá por el 2005 recuerdo que en mi lab en Tokyo algunos estudiantes un poco "frikis"/"otakus" empezaban a usar la palabra  RIAJUU リア充 . La usaban para referirse a gente normal, o sea, gente que no era friki como ellos (/nosotros?). Es una abreviación de la frase リアル(現実)の生活が充実してる人: RIARU (lo real/la realidad) NO SEIKATSU GA JUUJITSU SHITEIRU HITO. O sea, algo así como "persona que vive plenamente en el mundo real". Vamos, que no necesita hacer 現実逃避 (GENJITSU TOUHI, huir de la realidad) a través del manga, anime, o videojuegos 😛 Como dice una amiga, un "muggle", vamos 😝 A veces digo que es curioso que el japonés tenga una expresión para referirse a la gente normal como opuesta a la gente "otaku". Pero en realidad, no es que sea una expresión "propia de la lengua japonesa", más bien es una expresión propia del mundo "friki". Le he preguntado a mi pareja si conoce lo que significa RIAJUU y dice que nunca ha oído tal...

"Mujer", la culebronización turca de un J-drama 🇯🇵🐍🇹🇷

  El año pasado pasé unas semanas en España y por las noches veía con mi madre una serie turca que daban en Antena 3: Mujer (Kadin en turco). Como la serie no estaba mal, me puse a mirar la Wikipedia y descubrí que era una adaptación de una telenovela japonesa (J-drama, o "dorama"): Woman . No acabé de ver "Mujer", aunque vi un montón de episodios, pero mi madre me contó el final. Son muchas horas, la verdad: 81 episodios de 2 horas cada uno!!! Pero hace un par de semanas me puse a mirar la versión original japonesa, que son tan solo 11 episodios, de unos 45 minutos cada uno (en Drama Cool están con subtítulos en inglés). Kadin vs Woman Sin chafar el final, voy a intentar comparar un poco las dos versiones. Si no quieres saber detalles, deja de leer ya 🙈 A grandes rasgos se puede decir que la versión turca es una "culebronización" 🐍  de la serie japonesa. Lo que quiero decir es que la serie japonesa es un drama interesante, no demasiado largo, y sin i...

Violet Evergarden y las chicas robot

Carl Jung y el arquetipo robot En el anime existe un arquetipo de persona que no encaja en ninguno de los 12 arquetipos junguianos , del psiquiatra Carl Jung. Este arquetipo es el del "robot", por ser una persona que, en principio, parece entender poco o nada acerca de los sentimientos humanos. Por ser un robot, un extraterrestre, un clon, o quizás simplemente porque tengan un punto de autismo o síndrome Asperger y no se expresan como los demás. En el imaginario occidental quizás la mejor representación de esta personalidad es la de Spock, en Star Treck. En la animación japonesa, creo que el ejemplo más conocido es el de Rei Ayanami, en Evangelion. En el anime, estos personajes suelen ser chicas adolescentes. Lo de que sean adolescentes imagino que es porque la mayoría de anime va dirigido a un público adolescente. Pero de todos modos, puede que sea también un recurso para provocar mayor impacto, ya que cuesta imaginarse a una chica adolescente tan fría como las representan. ...