180 likes | 264 Views
Light Maps. Iluminación mediante multitextura. Multi-textura. Es la combinación de varias texturas sobre una superficie Puede estar acelerado por hardware GL_ARB_multitexture Se puede realizar por software renderizando la misma superficie n veces, renderización multi-paso.
E N D
Light Maps Iluminación mediante multitextura Jose María Buades Rubio
Multi-textura • Es la combinación de varias texturas sobre una superficie • Puede estar acelerado por hardware GL_ARB_multitexture • Se puede realizar por software renderizando la misma superficie n veces, renderización multi-paso
Multi-textura — Multi-paso Multi-paso Multi-textura Select (texture) Select (texture, lightmap, fogmap)Draw (object) Draw (object) Select (lightmap)Draw (object) Select (fogmap)Draw (object) ...
Light Maps • Es una técnica multitextura que consiste en precalcular la iluminación y guardarla en una textura bidimensional • La ventaja es que la iluminación se puede calcular con cualquier método de iluminación global • El efecto de realismo es mayor
Técnica de iluminación • Valida para luces estáticas y objetos estáticos • En los otros casos se realiza una aportación de luz mediante un método local o se recalcula el mapa de luz • Mapas de luz son de menor resolución que las texturas de color
Frame renderizado usando un mapa de luz calculado mediante radiosidad, el cálculo del mapa de luz llevó una hora Ejemplos
No Soft Shadows Soft Shadows Sin filtrar Filtrado
Textura sin filtrado Mip-mapping filtrado Mapa de luz sin filtrar Mapa de luz con filtrado lineal
Escena renderizada con mip-mapping filtrado y mapa de luz aplicado Mapa de niebla filtrado Combinación de todo
Multitextura en OpenGL Determinar el numero de unidades de texturizacion int iTextureUnits; glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &iTextureUnits);
Multitextura en OpenGL Seleccionar la unidad de texturización a la que se refieren las funciones glActiveTextureARB(GL_TEXTUREi_ARB); Donde i se refiere a la i-esima unidad de texturización 0 i k –1, k el numero de unidades de texturización
Multitextura en OpenGL Especificar la coordenada de la textura para cada unidad glBegin(GL_QUADS); glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0, 0); glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.1, 0.2); glVertex3f(0, 0, 0); glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1, 0); glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.1, 0.8); glVertex3f(0, 0, 0); … glEnd();