Sobre las semitransparencias en Saturn

Ok, tienes entre veinticinco y treinta años, pasaste toda tu adolescencia comprando revistas como Superjuegos, Hobby Consolas y Club Nintendo (la versión mexicana en el peor de los casos) y cada cierto tiempo te encontrabas con aquello de que PlayStation era superior a Saturn “porque podía dibujar efectos de semitransparencias”, entonces pasabas la página intentando ignorar esto y hacías como que no pasaba nada. En aquellos días no ocurría lo de ahora que ves las comparativas de títulos de Xbox One y PlayStation 4 y son prácticamente iguales, en aquellos días habían diferencias, grandes y sustanciales diferencias. Gracias al youtuber Low Score Boy por fin he entendido el por qué de estas afirmaciones. Pásense por su canal que esta muy bueno aunque tenga pocos videos y la gran mayoría esten en idioma japonés.

SEGA Saturn

SEGA Saturn semitransparente ¡ja!

Saturn tiene una compleja y poco usual arquitectura; con sus dos CPUs tenia una capacidad de cómputo envidiable para la época pero todo este poder desembocaba en que era una hardware bastante difícil de cara a los programadores, recordemos que el concepto de multi CPU es relativamente nuevo y no existían APIs como Grand Central Dispatch de Apple que hicieran transparente el tener que desarrollar bajo arquitecturas con más de un microprocesador, así pues el programador tenía que inicializar a punta de lenguaje ensamblador muchos procesos que ahora una bonita API se encarga de hacer sin romperse mucho la cabeza, esto era algo que generaba mucho descontento incluso puertas adentro sabiendo que PlayStation – la competencia – tenía una arquitectura más simple y un kit de desarrollo más “humano”.

En muchos juegos multiplataforma cuando llegaba la hora de aplicar efectos de semitransparencias por lo general la gris de Sony quedaba bastante mejor parada que la negra de SEGA, en esta última siempre veíamos un efecto de malla que era algo así como una solución resultona pero que no era una semitransparencia per se, aun así existían juegos que demostraban lo contrario: Thunderforce V, Guardian Heroes, Megaman X4 (en algunos casos y que fue el ejemplo perfecto para Low Score Boy), ¿Qué sucedía entonces? ¿Podía o no podía?. Es un tema que tiene una explicación ciertamente compleja.

Semitransparencia real (Sony PlayStation)

Fíjate en los focos amarillos del fondo, son realmente semitransparentes (Megaman X4 para Sony PlayStation)

 

Efecto Malla (SEGA Saturn)

Y… el efecto malla (mismo juego para SEGA Saturn)

Saturn no sólo tenia dos CPUs, también tenía dos VDP (Video Display Processors, asi era como SEGA bautizaba a sus GPUs), estos chips eran llamados como no, VDP1 y VPD2, el primero estaba encargado de dibujar todo lo referente a sprites (objetos bidimensionales animados), vectores, elementos tridimensionales que no requerían aplicación de texturas como los famosos polígonos cuadrados (a diferencia de PlayStation y Nintendo 64, Saturn no dibujaba polígonos triangulares que es la norma, esto también tiene una explicación que no todos llegaron a conocer); el segundo chip estaba dedicado al dibujado de fondos y era quién recogía los datos de la VRAM (memoria de video) del VDP1 y propia para volcarlos en pantalla.

Nicol Neil nos demostrará de que va todo esto

Nicol Neil y Serena Corsair nos demostrarán de que va todo esto

Antes de seguir, decir que ambos VDP tenían ciertas características, por ejemplo, el VDP1 podía dibujar *perfectamente* semitransparencias en los sprites y el VDP2 también podía hacerlo en sus fondos. Entonces ¿Por qué la gran mayoría de los estudios se decantaron por ese efecto malla tan cutre en casi todos sus programas si ambos VDP podían dibujar semitransparencias?

La culpa la tiene el VDP2 quien es el encargado de dejar todo en pantalla una vez recogía todo de las distintas áreas de la memoria de video.

El sprite de la chica (adelante) tiene una capa transparente, todo perfecto

Aquí esta perfectamente explicado usando el título Guardian Heroes de Treasure: el sprite de Nicole (adelante) tiene una capa semitransparente, Serena se supone que esta detrás. Todo perfecto

