SMAA: Verbesserte morphologische GlÀttung von Subpixeln


Dieser Artikel basiert auf den Magazinen von Jorge Jimenez, Jose Echevarria, Thiago Sauce und Diego Gutierrez.

Die Demo-Implementierung von SMAA finden Sie hier (EXE-Datei). Auf meiner GTX 960 2GB funktioniert es ganz gut.

Alte Anti-Aliasing-Methoden


FĂŒr viele Jahre waren die Standards fĂŒr die GlĂ€ttung MSAA (Multisampling Antialiasing) und SSAA (Supersampling Antialiasing). TatsĂ€chlich bieten sie immer noch die höchste QualitĂ€t unter allen modernen Anti-Aliasing-Techniken. Wie wir wissen, tritt Aliasing aufgrund des Fehlens von Abtastwerten sowohl auf rĂ€umlicher (gestrichelte Linien) als auch auf zeitlicher Ebene (Flackern) auf, normalerweise in der NĂ€he der RĂ€nder und Bereiche des Bildes mit hohem / niedrigem Kontrast. Um damit umzugehen, haben wir zwei Methoden, die einst die einzigen Lösungen waren: Supersampling und Multisampling. Mit Supersampling vergrĂ¶ĂŸern wir das Bild und reduzieren es dann auf die gewĂŒnschte Auflösung. Dieses Prinzip funktioniert hervorragend, da es fĂŒr alle Aspekte des Problems gilt. Multisampling verwendet eine Ă€hnliche Lösung. Bei dieser Methode wird jede Probe basierend auf einem bestimmten Koeffizienten dupliziert. Bei modernen hohen Auflösungen sind dafĂŒr recht leistungsstarke Grafikkarten erforderlich. Daher brauchen wir neue GlĂ€ttungsmethoden, sowohl auf rĂ€umlicher als auch auf zeitlicher Ebene. Alle diese Methoden verwenden einen Algorithmus fĂŒr ihre Arbeitskantenerkennung. Aber sie fĂŒhren andere Operationen durch.

Moderne GlÀttungsmethoden


Es gibt viele moderne filterbasierte Methoden, die gute Arbeit leisten, obwohl sie den beiden oben aufgefĂŒhrten unterlegen sind. FXAA, DEAA, GPAA, GBAA, CSAA, EQAA, DLAA ... In diesem Artikel werden wir ĂŒber SMAA und seinen VorgĂ€nger - MLAA - sprechen. Diese modernen filterbasierten Methoden haben ihre eigenen Probleme:

  • Die meisten Kantenerkennungsalgorithmen, die diesen Methoden zugrunde liegen, berĂŒcksichtigen nur numerische Unterschiede zwischen Pixeln und ignorieren die Art und Weise, wie sie dem Betrachter angezeigt werden.
  • Die ursprĂŒngliche Form des Objekts bleibt nicht immer erhalten, die allgemeine Rundung der Ecken ist auf Texten, scharfen Ecken und Subpixelelementen fast immer deutlich sichtbar.
  • Die meisten Lösungen sind so konzipiert, dass sie nur horizontale oder vertikale Muster verarbeiten und Diagonalen ignorieren.
  • Reale Subpixelelemente und Subpixelbewegungen werden nicht korrekt verarbeitet. Aliasing-Reflexionen (Spiegel) und Schattierungen (Schattierungen) werden nicht vollstĂ€ndig eliminiert.

Wie Sie vielleicht erraten haben, haben wir diese Probleme angesprochen, weil wir sie beseitigen wollen.

Morphologisches Antialiasing (MLAA)


MLAA versucht, die Abdeckung der Quellgeometrie zu bewerten. FĂŒr eine genaue Rasterung des geglĂ€tteten Dreiecks ist es erforderlich, den Abdeckungsbereich jedes Pixels innerhalb des Dreiecks zu berechnen, um es richtig mit dem Hintergrund zu mischen. MLAA beginnt mit einem Anti-Aliasing-Bild und kehrt dann den Prozess um, indem die Silhouetten vektorisiert werden, um die Bereiche zu berechnen, die sie abdecken. Da der Hintergrund nach der Rasterung nicht erkannt werden kann, mischt der MLAA ihn mit dem Nachbarn, vorausgesetzt, sein Wert liegt nahe am Wert des ursprĂŒnglichen Hintergrunds. Mit anderen Worten , der Algorithmus erkennt Grenzen (unter Verwendung von Informationen ĂŒber Farbe oder Tiefe) und findet dann bestimmte Muster in ihnen. Die GlĂ€ttung erfolgt durch intelligentes Mischen von Pixeln in den RĂ€ndern. MLAA hat Implementierungen auf DirectX 10 und Mono Game (XNA). Es ist ehrlich gesagt in Spielen wie Fable II implementiert. Die Ersteller des MLAA haben spĂ€ter das SMAA ( Enhanced Subpixel Morphological Antialiasing) (erweitertes subpixelmorphologisches Anti-Aliasing) erstellt, das das Hauptthema dieses Artikels ist.


MLAA in Aktion

Verbessertes morphologisches Subpixel-Antialiasing (SMAA)



Vergleich von SMAA und anderen Methoden in Crysis 2

SMAA bietet eine zuverlĂ€ssige Kantenerkennung sowie eine einfache und effiziente Möglichkeit, scharfe geometrische Elemente und diagonale Linien zu verarbeiten. DarĂŒber hinaus Ă€ndert SMAA die Form der Geometrie nicht wie viele andere Methoden.


Oben - AA nein; in der Mitte - MLAA; unten - SMAA

