Sur cette page

Meilleures pratiques en matière d’anti-aliasing

Qt Quick La 3D propose plusieurs méthodes pour lutter contre l'aliasing (les bords irréguliers) lors du rendu des modèles 3D. Chaque technique présente ses propres avantages et limites. Il est possible de combiner plusieurs techniques, mais cela entraîne un coût supplémentaire en termes de performances.

L'aliasing en général

L'aliasing se produit lorsque l'image d'origine contient plus d'informations que ce que nous pouvons représenter à l'aide des pixels à l'écran. Les techniques d'anti-aliasing se répartissent en trois catégories :

  • Les techniques qui identifient des informations supplémentaires pour un même pixel et les représentent toutes simultanément.
  • Des effets d'image qui tentent d'identifier les zones où l'image est de mauvaise qualité et de masquer les problèmes.
  • Les techniques utilisées par les artistes pour tenter de contourner ces limites.

Bien que l’anti-aliasing soit un outil utile pour le rendu graphique, il peut affecter les performances de votre application s’il n’est pas utilisé à bon escient. Les sections suivantes décrivent différentes techniques d’anti-aliasing parmi lesquelles vous pouvez choisir. Comprendre quelle technique répond le mieux à vos problèmes vous aidera à trouver le juste équilibre entre qualité visuelle et vitesse de rendu suffisante.

Aliasing géométrique

Par défaut, toute la géométrie est rendue pixel par pixel à l'écran. Comme vous pouvez le voir à gauche sur l'image ci-dessous, cela laisse des bords irréguliers qui peuvent être facilement perceptibles dans les cas de fort contraste, notamment ici avec le noir et blanc.

Comparaison de cinq techniques d'anticrénelage appliquées à des carrés, des cercles et du texte pivotés

Techniques efficaces pour réduire l'aliasing de la géométrie

La solution la plus appropriée consiste à utiliser l'anti-aliasing multisample, car il permet de recueillir davantage de détails géométriques uniquement lorsque cela est nécessaire. L'utilisation de l'anti-aliasing temporel ou de l'anti-aliasing progressif peut également atténuer ce problème de manière adéquate.

Enfin, dans certains cas, vous pouvez utiliser une carte d'opacité de silhouette pour lisser les contours de la géométrie.

Aliasing des textures

Lorsqu’une texture est sous-échantillonnée, le nombre de pixels affichés est inférieur à celui de l’original, ce qui entraîne des artefacts indésirables liés au choix des pixels. Cet effet est accentué lorsque le modèle est en mouvement, car différents pixels sont sélectionnés à différents moments. Sur l'image ci-dessous, remarquez comment la ligne entre E3 et F3 est absente, très présente entre G3 et H3, puis disparaît sur les 5 colonnes suivantes, et ainsi de suite.

Comparaison de quatre techniques d'anticrénelage sur une texture en grille s'éloignant

Techniques efficaces pour réduire l'aliasing des textures

La solution la plus simple (et sans doute la meilleure) à ce problème consiste à utiliser le mipmapping dans la texture de l'image elle-même. D'autres solutions consistent à utiliser soit l'anti-aliasing temporel (Temporal AA), soit l'anti-aliasing progressif (Progressive AA) pour extraire davantage d'informations de la texture.

L'utilisation de l'anti-aliasing multisample ne résoudra pas ce problème.

Aliasing de réflexion

À l'instar de l'aliasing de texture, un matériau reflétant l'environnement entraînera un sous-échantillonnage de l'image. Dans certains cas, comme on peut le voir à gauche sur l'image ci-dessous, cela devient évident lorsque des détails fins sont omis.

Comparaison de quatre techniques visant à réduire l'aliasing de réflexion

Techniques efficaces pour réduire l'aliasing des reflets

La solution la plus appropriée dans ce cas consiste à utiliser l'anti-aliasing temporel (Temporal AA ) ou l'anti-aliasing progressif (Progressive AA ) pour récupérer les informations manquantes.

Une solution alternative simple et acceptable consiste à rendre le matériau moins brillant et plus rugueux. Dans ce cas, des mipmaps de l'environnement à plus faible résolution sont automatiquement utilisées, ce qui permet d'estomper les détails trop nets.

Techniques d'anti-aliasing dans l'Qt Quick e 3D

