Una pasada de ejemplo la verdad, a veces me asombro de como se lo están llevando todo a screen space y que sin embargo los resultados son muy realistas. Un artículo muy bueno ese de GPU Gems 3 que además creo recordar que era de un tio de Electronic Art.
Y bueno lo del MRT junto con las técnicas Screen Spaces yo creo que es el futuro de todo esto y lo que van a empezar a ponteciar en todos los juegos actuales. Recomiendo a todos le echeis un vistazo. Una idea así rápida sería:
Estamos acostumbrados funciones para pixelshader dentro de nuestros ejemplos que como elemento de salida es un float4, esta es la información que recibe cada pixel de un buffer. Ahora con técnicas como el Deffered, Depth of field, motion blur, cell shading... se intenta llevar todo a screen space (espacio de imagen), es decir hacer un render con las normales de la escena, otro con la información sobre la profundidad, etc.. Cual es el problema principal que hacer varios renders significa varias pasadas no solo por cada pixel sino también por cada vértice.
La idea que está detrás del MRT es usar los 8 (0-7) registros de textura de las tarjetas gráficas actuales, de forma que la salida de una función de pixel shader no sea un float4, sino una estructura con dos float4 por ejemplo. Autómaticamente el primer float4 se almacena en el rendertarget(0) y el segundo en el rendertarget(1), eso significa que con un solo recorrido por todos los vértices y un solo recorrido por los pixeles podemos generar dos imágenes que luego se puedan mezclar por ejemplo. Como véis nos estamos ahorrando prácticamente un render que es bastante tiempo.
Bueno una vez que tenéis la idea en la cabeza recordar el ejemplo de Alex de SSAO, también se podría haber acelerado, por si alguien le da por hacerlo XD?
Saludos