En gráficos de computadora , los mipmaps (también mapas MIP ) o pirámides [1] [2] [3] son secuencias de imágenes optimizadas y precalculadas , cada una de las cuales es una representación de resolución progresivamente menor de la anterior. La altura y el ancho de cada imagen, o nivel, en el mipmap es un factor de dos más pequeño que el nivel anterior. Los mipmaps no tienen que ser cuadrados. Están destinados a aumentar la velocidad de renderizado y reducir los artefactos de aliasing . Una imagen mipmap de alta resolución se utiliza para muestras de alta densidad, como para objetos cercanos a la cámara; se utilizan imágenes de menor resolución a medida que el objeto aparece más lejos. Esta es una forma más eficiente de reducir la escala de una textura que muestrear todos los texels en la textura original que contribuirían a un píxel de pantalla ; es más rápido tomar un número constante de muestras de las texturas filtradas de manera adecuada. Los mapas MIP se utilizan ampliamente en juegos de ordenador en 3D , simuladores de vuelo , otros sistemas de imágenes en 3D para filtrado de texturas y software GIS 2D y 3D . Su uso se conoce como mipmapping . Las letras MIP en el nombre son un acrónimo de la frase latina multum in parvo , que significa "mucho en poco". [4]
Dado que los mipmaps, por definición, están preasignados , se requiere espacio de almacenamiento adicional para aprovecharlos. También están relacionados con la compresión wavelet . Las texturas mipmap se utilizan en escenas 3D para disminuir el tiempo necesario para renderizar una escena. También mejoran la calidad de la imagen al reducir el aliasing y los patrones muaré que se producen a grandes distancias de visualización, [5] a costa de un 33% más de memoria por textura.
Los mapas MIP se utilizan para:
El mapeo MIP fue inventado por Lance Williams en 1983 y se describe en su artículo Pyramidal parametrics . [4] Del resumen: "Este artículo propone una geometría de prefiltrado y muestreo 'piramidal paramétrico' que minimiza los efectos de aliasing y asegura la continuidad dentro y entre las imágenes de destino". La pirámide a la que se hace referencia puede imaginarse como el conjunto de mapas MIP apilados uno frente al otro.
La primera patente concedida sobre Mipmap y la generación de texturas fue otorgada en 1983 por Johnson Yan, Nicholas Szabo y Lish-Yann Chen de Link Flight Simulation (Singer). Con su método, se podía generar textura y superponerla sobre superficies (curvilíneas y planas) de cualquier orientación y se podía hacer en tiempo real. Los patrones de textura se podían modelar de forma sugerente con el material del mundo real que se pretendía representar de forma continua y sin alias, proporcionando en última instancia un nivel de detalle y transiciones graduales (imperceptibles) entre niveles de detalle. La generación de texturas se volvió repetible y coherente de fotograma a fotograma y se mantuvo en la perspectiva correcta y la ocultación apropiada. Debido a que la aplicación de la texturización en tiempo real se aplicó a los primeros sistemas CGI de simuladores de vuelo tridimensionales, y siendo la textura un prerrequisito para los gráficos realistas, esta patente fue ampliamente citada y muchas de estas técnicas se aplicaron posteriormente en la computación gráfica y los juegos a medida que las aplicaciones se expandían a lo largo de los años. [9]
El origen del término mipmap es un acrónimo de la frase latina multum in parvo ("mucho en un espacio pequeño"), y map, modelado en bitmap. [4] El término pirámides todavía se usa comúnmente en un contexto SIG . En el software SIG, las pirámides se usan principalmente para acelerar los tiempos de renderizado.
Cada imagen de mapa de bits del conjunto mipmap es un duplicado reducido de la textura principal , pero con un cierto nivel de detalle reducido. Aunque la textura principal se seguiría utilizando cuando la vista sea suficiente para renderizarla con todos los detalles, el renderizador cambiará a una imagen mipmap adecuada (o de hecho, interpolará entre las dos más cercanas, si el filtrado trilineal está activado) cuando la textura se vea desde la distancia o en un tamaño pequeño. La velocidad de renderizado aumenta ya que el número de píxeles de textura ( texels ) que se procesan por píxel de visualización puede ser mucho menor para obtener resultados similares con las texturas mipmap más simples. Si se utiliza un número limitado de muestras de textura por píxel de visualización (como es el caso del filtrado bilineal ), los artefactos se reducen ya que las imágenes mipmap ya están efectivamente anti-aliased . La reducción y el aumento de escala también se hacen más eficientes con mipmaps.
Si la textura tiene un tamaño básico de 256 por 256 píxeles, entonces el conjunto de mipmaps asociado puede contener una serie de 8 imágenes, cada una de un cuarto del área total de la anterior: 128×128 píxeles, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2, 1×1 (un solo píxel). Si, por ejemplo, una escena está renderizando esta textura en un espacio de 40×40 píxeles, entonces se utilizaría una versión ampliada de 32×32 (sin interpolación trilineal ) o una interpolación de los mipmaps de 64×64 y 32×32 (con interpolación trilineal). La forma más sencilla de generar estas texturas es mediante promediado sucesivo; Sin embargo, también se pueden utilizar algoritmos más sofisticados (quizás basados en procesamiento de señales y transformadas de Fourier ).
El aumento en el espacio de almacenamiento requerido para todos estos mipmaps es un tercio de la textura original, porque la suma de las áreas 1/4 + 1/16 + 1/64 + 1/256 + ⋯ converge a 1/3. En el caso de una imagen RGB con tres canales almacenados como planos separados, el mipmap total se puede visualizar como encajando perfectamente en un área cuadrada dos veces más grande que las dimensiones de la imagen original en cada lado (el doble de grande en cada lado es cuatro veces el área original - un plano del tamaño original para cada uno de los colores rojo, verde y azul hace tres veces el área original, y luego, dado que las texturas más pequeñas ocupan 1/3 del original, 1/3 de tres es uno, por lo que ocuparán el mismo espacio total que solo uno de los planos rojo, verde o azul originales). Esta es la inspiración para la etiqueta multum en parvo .
Cuando se ve una textura desde un ángulo pronunciado, el filtrado no debe ser uniforme en cada dirección (debe ser anisotrópico en lugar de isotrópico ) y se requiere una resolución intermedia. Si se utiliza una resolución más alta, la coherencia de la caché disminuye y el aliasing aumenta en una dirección, pero la imagen tiende a ser más clara. Si se utiliza una resolución más baja, la coherencia de la caché mejora, pero la imagen es demasiado borrosa. Esto sería una compensación entre el nivel de detalle (LOD) MIP para el aliasing y el desenfoque. Sin embargo, el filtrado anisotrópico intenta resolver esta compensación mediante el muestreo de una huella de textura no isotrópica para cada píxel en lugar de simplemente ajustar el LOD MIP. Este muestreo de textura no isotrópica requiere un esquema de almacenamiento más sofisticado o una suma de más recuperaciones de textura a frecuencias más altas. [10]
Las tablas de área sumada pueden conservar memoria y proporcionar más resoluciones. Sin embargo, nuevamente dañan la coherencia de la caché y necesitan tipos más amplios para almacenar las sumas parciales, que son más grandes que el tamaño de palabra de la textura base. Por lo tanto, el hardware gráfico moderno no las admite.
{{cite web}}
: CS1 maint: varios nombres: lista de autores ( enlace )