Si el VDP2 encontraba dos sprites “normales” superpuestos en la VRAM los dibujaba correctamente, es decir: uno detrás de otro; pero ahora imagina que el de adelante tiene un efecto de semitransparencia, el VDP2 lo coloca correctamente pero en la semitransparencia se ve el fondo y no el sprite que deberia ir detrás. Esto es porque VDP2 considera que el último sprite es quien cuenta en realidad, dicho de manera más técnica: VDP2 no entiende de sprites sino de pixeles y para él un pixel semistransparente es un pixel que tiene la misma prioridad de un pixel “normal”, dicho de manera cristiana: se pensó en las semitransparencias contra los fondos y no contra otros sprites dibujados antes. ¡Pero que fail SEGA!

Pero al interponerse con otro sprite (el sujeto detrás) este desaparece, VDP2 dice "ah una transparencia" y la superpone al fondo y no al sprite de atrás, esto porque en teoria ya se dibujó y "no cuenta" para él.

El problema ocurre cuando Nicole pasa en frente de Serena, si te fijas, la capa deja ver el fondo más no a Serena. VDP2 le dio prioridad a Nicole por ser el “ultimo sprite a dibujar” y par él la semitransparencia no es un sprite es un pixel a dibujar y ya

Así pues la forma más barata y que consumía menos recursos era colocar un sprite con “efecto malla”;  además de esto, muchos estudios usaron todo tipo de trucos para solventar este problema, como combinar repetidamente sprites semitransparentes con el efecto malla o simplemente los efectos de semitransparencias del VDP1 eran tan rápidos que el solapamiento de sprites apenas se notaba, en otros casos se usaban técnicas de cálculo de cambio de colores que daba la sensación de semitransparencia, estos atajos por lo general le costaban bastantes ciclos de CPU a la consola bajando considerablemente el rendimiento del programa. Cuando se utilizana la semitrasparencia mediante VDP1 por lo general era en cuadros de diálogo, sombras o cualquier cosa que por lo general no se colocara encima de otro elemento dibujado por VDP1.

Muchos desarrolladores tuvieron que ingeniarselas brutalmente, en Burning Rangers (SEGA) tuvieron que cambiar hasta la forma como trabajaba la consola normalmente

Muchos desarrolladores tuvieron que ingeniarselas brutalmente, en Burning Rangers (SEGA) tuvieron que cambiar hasta la forma como trabajaba la consola normalmente

Pero… ¿Y qué hay del VDP2? El VDP2 también podría generar semitransparencias, pues sí, solía explotarse el efecto en juegos 3D donde lo veíamos en superficies como suelo o agua (el efecto de agua de Panzer Dragoon es un perfecto ejemplo) lástima que este chip no estuviera diseñado para dibujar objetos dinámicos. En muchos casos se la pensaron más allá, por ejemplo, en Burning Rangers, los sprites 2D correspondientes a las explosiones eran llevados del VDP1 al área de memoria de la VDP2 para que nuevamente la VDP1 dibujara todo lo relacionado con lo tridmensional cambiando las prioridades de dibujado final, era una forma bastante poco tradicional y compleja que consumía muchos recursos pero que dio buenos resultados.

Con el cable composite apenas se notaba el "efecto malla", en aquellos años casi nadie disponia de algo diferente a este cable

Con el cable composite apenas se notaba el “efecto malla”, en aquellos años casi nadie disponia de algo diferente a este cable

Como sea los programadores en aquellos días se las ingeniaban realmente para sacar partido de cualquier cosa que pudiera saltarse este (gran) problema; otros simplemente confiaron en que la gran mayoría usaban cable composite lo que reducía la nitidez de la imagen y hacía ver el efecto malla como una auténtica transparencia.

Pero esto no nos importa, porque seguimos adorando esta consola y tiene juegos irrepetibles

Pero esto no nos importa, porque seguimos adorando esta consola que encima tiene juegos irrepetibles

En resumen, que Saturn sí que podía dibujar semitransparencias pero su arquitectura compleja le impedía hacerlo de forma sencilla como sí sucedía en la máquina de Sony. Low Score Boy también habla de las diferencias sustanciales en el manejo de polígonos entre ambas consolas siendo un tema bastante interesante para una futura entrada donde podríamos analizar las sutiles y grandes diferencias entre Saturn, PlayStation y Nintendo 64.

¡A dormir tranquilos!

Anuncios

Un pensamiento en “Sobre las semitransparencias en Saturn

  1. Pingback: Sobre las semitransparencias en Saturn — game bearsite | Game Bearsite

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s