Más allá del EMBM: Como lograr mejor bump/normal mapping en Wii

Definitivamente la cosa esta complicada. Ya High Voltage Software con su demo del motor Quantum3 y los posteriores, más destacados juegos que llevaron este motor, ya pusieron las posibilidades, prácticamente al máximo:
  • 2011 Conduit 2
  • 2010 Tournament of Legends
  • 2010 Iron Man 2
  • 2009 The Conduit

El verdadero problema del “bump mapping” por hardware de la Wii es que solo afecta al Mapa de ambiente o mapa/canal Especular. Llamado EMBM (Environmental Bump Mapping), es un algoritmo de la era del DX6 que simula reflexiones especulares planas. No a la iluminación de los puntos de las texturas o texels. La aproximación a este efecto de iluminación por texel se consigue con un emboss bump, clásico desde la Voodoo. Para el cual hay que usar una o varias texturas para conseguir el efecto, según la calidad a conseguir. El cual se aplica por textura completa, no por puntos.

The Conduit falsea la iluminación, conformando un cube map, con luces/áreas negras o de los colores que hay en el escenario. La manera clásica de usar el EMBM. Creando la oscuridad en el lado de la textura que tocaría aproximadamente. Como consigue Slave Zero en PC. En este no tengo claro que sea un efecto por GPU o por CPU. Pero el cambio no se produce en tiempo real o ajustado a los cambios de puntos de luz.

El chip de la Wii al igual que el de la GC tiene unas unidades llamadas TEV (Texture Environment Unit) que tiene la capacidad de mezclar en ultimo pase de la pipeline de renderizado de la GPU, el de texturizado. Esta es una unidad similar al pixel shader, pero ni de lejos con su flexibilidad, complejidad y eficacia. Con todo, desde NGC se pudieron conseguir shaders, efectos de textura muy complejos: Rogue Squadron, Mario Sunshine, The Legend of Zelda: Twilight Princess o Starfox Adventures. Y ya en la Wii con The Conduit, Silent Hill Shattered Memories, Mario Galaxy 1/2 y/o Metroid other M, estos hacen uso de esta TEV, muchos efectos por Hardware y del mismo EMBM de manera precisa. Para recrear, texturas con bump mapping, reflejos, refracción, fresnel o niveles de especularidad como en las hermanas mayores, menos en la iluminación por pixel en el bump mapping.

A ver, seria posible conseguir una iluminación por pixel combinando el EMBM con el emboss bump mapping y unos cubemaps del reflejo de ambiente con las luces que haya en ese punto bakeados en tiempo real, a menos frames y resolución.Esto habría sido lo más aproximado al DOT3 o el pixel shader 1.0 de la Xbox1 contemporánea de la NGC, pero hubiese penalizado mucho en el rendimiento o en la variedad de texturas en la escena cargada. O obligando a trocear los niveles por la carga gráfica. Ya que tener que cargar en la VRAM de la GC o la Wii, un cubemap cada x área para recrear esos cambios de iluminación en objetos estáticos o dinámicos, seria una solución valida pero muy por fuerza bruta. Obligaría al motor y a los programadores, a controlar y escalar el uso de todo esto. Se entiende que el algoritmo de DOT3 simplificaba todo esto, además de que era mas realista con la parte de iluminación al punto y además se podría sumar el mapa de ambiente y especular. Con tres pasadas [de multitextura] lo conseguiría. Esto dependería también de si se usa forward rendering o differed rendering en el motor de dibujo. En el caso de la Wii necesitara algunas más, puede llegar a 16 pasadas, pero seria una salvajada concentrar estos pases en tantos objetos en pantalla.

Por esto más adelante se llego a la solución de los pixels shaders, que es una simplificación y racionalización de todos esto. Se intenta conseguir lo mismo con una pasada. Ganando tiempo de calculo de la GPU, uso de memoria de la VRAM y también tiempo de CPU y RAM principal. Porque al final estos efectos de multitextura se apoyaban mucho en el driver de la GPU y por ende en instrucciones complementarias de la CPU.

