18
Jose María Buades Rubio Light Maps Light Maps Iluminación mediante multitextura

Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Embed Size (px)

Citation preview

Page 1: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Jose María Buades Rubio

Light MapsLight Maps

Iluminación mediante multitextura

Page 2: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Multi-texturaMulti-textura

• Es la combinación de varias texturas sobre una superficie

• Puede estar acelerado por hardwareGL_ARB_multitexture

• Se puede realizar por software renderizando la misma superficie n veces, renderización multi-paso

Page 3: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Multi-textura — Multi-pasoMulti-textura — Multi-paso

Multi-paso Multi-texturaSelect (texture) Select (texture, lightmap, fogmap)Draw (object) Draw (object)

Select (lightmap)Draw (object)

Select (fogmap)Draw (object)

...

Page 4: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Light MapsLight Maps

• Es una técnica multitextura que permite 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

Page 5: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Técnica de iluminaciónTé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

Page 6: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

EjemplosEjemplos

Frame renderizado usando un mapa de luz calculado mediante radiosidad, el cálculo

del mapa de luz llevó una hora

Page 7: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Renderización solo con Renderización solo con mapa de luz, sin filtrarmapa de luz, sin filtrar

Page 8: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Renderización solo con Renderización solo con mapa de luz filtradomapa de luz filtrado

Page 9: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Renderización solo con Renderización solo con texturas y sin iluminacióntexturas y sin iluminación

Page 10: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Renderización Renderización multitextura, sin filtrar el multitextura, sin filtrar el mapa de luzmapa de luz

Page 11: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Renderización Renderización multitextura, filtrando el multitextura, filtrando el mapa de luzmapa de luz

Page 12: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Soft ShadowsNo Soft Shadows

Sin filtrar

Filtrado

Page 13: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Textura sin filtrado Mip-mapping filtrado

Mapa de luz sin filtrar Mapa de luz con filtrado lineal

Page 14: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Escena renderizada con mip-mapping filtrado y mapa de luz aplicado

Mapa de niebla filtrado Combinación de todo

Page 15: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Multitextura en OpenGLMultitextura en OpenGL

Determinar el numero de unidades de texturizacion

int iTextureUnits;

glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &iTextureUnits);

Page 16: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Multitextura en OpenGLMultitextura 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

Page 17: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Multitextura en OpenGLMultitextura 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();

Page 18: Jose María Buades Rubio Light Maps Iluminación mediante multitextura

Ejemplo: Ejemplo: Demo.Demo.zipzip