Zum 3DCenter Forum
Inhalt




ATIs Filtertricks

21. November 2003 / von aths / Seite 1 von 3


   Einleitung

Bei der Entwicklung eines Grafikchips muss aus verschiedenen Gründen auf den Transistor-Count geachtet werden. Das heißt, dass Prioritäten gesetzt werden, welche Features besonders wichtig sind und welche weniger. Zu jedem gegebenen Zeitpunkt ist die Komplexität eines Chips begrenzt, so dass die Entwickler immer einen Kompromiss zwischen Leistung und Features (im weiteren Sinne auch Bildqualität) schließen müssen.

Bei ATI hat es nun etwas Tradition, dass die Textur-Filterung zurückstecken muss. Beispiel R200 (Radeon 8500): Dem im zeitlichen Kontext gesehen sehr fortschrittlichem Pixel Shader und Eigenschaften wie Overbright Lighting (und vermutlich auch eine erhöhte interne Farbpräzision) stehen Nachteile bei der Texturfilterung, insbesondere bei anisotroper Filterung ("AF") gegenüber.

Damit meinen wir nicht nur die Limitierung auf bilineares Filtering ("BF") im Zusammenspiel mit AF und die extreme Winkelabhängigkeit beim AF, sondern auch offenbare Schwächen bei der Bestimmung des MIP-Map-LODs: Unseres Wissens nach führen ATIs LOD-Berechnungen bei aktiviertem AF schon mal zu Textur-Aliasing. Allerdings haben wir dies seinerzeit nie tiefgehender untersucht, so dass wir darauf nicht groß herumreiten wollen. Heute aber wollen wir uns die Zeit nehmen, um uns in diesen Filter-Fragen aktueller Hardware zu widmen: Der R3x0-Familie.


16x AF auf den Chips der R3x0-Familie.


ATI sah bei dieser endlich ein, dass trilineares AF sinnvoll ist, und hat außerdem die Winkelabhängigkeit reduziert. Trotzdem: Stellt man 16x AF ein, werden bestimmte Winkel nur mit 2x AF gefiltert. Obwohl es bei ATI nichts neues ist, dass der eingestellte AF-Grad nur partiell zum tragen kommt, möchten wir an dieser Stelle darauf noch einmal ausdrücklich hinweisen: Aktiviertes 16x AF führt bei einigen Winkeln nicht zu 16x, sondern nur zu 2x AF. Kann man angesichts dieser Tatsache das AF vom R300 überhaupt mit Fug und Recht "Anisotropes Filtering" nennen?

Ja, das kann man. An-isotrop heißt zunächst nur, nicht isotrop. ATIs R300-AF filtert in der Tat (jeden Winkel) nicht isotrop. Gibt es eine genauere Definition? Wir konnten keine "gültige", also verbindliche Definition für AF finden, aber: Es ist kein Geheimnis, welche Qualität "Lehrbuch-AF" haben muss. Mit den Interna von anisotroper Filterung beschäftigen wir uns in einem zukünftigen Artikel noch ausführlich, an dieser Stelle wollen wir nur darauf zu sprechen kommen, wie ein "perfektes" AF auszusehen hat. Nämlich genau wie trilineare Filterung (TF), jedoch pro Verdoppelung des AF-Grades müssen die MIP-Level um eine Stufe "nach hinten" geschoben sein. Reden wir nicht lange um den heißen Brei, "perfektes AF" wird praktisch auf keiner derzeitigen Hardware geboten.

Löbliche Ausnahme ist 2x AF auf GeForce-Karten, doch schon 4x AF ist (bei 45°-Winkeln) leicht, 8x AF (ebenfalls bei 45°-Winkeln) deutlich "optimiert". Kyro-Karten können nur 2x AF, beherrschen diesen Modus jedoch in Perfektion. Die Formel für optimales AF ist so komplex, dass dort gerne gespart wird und man Abweichungen von der Perfektion in Kauf nimmt.

Transistoren zu sparen, war wohl auch der Hintergedanke bei ATI. Die exakte Implementierung ist natürlich nicht öffentlich zugänglich, doch ist es wahrscheinlich, dass ATI sich um die (Transistor-intensive) Implementierung der Wurzelfunktion beim AF drückte. Lässt man jene weg, gelangt man zunächst zu einer Lösung, nur volle 90°-Winkel anisotrop filtern zu können (was die Winkelabhängigkeit bei R100 und R200 erklären dürfte). Mit einer Erweiterung, welche vergleichsweise wenig Transistoren beansprucht, kann man weiterhin die Wurzel-Berechnung sparen, gewinnt jedoch zusätzlich volle 45°-Winkel hinzu.

