Filtrado de texturas con mapas MIP

Un mapa mip es una secuencia de texturas, cada una de las cuales es una representación de resolución progresivamente menor de la misma imagen. El alto y el ancho de cada imagen, o nivel, en el mapa mip es una potencia de dos menor que el nivel anterior. Los mapas MIP no tienen que ser cuadrados.

Se usa una imagen de mapa MIP de alta resolución para los objetos que están cerca del usuario. Las imágenes de resolución inferior se usan como el objeto aparece más lejos. Mipmapping mejora la calidad de las texturas representadas a costa de usar más memoria.

Direct3D representa mapas MIP como una cadena de superficies adjuntas. La textura de resolución más alta está en la cabeza de la cadena y tiene el siguiente nivel del mapa mip como datos adjuntos. A su vez, ese nivel tiene datos adjuntos que son el siguiente nivel del mapa mip, etc., hasta el nivel de resolución más bajo del mapa mip.

En las ilustraciones siguientes se muestra un ejemplo de estos niveles. Las texturas de mapa de bits representan un inicio de sesión en un contenedor en un juego de primera persona 3D. Cuando se crea como un mapa MIP, la textura de mayor resolución se realiza primero en el conjunto. Cada textura correcta en el conjunto de mapas MIP es menor en alto y ancho por una potencia de 2. En este caso, el mapa mip de resolución máxima es de 256 píxeles por 256 píxeles. La siguiente textura es 128x128. La última textura de la cadena es 64x64.

Este signo tiene una distancia máxima desde la que es visible. Si el usuario comienza lejos del signo, el juego muestra la textura más pequeña de la cadena de mapas MIP, que en este caso la textura 64x64.

ilustración de una textura de 64 x 64 de un signo de peligro

A medida que el usuario mueve el punto de vista más cerca del signo, se usan texturas progresivamente de mayor resolución en la cadena de mapas MIP. La resolución de la ilustración siguiente es 128x128.

ilustración de una textura de 128 x 128 de un signo de peligro

La textura de resolución más alta se usa cuando el punto de vista del usuario está a la distancia mínima permitida desde el signo, como se muestra en la ilustración siguiente.

ilustración de una textura de 256 x 256 de un signo de peligro

Se trata de una manera más eficaz de simular la perspectiva de las texturas. En lugar de representar una sola textura en muchas resoluciones, es más rápido usar varias texturas en diferentes resoluciones.

Direct3D puede evaluar qué textura de un conjunto de mapas MIP es la resolución más cercana a la salida deseada y puede asignar píxeles a su espacio de elementos de textura. Si la resolución de la imagen final está entre las resoluciones de las texturas del conjunto de mapas MIP, Direct3D puede examinar los elementos de textura en ambos mapas mip y combinar sus valores de color.

Para usar mapas MIP, la aplicación debe compilar un conjunto de mapas MIP. Las aplicaciones aplican mapas MIP seleccionando el conjunto de mapas MIP como la primera textura del conjunto de texturas actuales. Consulta Combinación de texturas.

A continuación, la aplicación debe establecer el método de filtrado que Direct3D usa para los elementos de textura de ejemplo. El método más rápido de filtrado de mapas mip es hacer que Direct3D seleccione el elemento de textura más cercano. Use el D3DTEXF_POINT valor enumerado para seleccionarlo. Direct3D puede generar mejores resultados de filtrado si la aplicación usa el valor enumerado D3DTEXF_LINEAR. Esto selecciona el mapa mip más cercano y, a continuación, calcula un promedio ponderado de los elementos de textura que rodean la ubicación en la textura a la que se asignan los píxeles actuales.

Las texturas de mapa mip se usan en escenas 3D para reducir el tiempo necesario para representar una escena. También mejoran el realismo de la escena. Sin embargo, a menudo requieren grandes cantidades de memoria.

Nota Cada superficie de una cadena de mapas MIP tiene dimensiones que son una mitad de la superficie anterior de la cadena. Si el mapa mip de nivel superior tiene dimensiones de 256 x 128, las dimensiones del mapa MIP de segundo nivel son 128 x 64, el tercer nivel es 64x32, y así sucesivamente, hasta 1x1. No se puede solicitar un número de niveles de mapa mip en Niveles que provocarían que el ancho o alto de cualquier mapa mip de la cadena sea menor que 1. En el caso simple de una superficie de mapa mip de nivel superior de 4x2, el valor máximo permitido para Levels es tres. Las dimensiones de nivel superior son 4x2, las dimensiones de segundo nivel son 2x1 y las dimensiones del tercer nivel son 1x1. Un valor mayor que 3 en Niveles da como resultado un valor fraccionado en el alto del mapa MIP de segundo nivel y, por tanto, no se permite.

 

Direct3D puede realizar automáticamente el filtrado de texturas mipmap. Las aplicaciones pueden atravesar manualmente una cadena de mapas MIP para cargar datos de mapa de bits en cada superficie de la cadena. Esta suele ser la única razón para atravesar la cadena. La generación automática de mapas MIP en el momento de la creación de texturas aprovecha el filtrado de hardware porque el mapa mip reside en la memoria de vídeo.

Filtrado de texturas