Anti-Aliasing, Supersampling und Multisampling

Dishonored 2014-03-02 13-59-56-10

In diesem Artikel möchte ich mich mit dem Anti-Aliasing befassen und vor allem Neulinge in diesem Thema ansprechen. Das können neue PC-Spieler sein, die zuvor hauptsächlich an der Konsole gespielt haben oder langjährige PC-Spieler, die sich zuvor noch nie mit dem Thema auseinander gesetzt haben.

Was ist und macht Anti-Aliasing?

Aliasing nennt man Bildartefakte, die einem mal dezent und unauffällig oder mal “mitten in die Fresse” das Bild versauen wollen, sprich: die durch Flimmern oder Treppeneffekte die Bildqualität mindern. Anti-Aliasing soll diesen Effekt verringern. Um es euch anhand eines anderen, alltäglichen Beispiels zu erklären: Artefakte in Bild- und Videobereich stehen immer für eine bestimmte Art von Störung im Bild. Größte Bekanntheit dürften die Kompressionsartefakte haben, die euch durch blockartige Unregelmäßigkeiten z.B. in YouTube-Videos (trotz 1080p-Auflösung) oder bei stark komprimierten Einzelbildern auffallen

Starke Komprimierung, starke Artefakt-Bildung.
Starke Komprimierung, starke Artefakt-Bildung.
Ohne Komprimierungs-Artefakte ist das Bild störungsfrei und angenehmer zu betrachten.
Ohne Komprimierungs-Artefakte ist das Bild störungsfrei und angenehmer zu betrachten.

Man wird ja recht schnell vom gemeinen Pöbel als Grafik-Hure beschimpft sowie man in den Augen anderer übermäßigen (damn you, society!) Wert auf Bildqualität legt. Das ist aber okay, bezeichne ich mich ja hin und wieder auch als eben solche. Allerdings bin ich dann eher die Edel-Hure, die sich nicht mit schnöden Effekt-Hascherein und Grafik-Tricks zufrieden gibt. Denn mir geht es in einem Spiel weniger um State-of-the-Art-Grafik mit Tessellation, Ambient Occlusion usw. Solange das Art-Desgin überzeugt, gebe ich mich auch mit weniger aufwändigen Grafik-Features zufrieden. Auf eine ordentliche Bildqualität lege ich dennoch wert. Vielleicht wird es durch oben gezeigte Screenshots verständlich. Kaum jemand möchte so ein Bild wie das erste veröffentlichen oder sich Galerien mit Bildern dieser Qualität ansehen. Egal ob das Spiel von 1995 oder 2014 ist (bei Pong oder Tetris mag es vielleicht keinen Unterschied machen). Und genau darum geht es den Jüngern und Ketzern des Anti-Aliasing e.V., denen es unverfroren nach Qualität dürstet!

Unterschiedliche Methoden des Anti-Aliasing

Die ursprüngliche und “reinste” Form des Anti-Aliasing ist das Supersampling (kurz: SSAA). Der Supersampling macht das, was heute auch als Downsampling bekannt ist und bei den Spielen angewendet wird, die kein Supersampling unterstützen. Dabei werden mehr Pixel gerendert, als tatsächlich ausgegeben. Anschließend wird das Bild auf die Pixel der gewählten Auflösung herunterskaliert. Durch die ursprünglich höhere Anzahl von Pixeln liegen mehr Informationen vor um somit ein genaueres Bild zu liefern. Diese Methode ist damit auch die rechenintensivste.

Das Multisampling (kurz: MSAA) ist eine effektive und leistungssparende Methode, die aber trotzdem noch eine moderate Anforderung an die Hardware stellt. Die Anzahl der Pixel wird hier nicht zwar nicht erhöht. Jedoch werden sie in einer n-Anzahl von Teilen zerlegt. n steht dabei für “Sample”, d.h. 4x MSAA  entspricht vier Samples, die die Pixel in vier “Teile” zerlegen bzw. vier Abtastpunkte setzen um ihn anschließend einen Farbwert, und damit Informationen, zu zuweisen.

