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

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

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

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