Anti-Aliasing Masken: Probleme und Lösungen
3. Januar 2004 / von aths / Seite 2 von 7
Subpixel vs. EER
Um die Sichtbarkeit auch von Objekten zu gewährleisten, die nur ein halbes Pixel breit sind, muss doppelt so fein abgetastet werden. Natürlich gilt das pro Achse, also Breite und Höhe (X und Y). Beide hier dargestellten Masken erfüllen diese Anforderung:
"4x ordered grid" vs. "2x rotated grid".
Es ist leicht zu sehen, dass man auch die Subpixel rechts oben und links unten hätte stehen lassen können, die Ausrichtung dieses 2er Musters ist egal. Aber was verliert man nun, indem man sich dreist die Hälfte der Subpixel spart? Bildvergleiche sind ja zu genüge im Netz zu finden sind.
Betrachten wir das rechte Muster um 45° gedreht: Aus dieser gedrehten Sicht ergibt sich ein geordnetes Raster (da wir die Drehung der Maske vollständig "zurückgedreht" haben). Wie bekannt, glättet ein geordnetes Raster ziemlich ineffektiv. Je nach Richtung des um 45° gedrehten 2x-Rasters wird eine 45°-Kante entweder vollständig außerhalb der beiden Subpixel liegen, also gar nicht geglättet werden, oder um immer genau ein Pixel geglättet werden.
Aber auch das ist ja nicht das, was wir brauchen. Wichtig sind zusätzliche Farb-Zwischenwerte. Eine leichte Drehung der 45°-Polygonkante sorgt dafür, dass nach wie vor fast die gesamte Kante gar nicht oder wie gehabt mit immer der gleichen Zwischenfarbe geglättet wird (statt je nach dem eine Zwischenfarbe oder die "nackte" Kante). Wir opfern durch das Wegnehmen von den beiden Subpixeln Glättungsqualität bei 45°-Stufen.
Aus mehreren Gründe ist das aber weniger schlimm. Zum einen sind horizontale und vertikale Kanten in Computerspielen sehr viel häufiger. Zum anderen bieten 45°-Kanten ohnehin nur eine Treppenstufe-Breite von gerade mal einem einzigen Pixel, weshalb der Nerv-Faktor durch Treppen deutlich geringer ist, als bei an 90° orientierten Kanten. Objekte mit halber Pixelbreite werden aber natürlich mit dieser 2x-Methode nur dann erfasst, wenn sie senkrecht oder waagerecht liegen. Das ist in der Praxis viel häufiger der Fall, als dass der für dieses Muster unglückliche 45°-Winkel getroffen wird.
Beide Achsen, X und Y, werden mit beiden Mustern doppelt so fein abgetastet, wenn man das Ergebnis mit "kein Anti-Aliasing" vergleicht. Übrigens sollte man "Kein Anti-Aliasing" nicht mit "0x AA" abkürzen. Aliasing ensteht ja durch Unterabtastung. Auch ohne dass die Grafikkarte zusätzliches Anti-Aliasing durchführt, wird ja auf jeden Fall abgetastet, und zwar mit einem Sample pro Pixel. Demzufolge lautet die korrekte Abkürzung für "kein Anti-Aliasing" dann "1x AA".
Bekanntlich bringt auch eine Erhöhung der Auflösung mehr Qualität, weil es somit einfach weniger Aliasing-Effekte gibt. Die Auflösung zu steigern, ist auch ein Form von Anti-Aliasing, allerdings nicht immer die effektivste. Dank Multisampling lässt sich, gekoppelt mit einer sinnvollen Abtast-Maske, die effektive Anti-Aliasing-Leistung einer Grafikkarte drastisch steigern, so dass das Bild wirksamer verbessert wird, als durch eine erhöhte Auflösung.
Der Einsatz in realen Spielen zeigt, dass die EER einer Abtast-Maske tatsächlich wichtiger ist, als die Anzahl der Subpixel. Also dass zwei unterschiedliche Kantenglättungs-Methoden, welche aber die gleiche EER aufweisen, in erster Näherung als gleichwertig betrachtet werden können. Eine hohe EER ergibt jedoch nur dann eine brauchbare Glättung, wenn gewisse Zusatz-Bedingungen erfüllt sind. Welche das sind, wollen wir uns im folgenden anschauen.