ATi Radeon 9000 & 9700 Preview
1. August 2002 / von aths / Seite 2 von 5
HyperZ III: Schonung der Bandbreite
3D-Grafikkarten zeigen auf dem Monitor letztlich nur ein 2D-Bild, doch zur Berechnung der Grafik sind natürlich auch Tiefeninformationen, sogenannte Z-Werte notwendig. Die Übertragung von Z-Werten fällt bei jedem zu rendernden Pixel an und die erforderliche Kapazität summiert sich so auf eine betrachtliche Summe. Um hier Bandbreite zu sparen, führte ATi schon beim R100, also dem originalen Radeon-Chip, ein Technik-Bündel namens "HyperZ" ein.
nVidia verfolgte seinerseits mit der GeForce3 eine andere Philosophie, um den Rendervorgang effizienter zu gestalten. ATi übernahm für den R200 (also Radeon 8500) einige dieser Ideen und nVidia übernahm wiederum für den GeForce4 dann einige der ATi-Ideen. Die Kanadier ließen sich nun neues einfallen, um noch effizienter als der GeForce4 zu sein. Dazu hat ATi nun HyperZ weiter verfeinert.
Wie im Original wird das Bild in Kacheln aufgeteilt. Für jede Kachel (die nur wenige Pixel groß ist) wird der größte und kleinste Z-Wert in einem Cache direkt in der GPU gespeichert. Wenn in dieser Kachel gerendert wird und der Z-Wert berechnet wurde, kann anhand der Informationen im Cache entschieden werden, ob überhaupt ein Z-Test stattfinden muss oder ob man sich diese (zeitaufwändige) Datenübertragung sparen kann.
Problematisch hierbei ist lediglich die Frage nach der optimalen Kachelgröße. Im R300 gibt es deshalb nun eine Art rekursives HyperZ: Die Kachel wird nach Bedarf erneut in Unter-Kacheln aufgeteilt. Wenn das nicht notwendig ist, wird so eine Menge Overhead eingespart. Der R300 bleibt trotz Kachelung ein Immediate Renderer und erreicht damit natürlich nicht die Effizienz eines deferred Tile Based Renderers, wie beispielsweise die KYRO-Chips.
SmoothVision 2.0: Anti-Aliasing & anisotroper Filter
Warum ATi so viel Wert darauf legt, möglichst effizent an Z-Bandbreite zu sparen, wird klar, wenn man sich das Anti-Aliasing ansieht. Mit SmoothVision 2.0 erfüllt ATi zunächst eine Reihe von Dingen, die eigentlich schon das originale SmoothVision hätte bieten sollen. Dazu gehört als erstes ein programmierbares Subpixel-Raster, welches eigentlich schon die Radeon 8500 bieten sollte.
Ebenso fragte man sich beim Radeon 8500, wieso der Chip trotz DirectX8-Fähigkeit namens Multisampling kein Multisampling Anti-Aliasing beherrscht. Nun, SmoothVision 2.0 bietet sowohl Supersampling als auch Multisampling Anti-Aliasing. Das letztere Verfahren ist dabei - auf Kosten der Qualität von Alpha-Texturen - bekanntermaßen erheblich schneller. ATi behauptet hier zudem einen Weg gefunden zu haben, auch AlphaBit-Texturen zu glätten. Und sofern sie damit nicht meinen, einfach komplett Supersampling zu machen, wäre eine solche Technik sehr vielversprechend.
Multisampling lässt sich besonders einfach mit einem "ausgerichtetem Subpixelraster" realisieren. Um hiermit eine gute Kantenglättung zu erreichen, bedarf es allerdings der Berechnung von sehr vielen Subpixeln. Matrox´ FAA löst Kanten intern pro Achse vier mal so fein auf und benötigt dazu 16 Subpixel. ATi beansprucht, jede Kante intern sechs mal so fein aufzulösen und dazu nur 6 Subpixel zu brauchen. Wir formulieren dies deshalb etwas vorsichtig, weil wir nach der Schlappe mit dem originalen SmoothVision sicherheitshalber noch auf Bestätigung per Screenshot warten. Möglich ist ATis Behauptung jedoch allemal: Dazu kommt es nur auf eine geschickte Anordnung der Subpixel an.
Nun zur Frage, was Anti-Aliasing mit HyperZ III zu tun hat: Multisampling spart gegenüber Supersampling zwar eine Menge Textur-, aber keine Z-Bandbreite. Da durch HyperZ III die benötigten Z-Daten drastisch reduziert werden, schlägt das direkt auf die Anti-Aliasing Leistung um. Durch bis zu 6 Subpixel ist dank der von ATi versprochenen speziellen Subpixel-Maske auch eine extrem gute Kantenglättungsqualität zu erwarten. In den White Papers spielt ATi, allerdings ohne Namen zu nennen, direkt auf die Voodoo5-Qualität an, die nun mit der Radeon 9700 überboten würde - was mittels (unabhängiger) Screenshots natürlich noch zu beweisen wäre.
Was vielleicht noch wichtiger ist als die Effizienz der Z-Komprimierung, wäre, dass ATi im Radeon 9700 eine Art Differenzbuffer-Technik für die Farbwerte verwendet. Das ist im Groben mit Matrox´ FAA zu vergleichen: Nur für Bereiche, die Kanten enthalten, werden auch verschiedene Farben gespeichert. Matrox schafft mit dieser Methode immerhin 16x Anti-Aliasing bei recht geringem Performance-Verlust. Dass ATi nur maximal 6x anbietet, wird durch zwei Sachen wieder ausgeglichen: Einerseits sind keine Artefakte zu erwarten, dass etwa Kanten innerhalb von Polygonen nicht geglättet würden, und andererseits bringt die spezielle Abtast-Maske eine Kantenglättungqualität, die in den meisten Fällen jene von FAA übersteigen sollte.
Doch jede noch so gute Subpixelmaske kämpft weiterhin mit einem Problem: Das Ausgabegerät, also der Monitor, hat bezüglich der Helligkeit eine nichtlineare Übertragunskennlinie. Der Endandwender kennt wahrscheinlich das Wort "Gamma-Korrektur", womit sich dieser Effekt wieder berichtigen lässt. Doch weil die Gamma-Korrektur nur auf fertige Pixel angewendet wird, kann es zu folgendem Effekt kommen:
Wir sehen eine geglättete Kante. Die dunklen Abstufungen erscheinen allerdings zu dunkel. Man sieht sie zu wenig, als dass sie noch vernünftig zur Kantenglättung beitragen können. Es wäre erforderlich, vor dem Zusammenfiltern eine Gamma-Gegenkorrektur vorzunehmen, um beispielsweise dieses Bild zu erhalten:
Nun erscheint die Kante glatter. Die Radeon 9700 ist das erste uns bekannte Produkt, welches jenes Gamma-korrektes Anti-Aliasing einsetzt. Da die heutigen Grafikkarten rohpowerseitig längst überdimensional gut bestückt sind, achten wir gerne auf solche Feinheiten, welche die Bildqualität verbessern. Man sollte dieses Feature nicht unterschätzen! Gerade bei den Performance-günstigen Modi wie 2x Anti-Aliasing kommt es darauf an, dass die Zwischenstufen nicht nur berechnet werden, sondern dass man sie auch ausreichend gut sieht. Auf bisherigen Grafikkarten war das nicht immer Fall.
Im SmoothVision 2.0 Paket ist übrigens auch der anisotrope Filter enthalten. Beim diesem anisotropen Filtern der Radeon 9700 scheinen nun alle Mängel der Radeon 8500 beseitigt: Die Radeon 9700 filtern auf Wunsch endlich auch trilinear anisotrop, was die Radeon 8500 entweder hardwareseitig nicht beherrscht oder aus Performance-Gründen im Treiber nie freigeschaltet wurde. MIP-Banding gehört beim neusten Radeon-Sproß damit der Vergangenheit an.
Außerdem verspricht ATi bessere Ergebnisse sprich schärfere Texturen bei bestimmten Winkeln. Insofern dürfte die Radeon 9700 unter dem anisotropen Filter nun endlich volle GeForce3-Qualität erreicht werden. Dafür, dass die GeForce3/4Ti-Qualität noch überboten werden kann, soll der 16°-Modus sorgen (GeForce3/4Ti: maximal 8°).
Wir warten allerdings noch auf Screenshots, da die originale Radeon und die Radeon 8500 bei anisotroper Filterung Probleme mit der Bestimmung des MIP-Levels haben, was sich in gelegentlichem Textur-Schimmern äußern (Moiré-Muster "wabern" bzw. "schwimmen" über die Textur). Erst wenn sichergestellt ist, dass dieses Problem nicht mehr besteht, kann ATi hier wirklich mit der nVidia-Qualität konkurrieren.