Hier habe ich versucht die Problematik und den Vorgang bildlich darzustellen:

Kein Anti-Aliasing.
Kein Anti-Aliasing.

Im Bild oben muss der Renderer entscheiden (anhand der Pixelmitte, hier als roter Punkt dargestellt), welches Pixel er welchen Farbwert zuweist um die gewünschte Linie (hier schwarz) darzustellen. Die grünen Kästchen sind letztendlich das, was wir auf dem Bildschirm sehen und für den Treppeneffekt sorgt. Die schwarze Linie das, was wir sehen wollen, quasi die perfekte Linie.

Anti-Aliasied.
Anti-Aliasied.

In diesem Bild wird jedes Pixel zusätzlich zum normalen rendern vier mal abgetastet (=sampling), hier nur an den äußeren Pixeln veranschaulicht. Wenn ihr vom Weiten auf das Bild schaut, kommt es dem schon etwas näher, was wir eigentlich erreichen wollen. In diesem Beispiel die Darstellung eines Dreiecks. Der Renderer weißt jedes Pixel, dass mit der “äußeren” Abtastung (hier als gelb und blau dargestellt) auf der Linie liegt bzw. umschlossen wird, einen anderen Farbwert zu um so den Treppeneffekt zu reduzieren.

Nun will ich euch die Methoden mal in Aktion zeigen (öffnet die Bilder für die volle Größe in einen neuen Tab):

0x Anti-Aliasing
0x Anti-Aliasing
4x Anti-Aliasing.
4x Anti-Aliasing.

Hier wird durch die Anwendung von vier-fachem Anti-Aliasing der Treppeneffekt deutlich reduziert. Wer Schwierigkeiten hat, den Unterschied zu sehen, zoomt an die rot markieren Bereiche. (ihr habt die Bilder doch hoffentlich in voller Größe geöffnet :P )

Warum noch Supersampling, wenn Multisampling schneller ist?

Es gibt bestimmte Pixel, die vom Multisampling nicht erfasst werden. Denn die gerenderten Pixel differenzieren zwischen Texturen (Flächen), Geometrie (Kanten) in 2D und 3D, Sub-Pixel und Shader und transparenten Texturen (dazu mehr am Ende des Artikels). Multisampling greift nur bei Geometrie und Sub-Pixel. Dadurch kriegen wir zwar größtenteils und verhältnismäßig schnell die Treppeneffekte reduziert, gegen Texturenflimmern ist Multisampling jedoch machtlos. Wie stark das Texturflimmern ausfällt ist abhängig von der Textur, d.h. deren Farben, Komplexität und Auflösung. Daher ist Supersampling bzw. die Erhöhung der Auflösung die einzige Methode das zu reduzieren. Dazu ein weiterer Vergleich (zur vollen Größe in neuen Tab öffnen):

8x Anti-Aliasing.
8x Anti-Aliasing.
2xSSAA + 4xMSAA.
2xSSAA + 4xMSAA.

Wie ihr seht, fällt der Unterschied deutlich geringer aus als beim ersten Vergleich. Für den besten Vergleich öffnet ihr hier beide Bilder separat und zoomt an die markierten Stellen. Beide Bilder sind außerdem bereits zu 200% vergrößert. Das untere Bild wirkt an den markierten Stellen weicher oder etwas verwaschener. Auf diesem Standbild macht es also so gut wie keinen Unterschied. In Bewegung ist der Unterschied jedoch enorm. Während im ersten Fall bei der kleinsten  Bewegung der Figur, die entsprechenden Kanten und Texturen leicht flimmern, bekommen wir mit SSAA ein ruhiges und weiches Bild gezeichnet, unabhängig von der Bewegung.

Hier noch zwei weitere Vergleiche, die ihr je extra öffnen solltet:

