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 mipmap 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 un archivo adjunto que es el siguiente nivel en el 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 resolución más alta 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 en 256 píxeles. La siguiente textura es 128x128. La última textura de la cadena es de 64 x 64.
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 mapa mip, que en este caso la textura 64x64.
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 mapa mip. La resolución de la ilustración siguiente es 128x128.
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.
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 distintas 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 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 mapa mip establecido como la primera textura del conjunto de texturas actuales. Consulte Fusión de texturas.
A continuación, la aplicación debe establecer el método de filtrado que Direct3D usa para muestrear elementos de textura. 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 asigna el píxel actual.
Las texturas mipmap 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 mapa mip tiene dimensiones que son una mitad de la superficie anterior de la cadena. Si el mapa mip de nivel superior tiene dimensiones de 256x128, las dimensiones del mapa mip de segundo nivel son 128x64, el tercer nivel es de 64x32, etc., 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 sencillo 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 fraccionario 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.
Temas relacionados