El filtrado anisotrópico "conserva la nitidez de una textura que normalmente se pierde por los intentos de la textura del mapa MIP de evitar el aliasing". El artículo de Wikipedia da pistas sobre cómo se puede implementar ("sondear la textura (...) para cualquier orientación de anisotropía"), pero no me parece muy claro.
Parece que hay varias implementaciones, como lo sugieren las pruebas ilustradas en las notas de la presentación Modelos aproximados para la representación basada en la física :
¿Cuáles son los cálculos concretos realizados por las GPU (modernas) para elegir el nivel MIP correcto cuando se utiliza el filtrado anisotrópico?
GL_EXT_texture_filter_anisotropic
es muy detallada. Tal vez podría ayudarlo a comprender mejor el proceso.Respuestas:
El hardware de filtrado de textura toma varias muestras de los distintos niveles de mipmap (la cantidad máxima de muestras se indica mediante el nivel de filtrado anisotrópico, aunque la cantidad exacta de muestras tomadas en una operación de filtrado dada dependerá de la proporción entre los derivados en el fragmento. ) Si proyecta el cono visualizando una superficie en un ángulo oblicuo sobre el espacio de textura, dará como resultado una proyección de forma ovalada, que es más alargada para ángulos más oblicuos. Se toman muestras adicionales a lo largo del eje de este óvalo (desde los niveles de mip correctos, para aprovechar el prefiltrado que ofrecen) y se combinan para dar una muestra de textura más nítida.
Otra técnica conocida como rip-mapping (mencionada en el artículo de Wikipedia sobre Mipmapping), que no escomúnmente encontrado en las GPU contemporáneas, utiliza prefiltrado de texturas. A diferencia de los mips, la textura no se reduce uniformemente, sino que usa varias proporciones de altura-ancho (hasta una proporción que depende del nivel de filtrado anisotrópico elegido). La variante, o tal vez dos variantes si se usa un filtrado trilineal, de la textura se elige en función del ángulo de la superficie para minimizar la distorsión. Los valores de píxeles se obtienen mediante técnicas de filtrado predeterminadas (bilineales o trilineales). Los mapas de rasgadura no se usan en ningún hardware que conozca debido a su tamaño prohibitivo: mientras que los mapas MIP usan almacenamiento adicional del 33%, los mapas rasgados usan el 300%. Esto se puede verificar observando que los requisitos de uso de textura no aumentan cuando se usa AF, sino que solo lo hace el ancho de banda.
Para leer más, es posible que desee echar un vistazo a la especificación para la extensión OpenGL EXT_texture_filter_anisotropic . Detalla las fórmulas utilizadas para calcular las muestras y cómo combinarlas cuando se utiliza el filtrado anisotrópico.
fuente
Los requisitos de la API se pueden encontrar en cualquiera de las especificaciones o extensiones. Aquí hay uno: https://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt
Es probable que todos los proveedores de GPU se desvíen de la especificación porque la calidad AF solía ser parte de muchos puntos de referencia. Y las implementaciones actuales continuarán evolucionando a medida que las nuevas cargas de trabajo enfaticen las aproximaciones existentes. Desafortunadamente, para saber exactamente qué hace, necesitará ser parte de una de las compañías. Pero puede evaluar el espectro de posibilidades de los siguientes documentos, enumerados en orden creciente de calidad y costo de implementación:
Citando de la especificación:
fuente