En esta página

Buenas prácticas de antialiasing

Qt Quick El 3D tiene múltiples formas de combatir el aliasing (los bordes dentados) al renderizar modelos 3D. Cada técnica ofrece sus propias ventajas y limitaciones. Se pueden combinar múltiples técnicas, pero con un coste adicional de rendimiento.

Aliasing en general

El aliasing se produce cuando hay más información presente en el original de la que podemos representar en los píxeles de la pantalla. Las técnicas de antialiasing se dividen en tres categorías:

  • Técnicas que encuentran información adicional para un solo píxel y la representan toda al mismo tiempo.
  • Efectos de imagen que intentan encontrar dónde las cosas se ven mal y barrer los problemas bajo la alfombra.
  • Técnicas empleadas por artistas que intentan sortear las limitaciones.

Aunque el antialiasing es una herramienta útil en el renderizado de gráficos, puede afectar al rendimiento de tu aplicación si no se utiliza con prudencia. Las siguientes secciones describen algunas técnicas diferentes de anti-aliasing entre las que elegir. Comprender qué técnica se adapta mejor a tus problemas te ayudará a equilibrar la calidad visual con una velocidad de renderizado suficiente.

Aliasing de geometría

Por defecto, toda la geometría se renderiza píxel a píxel. Como se puede ver a la izquierda en la imagen de abajo, esto deja bordes ásperos que pueden ser fácilmente perceptibles en casos de alto contraste, más notable aquí con blanco y negro.

Comparación de cinco técnicas de antialiasing en cuadrados, círculos y texto rotados

Técnicas eficaces para reducir el aliasing de la geometría

La solución más correcta para esto es utilizar el Antialiasing Multimuestra, ya que recoge más detalles geométricos sólo cuando es necesario. El uso de Antialiasing temporal o Antialiasing progresivo también puede mitigar el problema de forma correcta.

Por último, en ciertos casos se puede utilizar un mapa de opacidad de silueta para suavizar los bordes de la geometría.

Aliasing de texturas

Cuando se submuestrea una textura, se muestran menos píxeles que en el original, lo que produce artefactos no deseados en función de los píxeles elegidos. Este efecto empeora cuando el modelo está en movimiento, ya que se eligen píxeles diferentes en momentos diferentes. En la imagen siguiente, observe cómo falta la línea entre E3 y F3, está muy presente entre G3 y H3, luego desaparece en las 5 columnas siguientes, y así sucesivamente.

Comparación de cuatro técnicas de antialiasing en textura de rejilla en retroceso

Técnicas eficaces para reducir el aliasing en las texturas

La solución más sencilla (y posiblemente la mejor) para este problema es utilizar el mipmapping en la propia textura de la imagen. Otras soluciones alternativas incluyen el uso de AA temporal o AA progresivo para obtener más información de la textura.

El uso del Antialiasing Multimuestra no solucionará este problema.

Aliasing de reflexión

Similar al Aliasing de Textura, un material que refleja el entorno submuestreará la imagen. En algunos casos, como se ve a la izquierda en la imagen de abajo, se hace evidente cuando se omiten detalles finos.

Comparación de cuatro técnicas para reducir el aliasing de reflexión

Técnicas eficaces para reducir el aliasing en los reflejos

La solución más correcta en este caso es utilizar AA Temporal o AA Progresivo para encontrar la información extra.

Una solución alternativa sencilla que puede ser aceptable es hacer el material menos brillante, más rugoso. En este caso se utilizan automáticamente mipmaps de menor resolución del entorno, mezclando los detalles nítidos.

Técnicas antialiasing en Qt Quick 3D

Nota: Echa un vistazo al Ejemplo de Antialiasing y al Ejemplo de Efectos de Escena para ejercitar algunas de estas características en vivo. Tenga en cuenta, sin embargo, que los sistemas de ventanas modernos suelen estar configurados para realizar un escalado de alta DPI con una pantalla de alta resolución conectada. Esto significa que el contenido de cualquier ventana que se muestre en pantalla se renderiza a una resolución más alta y luego es reducido por el compositor del sistema o algún otro componente de la plataforma. Se trata, en efecto, de una forma de antialiasing de supermuestreo. La activación de las técnicas de antialiasing en Qt Quick 3D puede mostrar mejoras menores, a veces difíciles de ver, porque el aliasing ya se ha eliminado en cierta medida mediante el escalado automático del sistema de ventanas. Sin embargo, al desplegar la misma aplicación en otro sistema, es muy posible que ese sistema concreto utilice una plataforma o una pantalla en la que no exista tal escalado, por lo que el aliasing y los bordes dentados son más visibles desde el primer momento. Se aconseja a los desarrolladores que tengan en cuenta la posible presencia o ausencia de un alto escalado de PPP en sus entornos de destino, y que experimenten y ajusten la configuración del antialiasing teniendo esto en cuenta.