Remarque : consultez l’exemple d’anti-aliasing et l’exemple d’effets de scène pour tester certaines de ces fonctionnalités en direct. Gardez toutefois à l’esprit que les systèmes de fenêtrage modernes sont souvent configurés pour effectuer une mise à l’échelle haute DPI lorsqu’un écran haute résolution est connecté. Cela signifie que le contenu de toute fenêtre affichée à l’écran est rendu à une résolution supérieure, puis redimensionné par le compositeur système ou un autre composant de la plateforme. Il s’agit en fait d’une forme d’anti-aliasing par suréchantillonnage. L'activation des techniques d'anticrénelage dans « Qt Quick 3D » peut alors n'apporter que des améliorations minimes, voire parfois difficiles à percevoir, car le crénelage est déjà éliminé dans une certaine mesure par la mise à l'échelle automatique du système de gestion des fenêtres. Cependant, lors du déploiement de la même application sur un autre système, il se peut très bien que ce système utilise une plateforme ou un écran ne disposant pas d’une telle mise à l’échelle, ce qui rend l’aliasing et les bords irréguliers plus visibles dès l’installation. Il est conseillé aux développeurs de prendre en compte la présence ou l’absence éventuelle d’un redimensionnement haute résolution (haute DPI) dans leurs environnements cibles, et de tester et d’ajuster les paramètres d’anticrénelage en tenant compte de cet aspect.

Vous trouverez ci-dessous un exemple de rendu de la scène Sponza avec certaines méthodes d’anticrénelage activées. Les captures d’écran ont été réalisées sans qu’aucun redimensionnement système ne soit appliqué à la fenêtre (pas de redimensionnement haute résolution), ce qui rend les effets des différentes méthodes plus prononcés.

AA utiliséRésultat
Sans AA

Scène architecturale sans anticrénelage, présentant des contours irréguliers

Anticrénelage par suréchantillonnage, élevé (1,5x)

Scène architecturale avec anticrénelage par suréchantillonnage à 1,5x

Antialiasing multisample, élevé (4x)

Scène architecturale avec anticrénelage multi-échantillon à 4x

FXAA

Scène architecturale avec anticrénelage approximatif rapide

Antialiasage temporel, intensité par défaut (0,3)

Scène architecturale avec anticrénelage temporel

Anti-aliasing multisample

L'anti-aliasing multisample (MSAA) s'applique soit au tampon de couleur de l'élément « View3D » (c'est le comportement par défaut), soit, si l'on utilise une option « renderMode » autre que « Offscreen », à l'ensemble de la fenêtre « Qt Quick » (QQuickWindow, QQuickView, Window, ApplicationWindow).

Les contours de la géométrie sont suréchantillonnés, ce qui permet d’obtenir des silhouettes plus lisses. Cette technique n’a toutefois aucun effet sur les matériaux à l’intérieur de la géométrie.

  • Avantages: bons résultats sur les contours de la géométrie, là où l’aliasing est souvent le plus visible. Fonctionne sans problème avec des animations rapides. De nombreux GPU récents prennent en charge le MSAA 2x ou 4x sans aucun problème de performances.
  • Inconvénients: son utilisation peut s’avérer coûteuse, en particulier sur du matériel mobile et embarqué plus ancien. Ne résout pas les problèmes liés aux textures ou aux reflets.

Lorsque l’ View3D utilise l’ renderMode par défaut de Offscreen, l’ View3D e contrôle entièrement l’anticrénelage multi-échantillon. Les applications peuvent configurer cela via les propriétés antialiasingMode et antialiasingQuality de l’environnement (SceneEnvironment ou ExtendedSceneEnvironment) associé à l’ View3D.

L'exemple suivant demande le MSAA 4x couramment utilisé, car la valeur par défaut de `antialiasingQuality` est ` SceneEnvironment.High`.

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

Le MSAA n’est pas implémenté par Qt lui-même, mais est plutôt pris en charge par l’API 3D sous-jacente. Par conséquent, les performances et la qualité peuvent varier selon le matériel utilisé et les implémentations de l’API 3D correspondantes.

Anti-aliasing temporel

L'anti-aliasing temporel agit sur le tampon de couleur de l'View3D. La caméra est très légèrement décalée d'une image à l'autre, et le résultat de chaque nouvelle image est fusionné avec celui de l'image précédente.

  • Avantages: grâce à ce léger mouvement de la caméra, cette technique permet de faire ressortir des détails qui auraient autrement été perdus. Faible impact sur les performances.
  • Inconvénients: les objets se déplaçant rapidement provoquent un effet de « fantôme » sur une image.

L'AA temporel n'a aucun effet lorsqu'il est combiné avec l'AA multisample. Il peut toutefois être combiné avec l'AA progressif.

Pour contrôler l'anti-aliasing temporel, utilisez les propriétés « temporalAAEnabled » et « temporalAAStrength » de l'environnement.

View3D {
    environment: SceneEnvironment {
        temporalAAEnabled: true
    }
}

Anti-aliasing progressif

L'anti-aliasing progressif agit sur le tampon de couleur de l'View3D. Lorsque tout le contenu de la scène rendu par l'View3D a cessé de bouger, la caméra est très légèrement décalée d'une image à l'autre, et le résultat de chaque nouvelle image est fusionné avec les images précédentes. Plus le nombre d'images accumulées est élevé, plus le résultat est esthétique.

  • Avantages: fournit des images statiques détaillées sans impact sur les performances.
  • Inconvénients: ne produit aucun effet si des changements visuels se produisent. Le rendu 8x PAA prend un huitième de seconde (à 60 images par seconde), ce qui peut être perceptible.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.ProgressiveAA
    }
}