Tomb Raider Legend Anti-Aliasing
0x Anti-Aliasing.
Tomb Raider Legend, 2x SSAA, 8x MSAA Anti-Aliasing.
2x SSAA, 8x MSAA. 200% vergrößert.
Tomb Raider Legend, ohne Anti-Aliasing.
Kein Anti-Aliasing
Tomb Raider Legend, 4x SSAA, 8x MSAA Anti-Aliasing.
4x SSAA, 8x MSAA.

Im ersten Tomb Raider-Vergleich wurde das Bild ebenfalls um 200 % vergrößert. Das Bild wirkt bei der Vergrößerung und im Stand unscharf, genau das lässt das Bild jedoch in Bewegung ruhig und weicher wirken. Die Unschärfe fällt bei normaler (100 %) Skalierung auch deutlich geringer aus. Dazu der zweite Vergleich von Tomb Raider genau darunter.

Welche Spiele unterstützen welche Art und woran sehe ich das?

Bei älteren Spielen ab 2000 bis etwa 2008 kann man davon ausgehen, dass die Ingame-Einstellungen dem MSAA, in seltenen Fällen dem SSAA entspricht. Nicht alle Spiele zeigen explizit, welche Art von Anti-Aliasing angewendet wird und verwenden ihre eigenen Methoden. Viele moderne Spiele verstehen unter Anti-Aliasing z.B. Fast Approximate Anti-Aliasing, kurz FXAA. Das, und u.a. MLAA, SMAA sind s.g. Post-Processing Methoden gegen das Aliasing. Das bedeutet, dass das Bild normal gerendert und erst anschließend bearbeitet wird. Diese Methoden zeichnen sich durch eine hohe Leistung und niedriger Genauigkeit aus. Diese Formen errechnen mit bestimmten (und schnellen) Algorithmen, wo sich Kanten befinden und befindet HABEN (denn nach dem Rendern ist unsere schwarze Linie aus dem ersten Vergleich nicht mehr als Information vorhanden) und ersetzt fehlende Lücken bzw. “fehlende” Pixel mit Informationen wie z.B. Farbwerten. Allgemein kommt damit auch ein Schärfeverlust einher. Das Ergebnis kann sich i.d.R. jedoch sehen lassen, gerade unter Betrachtung der geringen, erforderlichen Performance. Aber wie auch MSAA sind bisher jegliche Post-Processing Methoden machtlos gegen Texturen-Flimmern.

Wie benutze ich die verschiedenen Methoden, wenn es das Spiel nicht zulässt?

Für Nvidia-Benutzer empfehle ich hier das Tool Nvidia Inspector. Damit lassen sich diverse AA-Einstellungen erzwingen, die über die normale Nvidia-Systemsteuerung nicht möglich sind. Für detailierte Hinweise bzgl. dem Nvidia Inspector folgt in Zukunft ein gesonderter Artikel. AMD-Nutzer können zur Zeit nur auf RadiT zurückgreifen.

Hinweise zur Performance und Notwendigkeit der verschiedenen Methoden

Generell sollte man unter Beachtung der Performance und seiner Hardware folgendermaßen an die Sache herangehen, da es Spiele gibt, die mit unterschiedlichen Methoden gut oder schlecht zurecht kommen: Reichen FXAA bzw. andere Post-Processing Methoden aus? Wenn das Spiel weder flimmernde Kanten noch Texturen zeigt, sollte FXAA/MLAA genügen. Hat das Spiel jedoch aufwändige Geometrien und es zeigen sich trotz FXAA noch Treppeneffekte, sollte man auf MSAA zurückgreifen. Hier empfehlen sich vier Samples, also 4x MSAA. In den meisten Fällen ist das ausreichend. Der Qualitätsgewinn von 8x MSAA steht oft in einem Missverhältnis zur Performance, sollte das Spiel jedoch alt und/oder die Hardware modern genug sein, kann sich die acht-fache Abtastung durchaus lohnen . Wenn das Spiel jedoch stark flimmernde Kanten zeigt, sollte schrittweise mit geringem SSAA an die Sache herangegangen werden. Der Nvidia Inspector bietet die Möglichkeit SSAA mit MSAA zu kombinieren oder nur eins von beiden anzuwenden. Möglicherweise reicht die Kombination von 2x SSAA mit dem spiel-internem FXAA oder gar ohne weitere Methoden. Vielleicht muss SSAA mit MSAA kombiniert werden um gleichzeitig eine ausreichende Reduzierung der Treppen-Artefakte sowie des Flimmerns zu gewährleisten. Hier hilft nur probieren. Mit dem Inspector sowie der Nvidia Systemsteuerung und dem AMD Fusion Center lässt sich jedoch für jedes Spiel ein Profil anlegen. Einige Spiele reagieren allerdings zickig auf forcierte Treibereinstellungen. Bei Problemen sollte also lieber auf die spiel-eigene Methode zurück gegriffen werden.