A continuación se muestra un ejemplo de renderizado de la escena Sponza con algunos métodos de antialiasing activados. Las capturas de pantalla se tomaron sin aplicar ningún escalado del sistema a la ventana (sin escalado DPI alto), por lo que los efectos de los distintos métodos son más pronunciados.

AA utilizadoResultado
Sin AA

Escena arquitectónica sin antialiasing que muestra bordes dentados

Supermuestra AA, alta (1,5x)

Escena arquitectónica con antialiasing de supermuestreo a 1,5x

Multimuestra AA, alta (4x)

Escena arquitectónica con antialiasing multimuestra a 4x

FXAA

Escena arquitectónica con antialiasing rápido aproximado

AA temporal, intensidad por defecto (0,3)

Escena arquitectónica con antialiasing temporal

Antialiasing multimuestra

Multisample AA (MSAA) actúa sobre el búfer de color del elemento View3D (por defecto) o, si se utiliza un elemento renderMode distinto de Offscreen, sobre toda la ventana Qt Quick (QQuickWindow, QQuickView, Window, ApplicationWindow).

Los bordes de la geometría se supermuestrean, lo que da como resultado siluetas más suaves. Sin embargo, esta técnica no afecta a los materiales del interior de la geometría.

  • Ventajas: Buenos resultados en las siluetas de la geometría, donde el aliasing suele ser más notable. Funciona sin problemas con animaciones rápidas. Muchas GPU recientes admiten MSAA 2x o 4x sin problemas de rendimiento.
  • Contras: su uso puede resultar caro, sobre todo en equipos móviles e integrados antiguos. No ayuda con problemas de texturas o reflejos.

Cuando View3D utiliza el valor predeterminado renderMode de Offscreen, el propio View3D tiene el control total del antialiasing multimuestra. Las aplicaciones pueden configurarlo a través de las propiedades antialiasingMode y antialiasingQuality del entorno (SceneEnvironment o ExtendedSceneEnvironment) asociado a View3D.

El siguiente ejemplo solicita el MSAA 4x utilizado habitualmente, ya que antialiasingQuality es por defecto SceneEnvironment.High.

View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.MSAA
    }
}

Qt no implementa MSAA, sino que lo hace la API 3D subyacente. Por lo tanto, el rendimiento y la calidad pueden variar según el hardware y sus implementaciones de la API 3D.

Antialiasing temporal

El AA temporal funciona en el búfer de color de View3D. La cámara se mueve ligeramente entre fotogramas y el resultado de cada nuevo fotograma se mezcla con el fotograma anterior.

  • Ventajas: Gracias a la sacudida de la cámara se encuentran detalles reales que de otro modo se perderían. Bajo impacto en el rendimiento.
  • Contras: Los objetos que se mueven rápidamente provocan imágenes fantasma en un fotograma.

Temporal AA no tiene efecto cuando se combina con Multisample AA. Sin embargo, puede combinarse con AA Progresivo.

Para controlar el antialiasing temporal, utilice las propiedades temporalAAEnabled y temporalAAStrength del entorno.

View3D {
    environment: SceneEnvironment {
        temporalAAEnabled: true
    }
}

Antialiasing progresivo

El AA progresivo opera sobre el buffer de color de View3D. Cuando todo el contenido de la escena renderizada por View3D ha dejado de moverse, la cámara se mueve muy ligeramente entre fotogramas, y el resultado de cada nuevo fotograma se mezcla con los fotogramas anteriores. Cuantos más fotogramas se acumulen, más bonito será el resultado.

  • Ventajas: Proporciona imágenes estáticas detalladas sin coste de rendimiento.
  • Contras: No surte efecto si se está produciendo algún cambio visual. 8x PAA tarda un octavo de segundo en terminar de renderizar (a 60fps), lo que puede ser perceptible.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.ProgressiveAA
    }
}

