1 de junio de 2008

el g0e Weekly Update o_O

Bueeeno, ya estoy otra vez con otro ejemplo. Os presento a mi nuevo amigo:


A primera vista no parece nada fuera de lo normal: el HellKnight de Doom3 cargado con el loader de MD5 que sacaron recientemente en XNA Community y el escenario que usó Race en su ejemplo de luces volumétricas.

Pero no es ni mucho menos sólo eso. La escena se está pintando con una técnica de render conocida como Deferred Rendering o Deferred Shading. Esta técnica no es nueva, pero hasta hace poco no era posible usarla a una velocidad decente en juegos, y aún hoy en día hay muy pocos que la usen (los más conocidos son STALKER y Killzone 2).

Esta técnica tiene varias particularidades, como que sólo se iluminan aquellos puntos de la escena que realmente se están viendo o que el coste de pintar luces es proporcional al espacio que ocupan en pantalla, y no a su número. Con las tarjetas actuales se puede implementar gracias al uso de Multiple Render Targets (que ya usé en la demo de God Rays que, por cierto, colgaré mañana seguramente), este es un ejemplo:


En esta imagen se ven los cinco RTs que se usan en la visualización (color, normales, velocidad, profundidad e iluminación). Este no es el aspecto final del ejemplo ya que quiero meterle una iluminación con algo más de gracia, pero más o menos ya lo tengo encarrilado.

2 comentarios:

Khronos dijo...

Un ejemplo así pide sombras, puedes usar una simple como SSSM y que da buen resultado. Por cierto ¿el render de velocity cual es XD? ¿es perpixel velocity?

Saludos Alex

el g0e dijo...

Le quedarían de lujo ciertas sombras omnidireccionales... :P Pero bueno, para eso primero habria que ponerle luces puntuales, que será el siguiente paso y le dará un ambiente más acorde con la escena. Y sí, el de velocidad es para motion blur, para que el G-Buffer sea lo más parecido posible al que se usa en el Killzone 2... ^^