Transparentes Anti-Aliasing

Generell gilt für transparentes Anti-Aliasing alles bereits Beschriebene. Nur werden mit dieser Einstellung explizit transparente Texturen angesprochen. Das sind in Spielen vorrangig Zäune, Maschen, Gitter usw. Maschen in einem Zaun z.B. werden aus Performance-Gründen selten einzelt modelliert. Der Zaun wird als Ganzes mit entsprechenden Polygonen ausgestattet und anschließend mit einer Textur versehen, die an bestimmten Stellen durchsichtig ist und das Objekt wie einen Zaun darstellen lässt. Die Kanten zwischen transparent und nicht-transparent werden vom Transparency Multisampling oder Transparency Supersampling erfasst. Die Texturen flimmern aufgrund ihres engem Beisammenseins besonders gerne unter fast allen erdenklichen Blickwinkeln. Deshalb und wegen des vergleichsweise geringerem Texturenaufkommens sollte hier standardmäßig wenigstens Multisampling aktiviert sein. Besser jedoch Supersampling oder Sparse Grid Supersampling (=SGSSAA). Bei Sparse Grid Supersampling sind die im ersten Vergleich angedeuteten Abtastpunkte so angeordnet um besonders vertikal verlaufende Linien besser und horizontal verlaufenden gut darzustellen. Also besonders geeignet für Zäune, Gitter und Ähnliches . Vielleicht seid ihr auch schon über den Begriff OGSSAA (Ordered Grid Supersampling Anti-Aliasing) gestolpert. Das macht im Grunde das gleiche wie (SG)SSAA, nur dass die Abtastpunkte wieder anders angeordnet sind. Diese Methode zeigt durch diese Anordnung jedoch einige Schwächen bei vertikalen Linien.

Wie ihr also seht, geht es immer um Kompromisse. Aufgrund technischer Limitationen und endlicher Leistung kann man bei modernen Spielen kein perfektes Ergebnis erzielen. Oft ist dieses perfekte Ergebnis unserem Auge auch verborgen, so gibt es z.B. viele Spieler denen aufgrund der Gewöhnung der Unterschied zwischen FXAA und MSAA nicht auffällt. Ab einem gewissen Punkt ist der Zuwachs an Bildqualität nicht mehr sichtbar, zumindest nicht wenn man das Spiel in tatsächlicher Bewegung genießt.

Weiterführende Lektüre

Mit diesem kleinen Guide habe ich nur grundlegende Sachen angerissen um den Einstieg in die Thematik zu erleichtern. Wer gute Englisch-Kenntnisse besitzt und sein Wissen zu dem Thema vertiefen will, dem empfehle ich folgenden Artikel von Peter Thoman: http://www.beyond3d.com/content/articles/122/1

Wenn ihr Fragen oder Anmerkungen habt, hinterlasst einfach einen Kommentar oder schreibt mir über das Kontakt-Formular!

Ein Gedanke zu „Anti-Aliasing, Supersampling und Multisampling

Kommentar verfassen