Utilice antialiasingQuality para controlar cuántos fotogramas se mezclan (2, 4 u 8).

Supersample Anti-Aliasing

Supersample AA opera en el buffer de color de View3D. Esto implica crear un buffer de color (textura) más grande que su tamaño normal, y luego reducir su tamaño. Esto implica un mayor uso de recursos y, en tamaños grandes, la operación de escalado puede resultar costosa.

  • Ventajas: Proporciona antialiasing en toda la escena sin limitaciones en la animación.
  • Contras: Puede degradar gravemente el rendimiento cuando la escena ya está limitada por la tasa de relleno del sistema gráfico, especialmente en móviles antiguos y hardware integrado.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.SSAA
    }
}

Utilice antialiasingQuality para controlar el multiplicador de tamaño (1,2, 1,5 o 2,0).

Mipmaps

Los mipmaps almacenan la textura junto con sus versiones precalculadas de menor resolución. Cada vez que la textura se muestra a un tamaño menor, el sistema de renderizado utiliza automáticamente estas imágenes de baja resolución (que combinan muchos detalles en menos píxeles).

  • Ventajas: Bajo impacto en el rendimiento. Mejora considerablemente la calidad de imagen de las texturas.
  • Contras: Requiere una generación potencialmente costosa de la cadena mipmap o, con algunos formatos contenedores de imágenes, la generación previa de las imágenes mipmap en el propio activo de imagen. Utiliza un 33% más de memoria gráfica que la misma imagen sin mipmaps.

Para que Qt genere mipmaps para un Texture y habilite el uso de la cadena de mipmaps al realizar el muestreo de texturas en los sombreadores gráficos, establezca las propiedades mipFilter y generateMipmaps.

Texture {
    source: "image.png"
    mipFilter: Texture.Linear
    generateMipmaps: true
}

Antialiasing especular

Los artefactos de la contribución de la iluminación especular pueden reducirse activando el antialiasing especular. Estos artefactos suelen aparecer como puntos brillantes, tal vez con un aspecto parpadeante.

AA especular desactivadoAA especular activado

Escena arquitectónica con reflejos especulares sin antialiasing

Escena arquitectónica con brillos especulares suavizados con antialiasing

View3D {
    environment: SceneEnvironment {
        specularAAEnabled: true
    }
}

Nota: Los materiales con una apariencia muy suave pueden cambiar su apariencia como si tuvieran una superficie more rough cuando se activa el AA especular. Esto es resultado de los cálculos de iluminación subyacentes.

Antialiasing rápido aproximado

ExtendedSceneEnvironment ofrece otro método de anti-aliasing en forma de efecto de post-procesado. Para activar FXAA, configure fxaaEnabled como verdadero.

import QtQuick3D.Helpers

View3D {
    environment: ExtendedSceneEnvironment {
        fxaaEnabled: true
    }
}

Trucos para artistas

Mapas de opacidad de siluetas

Cuando tu modelo tenga una silueta consistente, puedes aplicar un mapa de opacidad que haga transparente el borde exterior de la geometría. Si utilizas un degradado para la opacidad, el borde del objeto desaparecerá suavemente. Sin embargo, incluso si su mapa de opacidad pasa directamente de totalmente opaco a totalmente transparente en el espacio de un píxel, el resultado seguirá proporcionando bordes suavizados como se ve en el ejemplo anterior. Esto se debe a que los mapas de imagen, incluidos los mapas de opacidad, utilizan interpolación bilineal.

  • Ventajas: Puede mostrar transiciones más suaves que el AA normal. Puede aplicarse por modelo en lugar de por capa.
  • Contras: No se puede utilizar si la silueta del objeto va a cambiar alguna vez. Múltiples modelos superpuestos que emplean transparencias consumen el rendimiento de la tasa de relleno, que suele ser elevado.

Modificación de materiales o geometría

Como se muestra en la imagen anterior, a veces la solución más sencilla a los problemas es cambiar el material gráfico. Si usted está recibiendo molestos reflejos especulares en la esquina de su modelo, pregúntese: ¿Puedo suavizar el material? ¿Puedo modificar la geometría para suavizar o cambiar el ángulo de reflexión? ¿Puedo editar el mapa de entorno para reducir las transiciones bruscas?

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.