En gráficos por computadora en 3D , el filtrado anisotrópico (abreviado AF ) [1] [2] es un método para mejorar la calidad de imagen de las texturas . Solo se aplica en superficies en ángulos de visión oblicuos a la cámara y donde la proyección de la textura (no el polígono u otro primitivo en el que se representa) parece no ser ortogonal . Según su etimología, el filtrado anisotrópico no filtra lo mismo en todas las direcciones.
Al igual que el filtrado bilineal y trilineal , el filtrado anisotrópico elimina los efectos de aliasing , [3] [4] pero mejora estas otras técnicas al reducir el desenfoque y preservar los detalles en ángulos de visión extremos.
Principalmente debido a las limitaciones del ancho de banda de la memoria [ cita requerida ] , el filtrado anisotrópico es un proceso relativamente intensivo y solo se convirtió en una característica estándar de las tarjetas gráficas de nivel de consumidor a fines de la década de 1990. [5] El filtrado anisotrópico ahora es común en el hardware de gráficos moderno (y software de controlador de video) y lo habilitan los usuarios a través de configuraciones del controlador o las aplicaciones gráficas y los videojuegos a través de interfaces de programación.
El filtrado anisotrópico conserva la "nitidez" de una textura que normalmente se pierde cuando una textura de mapa MIP intenta evitar el aliasing. Por lo tanto, se puede decir que el filtrado anisotrópico mantiene los detalles de la textura nítidos en todas las orientaciones de visualización, al tiempo que proporciona un filtrado de texturas antialiasing rápido .
En el mapeo isotrópico tradicional , la reducción de tamaño en cada nivel reduce a la mitad la resolución en cada eje simultáneamente. Como resultado, al renderizar un plano horizontal en un ángulo oblicuo a la cámara, la minimización proporcionaría una resolución horizontal insuficiente debido a la reducción de la frecuencia de la imagen en el eje vertical. Es decir, al muestrear para evitar el aliasing en un eje de alta frecuencia, los otros ejes de textura se reducirán de manera similar y, por lo tanto, potencialmente se verán borrosos.
Con el filtrado anisotrópico de mapas MIP, una textura con una resolución de 256 × 256 píxeles no solo se reduciría a 128 × 128 píxeles, sino también a otras resoluciones no cuadradas, como 256 × 128 píxeles y 32 × 128 píxeles. Estas imágenes con reducción de resolución anisotrópica se pueden analizar cuando la frecuencia de la imagen mapeada con textura es diferente para cada eje de textura. De este modo, un eje no se ve borroso debido a la frecuencia de trama de otro eje y se evita el aliasing.
El mapeo de mip y sus restricciones de alineación de ejes asociadas significan que no es óptimo para un filtrado anisotrópico verdadero y se utiliza aquí solo con fines ilustrativos. Los métodos de filtrado anisotrópico más generales admiten sondas anisotrópicas que no están necesariamente alineadas con los ejes en el espacio de textura , lo que permite la anisotropía diagonal.
Se pueden aplicar diferentes grados o proporciones de filtrado anisotrópico durante la renderización. Este grado se refiere a la proporción máxima de anisotropía admitida por el proceso de filtrado. Por ejemplo, el filtrado anisotrópico 4:1 (pronunciado “4 a 1”) seguirá enfocando más texturas oblicuas más allá del rango enfocado por 2:1. [6]
En la práctica, esto significa que en situaciones de texturas muy oblicuas, un filtro 4:1 será dos veces más nítido que un filtro 2:1 (mostrará frecuencias que duplican las del filtro 2:1). Sin embargo, la mayor parte de la escena no requerirá el filtro 4:1; solo los píxeles más oblicuos y, por lo general, más distantes requerirán el filtrado más nítido. Esto significa que, a medida que el grado de filtrado anisotrópico continúa duplicándose, hay rendimientos decrecientes en términos de calidad visible con cada vez menos píxeles renderizados afectados, y los resultados se vuelven menos obvios para el espectador; solo unos pocos píxeles muy oblicuos, principalmente en geometría más distante, mostrarán texturas visiblemente más nítidas en la escena con el mayor grado de filtrado anisotrópico. La penalización del rendimiento también disminuye porque menos píxeles requieren las recuperaciones de datos de mayor anisotropía.
Las implementaciones actuales de renderizado de hardware establecen un límite superior para esta relación debido a la complejidad adicional del hardware y los rendimientos decrecientes antes mencionados. [7] Las aplicaciones y los usuarios pueden ajustar la relación a través de configuraciones de controlador y software hasta el umbral.
El filtrado anisotrópico verdadero analiza la textura de forma anisotrópica sobre la marcha, píxel por píxel, para cualquier orientación de anisotropía.
En el hardware de gráficos, normalmente cuando la textura se muestrea de forma anisotrópica, se toman varias sondas ( muestras de texel ) de la textura alrededor del punto central en un patrón de muestra mapeado de acuerdo con la forma proyectada de la textura en ese píxel. [8] Los métodos de software anteriores han utilizado tablas de área sumada . [9]
Cada sonda de filtrado anisotrópico es a menudo en sí misma una muestra de mapa mip filtrado, lo que añade más muestreo al proceso. Dieciséis muestras anisotrópicas trilineales pueden requerir 128 muestras de la textura almacenada, ya que el filtrado de mapa mip trilineal necesita tomar cuatro muestras para cada uno de los dos mapas mip y luego el muestreo anisotrópico (a 16 tomas) necesita tomar dieciséis de estas sondas filtradas trilineales.
Sin embargo, este nivel de complejidad de filtrado no siempre es necesario. Existen métodos comúnmente disponibles para reducir la cantidad de trabajo que debe realizar el hardware de renderización de video. [ cita requerida ]
El método de filtrado anisotrópico que se implementa con mayor frecuencia en hardware gráfico es la composición de los valores de píxeles filtrados a partir de una sola línea de muestras de mapas MIP. En general, el método de construcción de un resultado de filtro de textura a partir de múltiples sondas que llenan un muestreo de píxeles proyectado en el espacio de textura se conoce como "ensamblaje de huella", incluso cuando los detalles de implementación varían. [10] [11] [12]
La cantidad de muestras requerida puede hacer que el filtrado anisotrópico requiera un uso extremadamente intensivo del ancho de banda . Es común tener múltiples texturas; cada muestra de textura puede tener cuatro bytes o más, por lo que cada píxel anisotrópico puede requerir 512 bytes de la memoria de textura, aunque la compresión de textura se usa comúnmente para reducir esto.
Un dispositivo de visualización de vídeo puede contener fácilmente más de dos millones de píxeles y las velocidades de cuadros deseadas para la aplicación suelen ser superiores a 60 cuadros por segundo. Como resultado, el ancho de banda de memoria de textura requerido puede alcanzar valores elevados. No es inusual que se utilicen cientos de gigabytes por segundo de ancho de banda de canalización para operaciones de renderizado de texturas cuando se utilizan operaciones de filtrado anisotrópico. [13]
Afortunadamente, varios factores mitigan a favor de un mejor rendimiento: