1 points par GN⁺ 2024-11-21 | 1 commentaires | Partager sur WhatsApp

Le voyage du jour : l’anti-aliasing

  • L’anti-aliasing est une forme d’art qui a évolué au fil de décennies de mathématiques, de techniques créatives et d’innovations continues.
  • Il existe diverses approches, comme SSAA, SMAA et DLAA, qui cherchent toutes à atteindre le même objectif par des méthodes différentes.
  • Cet article examine le fonctionnement de ces méthodes et présente une nouvelle façon de résoudre le problème : l’anti-aliasing analytique.

Mise en place

  • Pour comprendre l’algorithme d’anti-aliasing, l’implémentation utilise un canvas WebGL qui dessine un cercle en mouvement.
  • Si la résolution est trop élevée pour que l’aliasing soit visible, il est possible de la réduire pour l’observer.

Analyse technique

  • Comprendre le code GPU n’est pas indispensable, mais cela aide à saisir la partie analytique.
  • Le cercle n’est pas dessiné géométriquement, mais par un shader.

SSAA

  • SSAA signifie Super Sampling Anti-Aliasing : le rendu est effectué à une résolution plus élevée, puis sous-échantillonné.
  • L’implémentation est simple, mais les besoins en mémoire et en calcul sont élevés.
  • Un placement approprié des échantillons est nécessaire, ainsi qu’une intégration approfondie au pipeline de rendu.

MSAA

  • MSAA n’effectue le super sampling que sur la silhouette du modèle, la géométrie qui se chevauche et les bords de texture.
  • Il est implémenté par le matériel, et sa prise en charge dépend du hardware.
  • Dans certaines situations, son coût en performances peut être nul.

Anti-aliasing en post-traitement

  • En 2009, l’article d’Alexander Reshetov a donné naissance à MLAA.
  • FXAA est un algorithme inspiré de MLAA, peu coûteux en performances et facile à implémenter.
  • Il est plus efficace dans les scènes complexes.

Anti-aliasing analytique

  • L’anti-aliasing analytique prend le problème à l’envers : en connaissant la forme nécessaire, il dessine directement à l’écran des pixels déjà anti-crénelés.
  • Il ne nécessite ni buffer supplémentaire ni exigence matérielle particulière, et peut fonctionner même sur WebGL 1.0 ou OpenGLES 2.0 de base.
  • Il calcule la taille des pixels pour faire disparaître progressivement les bords de la forme.

Implémentation

  • Grâce au signed distance field, il est possible de connaître à chaque point d’échantillonnage la distance jusqu’à la forme voulue.
  • Les fonctions dFdx, dFdy et fwidth sont utilisées pour calculer la taille des pixels.
  • Le blending est effectué via l’alpha blending ou MSAA + Alpha to Coverage.
  • Il est possible d’utiliser linearstep à la place de smoothstep pour optimiser les performances.

Conclusion

  • L’anti-aliasing analytique offre des bords lisses en atténuant avec précision les contours des formes.
  • Il existe plusieurs méthodes d’implémentation, permettant de choisir entre performances et précision.

1 commentaires

 
GN⁺ 2024-11-21
Avis Hacker News
  • L’analyse de la programmation graphique a été menée à travers des exemples WebGL, et l’article est très approfondi
    • J’utilisais MSAAx4, mais j’envisage de passer à FXAA/TAA, et cela m’a permis d’apprendre une approche analytique pour les éléments d’interface
    • Les ressources sur la programmation graphique sont rares, mais la liste d’analyse d’images est une ressource utile
    • Beaucoup de jeux n’expliquent pas les différences entre les abréviations des réglages d’AA, ce qui les rend peu conviviaux
    • Le SDF (mSDF) est déjà une technique classique suffisamment performante
    • Dans Slug et DirectWrite, résoudre les segments de courbes de Bézier au niveau du pixel est une technique actuelle ou d’avenir
    • J’ai découvert pour la première fois le travail de Captain Disillusion, et je le recommande à ceux qui s’intéressent aux effets vidéo
    • Une image contenant des cercles et des zones agrandies est un excellent moyen de faire passer le message
    • Les dégradés doux sont très satisfaisants
    • Les moteurs de rendu 2D et 3D ont des objectifs et des cas d’usage complètement différents
    • En 3D ce n’est pas important, mais en 2D il existe des critères pour les techniques d’AA où la précision et le biais comptent
    • La capture d’écran de NeoTokyo était impressionnante, et j’ai passé de bons moments à faire tourner le serveur de ce mod
    • J’ai mal lu SSAA comme « anti-aliasing en espace écran »