|
TomF tiene bastante material publicado en su página web, especialmente sobre motores de render para tarjeta. Revisando la página , me gustaría destacar esta charla del GDC2007 sobre cómo integrar shaders con el motor 3D. HAce un resumen de temas que se han tratado aquíy en los artículos sobre diseño de un motor de render moderno, como la existencia de varios entornos de iluminación en una escena (luces principales, shado maps, luces per pixel, etc), el tema de los datos que requiere una malla (texturas, animación, shaders, a parte de vertices/caras/uv´s/etc) El tema es hacer la clase material, que pueda describir cualquier cosa "renderable", y que incluye lo necesario para pintar una malla. Por lo tanto, requiere de flags, de informacion, referencias a los shaders, etc. Lo normal es que muchas mallas compartan el material, con lo que todo el tema del visitor y las listas ordenadas reaprovechen la carga/inicialización de materiales. El proceso lo divide en 3 pasos para exportar el material desde el artista, y en 2 pasos para renderizar. La parte de exportación intenta precalcular tódo lo necesario para optimizar el render: mirar valores constantes, identificar registros y canales de datos, y preparar vertices y texturas necesarias (descartando lo que el material no utiliza). La parte de render basicamente se trata de leer los datos: primero configurar el tipo de render y de iluminacion (por si estamos en shadow map, etc), y despues al rendear, configurar cada pase (luces y texturas), y renderizar. Propone un diccionario para comunicar la fase de exportacion con la de render para que asi sea óptimo concer los parámetros (por ejemplo, en qué canales estáa la información de bumpmap, etc)
|