SMAA basiert auf der MLAA-Pipeline und verbessert oder ĂŒberdenkt jeden Schritt. Insbesondere wird die Kantenerkennung verbessert, indem Farbinformationen zusammen mit der Anpassung des lokalen Kontrasts verwendet werden, um schĂ€rfere Kanten zu erzeugen. Die Methode erweitert die Anzahl der Muster, die zum Speichern scharfer geometrischer Elemente und Diagonalen verwendet werden. Schließlich zeigt er, wie morphologische GlĂ€ttung mit Multisampling oder Supersampling und zeitlicher Reprojektion genau kombiniert werden kann.

Kantenerkennung


Die Kantenerkennung ist ein kritischer Schritt, da nicht erkannte Kanten verzerrt bleiben. Andererseits verringern zu viele Kanten mit Filterung die QualitĂ€t des geglĂ€tteten Bildes. FĂŒr die Kantenerkennung können verschiedene Informationen verwendet werden: Farbe, Helligkeit, Tiefe, OberflĂ€chennormale und deren Kombination. SMAA verwendet Luma aus vier GrĂŒnden:

  1. Weniger Artefakte.
  2. Die Helligkeit ist immer sichtbar.
  3. Es kann mit Schattierungsverzerrungen umgehen.
  4. Und schließlich ist es schneller als Chroma.


Links und Mitte: andere Methoden der Kantenerkennung, die zum Auftreten roter Schnittpunkte und Artefakte fĂŒhren; rechts: perfekt scharfe Kanten SMAA

Erinnere dich an dieses Bild. So funktioniert die Kantenerkennung: Der endgĂŒltige berechnete Wert ist ein Boolescher Wert, der als Rand der linken Kante bezeichnet wird . In Ă€hnlicher Weise werden Boolesche Werte fĂŒr die Oberkante berechnet. Formel

cmax=max left(cl,cr,cb,ci,c2l right)


el prime=el wedgecl>0.5.cmax


Alle Werte von c werden Kontrastdeltas genannt .

Musterverarbeitung


Mustererkennung Mit SMAA können Sie scharfe geometrische Elemente wie Winkel speichern, Diagonalen verarbeiten und eine genaue Suche nach Entfernungen durchfĂŒhren.

Scharfe geometrische Elemente: Die Vektorisierung von Silhouetten in der MLAA neigt zu abgerundeten Ecken. Um dies zu vermeiden, verwendet die SMAA die Beobachtung, dass der Schnittpunkt der Kanten in den Konturlinien eine maximale GrĂ¶ĂŸe von einem Pixel hat und bei scharfen Ecken diese LĂ€nge wahrscheinlich lĂ€nger ist. Daher nimmt der SMAA Schnittkanten mit einer LĂ€nge von zwei Pixeln an, was eine weniger aggressive Eckenverarbeitung ermöglicht.

Diagonale Muster: Wir haben eine völlig neue Methode zum Erkennen von diagonalen Mustern hinzugefĂŒgt. Es besteht aus den folgenden zwei Stufen:

  1. Diagonale Entfernungssuche dlund drlinks und rechts von diagonalen Linien.
  2. Sich ĂŒberschneidende Kanten bekommen e1und e2.
  3. Mit dieser Eingabe definieren wir ein bestimmtes Diagonalmuster fĂŒr den Zugriff auf die vorberechnete Textur der Region, um die Region zu erhalten atund ab.

Wenn die Erkennung von diagonalen Mustern fehlgeschlagen ist, beginnt die Erkennung von orthogonalen Mustern.

Genaue Suche nach Entfernungen: Der SchlĂŒssel zum Erkennen und Klassifizieren von Mustern besteht darin, die genaue Entfernung der Kante (die LĂ€nge zu beiden Enden der Linie) zu ermitteln. Um diesen Prozess zu beschleunigen, verwendet MLAA aktiv die Hardware-Interpolation. Die bilineare Hardwarefilterung kann verwendet werden, um bis zu vier verschiedene Werte in einer einzigen Speicherzugriffsoperation zu erhalten und zu codieren. Diese lineare Interpolation von zwei BinĂ€rwerten (d. H. Bilinear ) erzeugt einen einzelnen Gleitkommawert, der durch die folgende Formel beschrieben wird:

fx(b1,b2,x)=x.b1(1−x).b


Wo b1und b2Sind zwei BinÀrwerte (0 oder 1) und xIst der Interpolationswert.

Ergebnisse


MLAA arbeitet mit einem Sample pro Pixel. Dies fĂŒhrt zu einer Unterabtastung, aufgrund derer es unmöglich ist, echte Unterpixelelemente wiederherzustellen.


Vergleichen Sie MLAA mit SMAA und ohne AA

SMAA arbeitet jedoch auf einer Subpixel-Ebene. Dies fĂŒhrt zu Folgendem:

  • Lokaler Kontrast
  • Diagonale Muster erkennen
  • Scharfe geometrische Elemente
  • Genaue Suche

All dies ist in der Abbildung unten zu sehen, in der diese Aspekte mit den Ergebnissen anderer Methoden verglichen werden. TatsÀchlich kann SMAA Ergebnisse nahe SSAA 16x liefern.


Der durch jede dieser Lösungen verursachte Overhead ist vernachlĂ€ssigbar. Insbesondere dauert die Anpassung des lokalen Kontrasts nur 0,08 ms, die Erkennung scharfer geometrischer Elemente und exakter AbstĂ€nde 0,01 ms und die Verarbeitung von Diagonalen zusĂ€tzliche 0,12 ms. Einfach ausgedrĂŒckt ist SMAA ziemlich schnell, langsamer als SSAA und MSAA, aber fruchtbarer und weniger ressourcenintensiv.

Source: https://habr.com/ru/post/de440428/


All Articles