Dass dies der Fall sein könnte, wird von uns auf Basis einer Überlegung seitens Demirug derzeit vermutet. Unabhängig von diesen Theorien lassen sich jedoch zwei Dinge sicher sagen:

  • ATI spart Transistoren bei der Berechnung der AF-Sample-Koordinaten.
  • Da der eingestellte AF-Grad über den Vollkreis verteilt nur partiell appliziert wird, spart man auch noch Füllrate.

Kurzum, aufgrund dieser Basis ist es natürlich ein leichtes zu behaupten, ATI hätte das schnellere AF. Lange Zeit war "anisotropic Filtering" mehr oder weniger ein Checklist-Feature mit fragwürdiger Implementierung. GeForce-Karten gehörten zu den ersten Produkten, die "vernünftiges" AF boten, aber eben auf 2x begrenzt. Die GeForce3 (NV20) bot bis zu 8x AF, was jedoch im Marketing kaum eine Rolle spielte. Vermutlich fürchtete man sich davor, diesen "Langsam-Macher" zu empfehlen. Es ist ein Verdienst des 3D Concept Machers Raphael auf der Maur, schon frühzeitig auf dieses Feature hingewiesen und dessen Bildqualität praxisgerecht beurteilt zu haben, anstatt wie die Mehrheit nur auf die Framerate zu achten.

ATIs originale Radeon (R100) erschien ja vor der GeForce3 und konnte bereits 16x AF; jedoch nur unter Nebenbedingungen und Einschränkungen, so dass diese Karte von uns nicht für eine gute "AF-Karte" gehalten wird. Die GeForce4 Ti (NV25/NV28) hat eine Limitierung bezüglich der bilinearen AF-Leistung, offenbar auch wegen des Transistor-Counts. Die GeForceFX (NV3x) hingegen enthält die Möglichkeit, die AF-Qualität zugunsten der Leistung zu senken.

Für uns ist das eine wenig sinnvolle Entwicklung. Denn unter dem Gesichtspunkt "Füllrate pro Qualität" wäre "Lehrbuch-AF" optimal. Eine schon recht gute AF-Samplepositions-Berechnung bietet Nvidia seit der NV20 ohnehin, so dass es doch schade ist, wenn beispielsweise "8x" AF für die Leistung von herkömmlichem 4x AF geboten wird, die "Gesamt-Anisotropie" aber dabei schlechter ist. Nur weil irgendwo in einigen wenigen Pixeln noch 8x AF zum Tragen kommt, kann dieser Modus wohl auch so genannt werden, doch unsere Forderung ist natürlich, zunächst erst einmal einen gegebenen AF-Modus so weit es geht auszureizen, ehe man auf einen höheren Grad setzt. Vielleicht wurde Nvidia von ATI getrieben, bei hochstufigem AF lieber mit toller Leistung zu protzen, anstatt sicherzustellen, dass ein AF-Level erst mal die bestmögliche Qualität erzeugt (was man von einem Qualitäts-Feature eigentlich erwarten sollte).

Wir möchten an dieser Stelle noch auf eine möglicherweise missverständliche Formulierung unsererseits hinweisen: Dass ATI bei 16x AF nicht alles 16x filtert, ist zunächst kein Problem: Je nachdem, wieviel benötigt wird, wird dynamisch ausgewählt, und 1x, 2x, 4x, 8x oder eben 16x genommen (Nvidias Hardware wählt bei 8x AF ebenfalls dynamisch, ob 1x, 2x, 4x oder 8x im Pixel appliziert werden). Das hängt davon ab, wie stark verzerrt die Textur dargestellt ist: Bei einer Verzerrung im Verhältnis 1:2 bringen mehr als 2 AF-Samples praktisch keine zusätzliche Qualität mehr. Was ATI zusätzlich einführte, ist eine extreme Winkel-Abhängigkeit bei der Berechnung der tatsächlich gewählten AF-Stufe des Pixels. Eine (schwächere) Winkelabhängigkeit ist auch bei Nvidias AF ab 4x zu finden.

Leider ist dies nicht die einzige Stelle, wo ATI zugunsten des Transistor-Counts die Filter-Berechnungen vereinfachte und sich damit von der Lehrbuch-Qualität weiter entfernte als die Konkurrenz.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Weiter / Next

Shortcuts
nach oben