Pero hay que destacar como avance real en los gráficos en videojuegos, el streaming data. El día que Xbox original introdujo el HDD dentro del concepto “consola”, y como ya en la Xbox360 se exploto, realmente las texturas y la información de las texturas para recrear materiales, creció exponencialmente. Es cierto que la velocidad de proceso, la variedad de efectos y la versatilidad de los shaders programables son críticos en esta evolución, pero seria impensable estos realmente, sin discos duros en las consolas. Es cierto que la 360 tuvo muchos juegos sin este requisito, al principio. Pero es cierto que la calidad y la velocidad del streaming y el uso del DVD mejoraba muchísimo.

Podríamos concluir que The Conduit es casi lo máximo y lo mejor hecho en un videojuego para conseguir este tipo de efectos de relieve e iluminación. Y técnicamente es la demostración del motor Quantum3 en una situación real. A nivel de solución técnica ese es el camino. Falto evidentemente todo el presupuesto que hubo detrás de un Halo, por poner un ejemplo. Con más trabajo de arte y de programación, podríamos a ver tenido seguro el 90% de la calidad de un Xbox1 en Wii. Entendiendo las diferencias en el Hardware tan grandes. Nintendo configuro una gran GPU en su tiempo. Pero justo en ese momento todo estaba cambiando, todo, Nvidia estaba dando el salto en PC.

Insisto, que The Conduit esta muy bien pero podría a ver sido más. Más grande como juego y aun mejor acabado.

Si además este motor se hubiese estandarizado en el SDK de Nintendo, como el Unreal en Xbox, aun más probable a ver visto estos efectos en más cantidad de títulos y en más calidad. Pero fue tarde.

Añadir que el Metroid Other M, el Team Ninja demuestra que conocen la técnica del “Normal Mapping” mejor que Retro o Nintendo, y consiguen lo mismo que The Conduit, quizás con menos cantidad( en el total de la escena) de “Normal Mapping” es decir EMBM, que The Conduit, pero muy bien introducido. Sobre todo al usarlo menos, puede introducir mayor cantidad de polígonos en pantalla.

Podría concluir que The Conduit, Metroid other M y Mario Galaxy, que también usa EMBM. Son los juegos que mejor usan la Wii. Y en su conjunto el Hardware de la NGC.

Con esta entrada doy por concluida toda reflexión sobre los limites de la Wii o NGC. Sobre todo el el campo de la búsqueda de fotorealismo en su capacidad para generar gráficos.

Imágenes referencia Wii EMBM:

Quake 1 modificado, EMBM en todas las texturas:

Imágenes borradas de la web.

Super Mario Galaxy, enemigos (labios …) Tierra y otros:

En las ruedas:

Starfox Adventures: Madera, agua y pelo:

Rogue Squadron: Agua, Xwing, tierra…

Metroid Other M: Samus casco HUD, Armadura aliado…

Metroid Other M: Samus Armadura, Enemigo…

Resident Evil: The Darkside Chronicles: Pelo, ropa y paredes.

Imágenes de referencia PC EMBM:

Expendable:

Evolva:

Slave Zero:

3dMark:

Documentación y enlaces utilizados:

Foro debate interesante sobre el tema de EMBM en Quake 1 modificado: https://forum.beyond3d.com/threads/normal-mapping-wii-demo.46425/page-3

Documentación Nvidia: http://www.nvidia.com/object/LO_20010614_6721.html

Reportaje DX6 bump Gamesutra: http://www.gamasutra.com/view/feature/131753/ups_and_downs_of_bump_mapping_.php?page=1

Patente EMBM vigente: https://www.google.com/patents/US6825851

Pixel Pixel Shading Nvidia doc: https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/AGDC__Per_Pixel_Shading.pdf

Bump and Environment Mapping doc: http://www.ics.uci.edu/~majumder/VC/classes/BEmap.pdf

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.