MIP-texturizado ( Eng. MIP mapping ) es un método de texturizado que utiliza múltiples copias de la misma textura con diferentes detalles. El nombre proviene del lat. multum in parvo - "mucho en poco".
La imagen se ve mejor cuando el detalle de la textura está cerca de la resolución de la pantalla . Si la resolución de la pantalla es mayor que la resolución de la textura (textura demasiado pequeña/objeto demasiado cerca), la imagen se verá borrosa. Si la resolución de la textura es demasiado alta (la textura es demasiado grande/el objeto está demasiado lejos), obtenemos píxeles aleatorios, lo que significa pérdida de detalles finos, moiré y parpadeo. El exceso de detalles también es malo en términos de rendimiento: sobrecarga el bus de video y genera un gran porcentaje de errores de caché . Resulta que es mejor tener varias texturas de diferentes detalles y aplicar al objeto la que sea más adecuada en esta situación. En algunos casos, el aumento en la velocidad de texturizado puede aumentar miles de veces, y la velocidad de visualización de la escena completa en la pantalla, docenas de veces.
Muchos juegos de PC modernos permiten al usuario configurar manualmente la calidad de textura, en la configuración, eligiendo entre rendimiento y calidad. Si la calidad de la textura se establece en "baja", el juego utilizará sus mipmaps (copias pequeñas) en lugar de las texturas originales.
Se crea una llamada pirámide MIP : una secuencia de texturas con una resolución de máximo a 1x1. Por ejemplo: 1x1, 2x2, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, 256x256, 512x512 y 1024x1024. Cada una de estas texturas se denomina nivel MIP ( eng. MIP level ) o nivel de detalle ( eng. level of detail ).
Todas estas texturas tienen la misma imagen. Por lo tanto, la textura mip aumenta el consumo de memoria de video en un tercio:
.Al aplicar texturas, se calcula la distancia al objeto y el número de textura se encuentra mediante la fórmula:
,donde resolución es la resolución de la cámara virtual (la cantidad de píxeles que habrá en un objeto con un tamaño de 1 unidad ubicada a 1 unidad de la cámara), texelsize es el tamaño del texel en unidades del mundo 3D, dist es la distancia al objeto en las mismas unidades, mip bias - un número que le permite seleccionar una textura más o menos detallada que la que da la fórmula.
Este número se redondea a un número entero y se aplica al objeto la textura con el número correspondiente (el cero es el más detallado, el primero es el doble de pequeño, etc.).
El consumo de memoria de video aumenta en un tercio (sin embargo, a cambio, aumenta la velocidad de dibujar objetos en la pantalla). Sin embargo, los tamaños típicos de memoria de video a principios de la década de 2010 son de 1 a 3 GB. Además, si el objeto está lejos, su textura detallada se puede cargar en la RAM .
El texturizado MIP no resuelve el problema de las texturas que se encuentran en un ángulo agudo para el espectador (como una carretera en un simulador de automóvil ). Para tales texturas, la resolución a lo largo de un eje es muy diferente de la resolución a lo largo del otro y, por ejemplo, la imagen es claramente borrosa a lo largo del eje X, mientras que el parpadeo es visible a lo largo del eje Y, que es característico de una textura de gran tamaño. resolución. Hay varias formas de resolver esto a la vez (empezando por la de menor calidad):
Se ve un límite claro entre los niveles de MIP. Esto se resuelve mediante filtrado trilineal .
Si hay piezas de diferentes superficies en la misma textura, debe hacer concesiones y espacios que excedan 1 píxel del nivel MIP más "viajero". Este nivel no es necesariamente el más alto (por ejemplo, en Dota 2 vemos tanto un héroe detallado en el menú como uno en miniatura en el juego); por lo tanto, estas brechas se prescribieron explícitamente en el manual de modelado de Dota 2 .
Los renderizadores de alta calidad pueden usar una tabla de suma parcial . Esto brinda la más alta calidad de imagen (cuatro accesos a la tabla pueden promediar el color sobre cualquier rectángulo), pero necesita tipos más amplios para almacenar las sumas. En consecuencia, la tabla de sumas parciales ya no es un tercio, sino al menos dos veces. La tabla de suma parcial no resuelve los problemas de errores de caché.