Utilisez l'antialiasingQuality e pour contrôler le nombre d'images à fusionner (2, 4 ou 8).

Anti-aliasing par suréchantillonnage

L'anti-aliasing par suréchantillonnage (Supersample AA) s'applique au tampon de couleur d'un « View3D ». Cela implique de créer un tampon de couleur (texture) plus grand que sa taille normale, puis de le sous-échantillonner. Cela entraîne une augmentation de l'utilisation des ressources et, pour les grandes tailles, l'opération de mise à l'échelle peut s'avérer coûteuse.

  • Avantages: offre un anti-aliasing sur l'ensemble de la scène sans aucune limitation au niveau de l'animation.
  • Inconvénients: peut considérablement réduire les performances lorsque votre scène est déjà limitée par le taux de remplissage du système graphique, en particulier sur du matériel mobile et embarqué plus ancien.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.SSAA
    }
}

Utilisez l'antialiasingQuality e pour contrôler le facteur d'agrandissement (1,2, 1,5 ou 2,0).

Mipmaps

Le mipmapping stocke la texture ainsi que ses versions précalculées à plus faible résolution. Chaque fois que la texture est affichée à une taille réduite, le système de rendu utilise automatiquement ces images à faible résolution (qui regroupent de nombreux détails en un nombre réduit de pixels).

  • Avantages: faible impact sur les performances. Améliore considérablement la qualité d’image des textures.
  • Inconvénients: nécessite la génération potentiellement coûteuse de la chaîne de mipmaps ou, avec certains formats de conteneurs d'images, la pré-génération des images mipmaps dans la ressource image elle-même. Utilise 33 % de mémoire graphique en plus que la même image sans mipmaps.

Pour que Qt génère des mipmaps pour une texture « Texture » et active l’utilisation de la chaîne de mipmaps lors de l’échantillonnage de la texture dans les shaders graphiques, définissez les propriétés « mipFilter » et « generateMipmaps ».

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

Anti-aliasing spéculaire

Les artefacts dus à l’éclairage spéculaire peuvent être réduits en activant l’anti-aliasing spéculaire. Ces artefacts se présentent généralement sous la forme de points lumineux, pouvant parfois présenter un aspect scintillant.

Anti-aliasing spéculaire désactivéAnti-aliasing spéculaire activé

Scène architecturale présentant des reflets spéculaires sans anticrénelage

Scène architecturale présentant des reflets spéculaires lissés grâce à l'anticrénelage

View3D {
    environment: SceneEnvironment {
        specularAAEnabled: true
    }
}

Remarque : les matériaux présentant un aspect très lisse peuvent changer d’aspect, comme s’ils avaient une surface « more rough », lorsque l’anti-aliasing spéculaire est activé. Ce phénomène résulte des calculs d’éclairage sous-jacents.

Anti-aliasing approximatif rapide

ExtendedSceneEnvironment propose une autre méthode d'anti-aliasing sous la forme d'un effet de post-traitement. Pour activer le FXAA, réglez l'option « fxaaEnabled » sur « true ».

import QtQuick3D.Helpers

View3D {
    environment: ExtendedSceneEnvironment {
        fxaaEnabled: true
    }
}

Astuces utilisées par les artistes

Cartes d’opacité des silhouettes

Lorsque votre modèle présente une silhouette régulière, vous pouvez appliquer une carte d’opacité qui rend le contour extérieur de la géométrie transparent. L’utilisation d’un dégradé pour l’opacité permettra au contour de l’objet de s’estomper en douceur. Cependant, même si votre carte d'opacité passe directement d'une opacité totale à une transparence totale sur un seul pixel, le résultat présentera tout de même des contours anti-crénelés, comme le montre l'exemple ci-dessus. Cela s'explique par le fait que les cartes d'image, y compris les cartes d'opacité, utilisent une interpolation bilinéaire.

  • Avantages: permet d’obtenir des transitions plus douces qu’avec l’anti-aliasing classique. Peut être appliqué par modèle plutôt que par calque.
  • Inconvénients: ne peut pas être utilisé si la silhouette de l’objet est amenée à changer. Plusieurs modèles superposés utilisant la transparence réduisent le taux de remplissage, une ressource souvent très prisée.

Modification des matériaux ou de la géométrie

Comme le montre l’image ci-dessus concernant l’aliasing des reflets, la solution la plus simple consiste parfois à modifier le modèle. Si vous constatez des reflets spéculaires gênants sur les angles de votre modèle, posez-vous les questions suivantes : puis-je adoucir le matériau ? Puis-je modifier la géométrie pour lisser ou changer l’angle de réflexion ? Puis-je modifier la carte d’environnement pour réduire les transitions brusques ?

© 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.