Grafik-Filter: Bilinear bis Anisotrop im Detail
10. Dezember 2001 / von aths / Seite 8 von 9
Pixel-Details | |
(Anti-Aliasing) |
Ein auf das gesamte Bild angewendetes Anti-Aliasing-Verfahren nach der Supersampling-Methode mindert nicht nur die Treppen-Effekte, sondern verbessert auch die Texturen. Auf zweierlei Art:
|
|
Es ist gut zu erkennen, dass die Textur nicht einfach unschärfer gemacht wurde. Man sehe beim Ziffernblatt auf die Zahl "1". Ein Unschärfe-Filter würde um diesen Strich die Pixel noch etwas abdunkeln.
Es gibt Argumente für und wider FSAA, wenn man die Texturen verbessern will. Dafür spricht, dass pro Pixel zusätzliche Texel mit einfließen, was im Prinzip auf angenäherte anisotrope Filterung hinaus läuft - und "nebenbei" die Treppen-Effekt reduziert werden. Dagegen spricht, dass der gleiche Aufwand in einen anisotropen Filter gesteckt noch bessere Texturen ergibt. Trilineare Filterung + 4x FSAA bedeutet letztlich, 32 Texel pro Pixel zu lesen. Das Muster der 8 bilinear gefilterten Texel (8 x 4 = 32) kann durch den anisotropen Filter direkt an den Sichtwinkel angepasst werden. Allerdings ist dann natürlich noch ein zusätzliches Anti-Aliasing notwendig, welches eben "nur" die Kanten berücksichtigt.
Übliches Anti-Aliasing funktioniert grundsätzlich so, dass pro Pixel nicht nur ein, sondern mehrere Subpixel einfließen. Bislang wurde davon ausgegangen, dass Anti-Aliasing auf das gesamte Bild angewendet wird. Um Bandbreite zu sparen gibt es spezielle Verfahren, die lediglich die Polygon-Kanten glätten. Texturen werden so nicht verbessert. Dafür ist dann der anisotrope Filter zuständig. nVidia entwickelte nun einen Bild-Filter namens Quincunx. Der funktioniert so:
|
Mit einem Zwei-Zeilen-Cache lässt sich das effektiv umsetzen. Und es fließen dank Quincunx mehr als 2 bzw. 4 Subpixel in das entgültige Pixel mit ein. Aber die zusätzlichen Werte wurden ja nicht extra berechnet, sondern werden lediglich wiederverwendet. Das ist also letztlich ein Unschärfe-Filter. Vorteilhaft ist, dass die Kantenglättung subjektiv verbessert wird.
Nachteilig ist, dass man mit Quincunx die Qualität aufwändig anisotrop gefilterter Texturen wieder senkt. Der anisotrope Filter bietet in hohen Einstellungen Texturen, die gleichzeitig ein scharfes Bild zeigen und trotzdem nicht "schimmern". Denn dieser Filter, sowie die Methode mit Supersampling eine Überabtastung vorzunehmen, tun das auf Subpixel-Ebene. Der Quincunx-Filter dehnt die Unschärfe auf volle Pixelbreite aus und bietet wegen dem Subpixel-Recycling keine zusätzliche Überabtastung.
|
Würde das Supersampling-Verfahren angewendet, könnte Quincunx ein vernünftigeres Ergebniss liefern. Das Subpixel links oben repräsentiert ja seine Umgebung. Ihn in den anderen Pixeln an passender Stelle wieder zu verwenden erscheint nicht falsch. Weil man die zweifache Subpixel-Menge nicht mit ganzzahligen Verhältnissen in der gleichen Fläche unterbekommt, wäre das Endergebnis dann eine gefilterte Verkleinerung, die etwas Unschärfe erzeugt. Das Problem bei Quincunx liegt beim Multisampling.
Von Polygonkanten abgesehen erhält das Subpixel links oben immer den gleichen Farbwert wie der Mittelpunkt, da beim Multisampling nicht pro Subpixel, sondern nur pro Pixel ein gefilteter Texel erzeugt wird. Also fließt dann nur ein "echter" Subpixel ein, der aber für vier Pixel verwendet wird. Auf Textur-Ebene gesehen wird so aus der 2:5-Abtastung (die für Polygonkanten gilt) eine 1:4-Abtastung. Ein Quincunx mit 2x Supersampling-Antialiasing würde zusätzlich erlauben, das LOD um 0.5 zu senken. So dass zunächst eine zusätzliche Schärfe herein gebracht würde, ehe sie mit Quincunx wieder weggefiltert wäre. Senkt man das LOD jedoch mit dem verwendeten Multisampling-Verfahren, ist mit (leichtem) Texturflimmern zu rechnen. Wird nur bi- oder trilinear gefiltert, sind die meisten Texturen sowieso unscharf. Das würde Quincunx kaum verschlimmern.
Es gibt Situationen, da liefert der Quincunx-Filter auf den ersten Blick ein besseres Bild. Stellt man die Anti-Aliasing-Methode und das Level der anisotropen Filterung optimal ein, wird bei gleicher Performance ein noch besseres Bild erzeugt. Das Quincunx-Verfahren senkt den optischen Vorteil, den man mit anisotroper Filterung erhält und ist damit ein Filter, der die Qualität insgesamt verschlechtert - ein Novum. Leider zog ATI mit der Performance-Einstellung ihrer Smoothvision-Technik nach und recycelt ebenfalls Subpixel.
Jetzt wäre nur noch der Unterschied zwischen Überabtastung und uneinheitlicher Filterung (sprich Supersampling vs. Anisotropic Filtering) zu klären. Der anisotrope Filter nimmt eine an den Blickwinkel angepasste Überabtastung vor und erreicht deshalb mit weniger Aufwand bessere Texturqualität.