Articulo de referencia

Mipmap

En gráficos por computadora , un mipmap ( mip es un acrónimo de la frase latina multum in parvo , que significa "mucho en poco" [ 1 ] ) es una secuencia de imágenes precalculada...

En gráficos por computadora , un mipmap ( mip es un acrónimo de la frase latina multum in parvo , que significa "mucho en poco" [ 1 ] ) es una secuencia de imágenes precalculada y optimizada , cada una de las cuales tiene una resolución de imagen que es un factor de dos menor que la anterior. [ 2 ] [ 3 ] [ 4 ] Su uso se conoce como mipmapping .

Están diseñados para aumentar la velocidad de renderizado y reducir los artefactos de aliasing . Se utiliza una imagen mipmap de alta resolución para muestras de alta densidad, como para objetos cercanos a la cámara; se utilizan imágenes de menor resolución cuando el objeto aparece más lejos. Esta es una forma más eficiente de reducir la escala de una textura que muestrear todos los texeles de la textura original que contribuirían a un píxel de la pantalla ; es más rápido tomar un número constante de muestras de las texturas adecuadamente filtradas. 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 .

Los mipmaps se utilizan ampliamente en videojuegos 3D , simuladores de vuelo , otros sistemas de imágenes 3D para el filtrado de texturas y software SIG 2D y 3D . 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 de moiré que aparecen a grandes distancias de visualización, [ 5 ] a costa de un 33 % más de memoria por textura.

Historia

La técnica de mipmapping fue inventada por Lance Williams en 1983 y se describe en su artículo " Parametrics Pyramidal " [ 1 ] . Del resumen: "Este artículo propone una geometría de prefiltrado y muestreo 'paramétrica piramidal' que minimiza los efectos de aliasing y garantiza la continuidad dentro y entre las imágenes objetivo". La pirámide a la que se hace referencia puede imaginarse como el conjunto de mipmaps apilados uno frente al otro.

La primera patente sobre generación de texturas y mipmaps se emitió en 1983 por Johnson Yan, Nicholas Szabo y Lish-Yann Chen de Link Flight Simulation (Singer). Mediante su método, se podía generar y superponer textura en superficies (curvilíneas y planas) de cualquier orientación, y esto podía hacerse en tiempo real. Los patrones de textura podían modelarse de forma que sugirieran el material del mundo real que pretendían representar, de manera continua y sin aliasing, lo que proporcionaba un nivel de detalle y transiciones graduales (imperceptibles) entre los niveles de detalle. La generación de texturas se volvió repetible y coherente de fotograma a fotograma, manteniendo la perspectiva correcta y la ocultación adecuada. Dado que la aplicación de texturizado en tiempo real se utilizó en los primeros sistemas CGI de simuladores de vuelo tridimensionales, y siendo la textura un requisito previo para 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 videojuegos a medida que las aplicaciones se expandieron con el paso de los años. [ 6 ]

El origen del término mipmap es una sigla de la frase latina multum in parvo ("mucho en poco") y map, modelado a partir de bitmap. [ 1 ] 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.

Mecanismo

Ejemplo de almacenamiento de imágenes mipmap: la imagen principal de la izquierda va acompañada de copias filtradas de tamaño reducido.

Cada imagen bitmap del conjunto mipmap es una copia reducida de la textura principal , pero con un cierto nivel de detalle. Aunque la textura principal se seguirá utilizando cuando la vista sea suficiente para renderizarla con todo detalle, 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 la pantalla 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 la pantalla (como es el caso con el filtrado bilineal ), los artefactos se reducen ya que las imágenes mipmap ya están efectivamente suavizadas . El escalado hacia abajo y hacia arriba también se vuelve más eficiente 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 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 usaría una versión escalada 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 simple de generar estas texturas es mediante promedios sucesivos; Sin embargo, también se pueden utilizar algoritmos más sofisticados (quizás basados ​​en el procesamiento de señales y las transformadas de Fourier ).

Al mostrar cada canal de color de cada nivel de un mipmap RGB como un plano separado (izquierda), se observa que el mipmap completo forma un cuadrado con un área cuatro veces mayor. Dado que cada plano requiere 1/3 del almacenamiento , los mipmaps requieren , por lo tanto, 4/3 de la memoria; es decir, 1/3 ≈ 33% más.

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 el doble de 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 como las texturas más pequeñas toman 1/3 de la original, 1/3 de tres es uno, por lo que tomarán el mismo espacio total que solo uno de los planos originales rojo, verde o azul). Esta es la inspiración para la etiqueta multum in parvo .

Usos

Imagen que muestra cómo los mipmaps reducen el aliasing a grandes distancias.
Imagen que muestra cómo los mipmaps reducen el aliasing a grandes distancias (el aliasing provoca un patrón de moiré en la imagen de la izquierda).

Los mipmaps se utilizan para:

  • Nivel de detalle (LOD) [ 7 ] [ 8 ]
  • Mejorar la calidad de la imagen. La renderización a partir de texturas grandes donde solo se utilizan subconjuntos pequeños y discontinuos de texeles puede producir fácilmente patrones de Moiré ;
  • Acelerar los tiempos de renderizado, ya sea reduciendo el número de texeles muestreados para renderizar cada píxel o aumentando la localidad de memoria de las muestras tomadas;
  • Reduciendo la carga sobre la GPU o la CPU .
  • Reflejos de la superficie del agua [ 9 ]

Filtrado anisotrópico

Cuando se observa una textura en 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 de compromiso. 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 nítida. Si se utiliza una resolución más baja, la coherencia de la caché mejora, pero la imagen se vuelve excesivamente borrosa. Esto implicaría una compensación entre el nivel de detalle (LOD) del MIP y el aliasing frente a la borrosidad. Sin embargo, el filtrado anisotrópico intenta resolver esta compensación muestreando una huella de textura no isotrópica para cada píxel en lugar de simplemente ajustar el LOD del MIP. Este muestreo de textura no isotrópico requiere un esquema de almacenamiento más sofisticado o la suma de más recuperaciones de textura a frecuencias más altas. [ 10 ]

Véase también

Referencias

  1. 1 2 3 Williams, Lance. "Pyramidal Parametrics" (PDF) . Archivado del original (PDF) el 14 de abril de 2014. Recuperado el 25 de septiembre de 2012 .
  2. "Filtrado de texturas con mipmaps (Direct3D 9)" . microsoft.com . Microsoft.
  3. "Filtrado de texturas con mipmaps" . microsoft.com . Microsoft . 8 de abril de 2010.
  4. "Texturizado Mipmap" (PDF) . Consultado el 10 de diciembre de 2019 .
  5. "Problema de suavizado de bordes y mipmapping" . textureingraphics . 13 de diciembre de 2011. Consultado el 21 de febrero de 2019 .
  6. Johnson K. Yan, Nicholas S. Szabo, Lish-Yann Chen. "Generación de texturas" (PDF) .{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  7. "Múltiples niveles de detalle" (PDF) .
  8. "Estructura D3D11_SAMPLER_DESC" . microsoft.com . Microsoft.
  9. "Deconstruyendo el efecto del agua en Super Mario Sunshine" . 3 de marzo de 2018. Consultado el 25 de febrero de 2023 .
  10. Olano, Marc; Mukherjee, Shrijeet]]; Dorbie, Angus. "Texturizado anisotrópico basado en vértices" (PDF) .