[Wissen] Wie funktionieren Grafikkarten (Teil 1 & 2)

PCGH_Carsten

Ex-Redakteur
In unserer edit: damals, 2005 neuen VGA-Wissensreihe wollen wir keine detailgenaue Technik wälzen, sondern wichtige Grundlagen vermitteln. Will man sich im zunehmend chaotischen Angebot der verschiedenen Grafikkarten und ihrer Hersteller einigermaßen zurechtfinden und aus dem Gewirr an Angeboten die Karte herausfischen, die den eigenen Ansprüchen am ehesten genügt, braucht man grundlegendes Wissen.

attachment.php

Gleichzeitig sollen die einzelnen Komponenten und Merkmale so prägnant dargestellt werden, dass möglichst viel davon auch hängen bleibt. Nichts ist anstrengender, als bei der Suche nach einer wichtigen Info erst mühsam das halbe Internet durchsuchen und richtige von falschen Aussagen trennen zu müssen.

Inhalt:
>> Die GPU: das Kernstück
>> Shader-Einheiten
>> Fragment versus Pixel Shader
>> Vertex Shader
>> Triangle Setup
>> Rasterizer
>> Fragment Shader
>> Details der Fragment Shader
>> ROPs
>> Speicher-Interface




>> Die GPU: das Kernstück
Kernstück und oft genug wichtigstes Merkmal einer modernen Grafikkarte ist der darauf verbaute Grafikprozessor. Dieser wird kurz auch GPU (Graphics Processing Unit) in Anlehnung an den Zentralprozessor (CPU) genannt. Die GPU bestimmt im wesentlichen Maße das Potenzial, jedoch nicht immer auch die Leistungsfähigkeit einer Grafikkarte. So kann der stärkste DirectX-9-Chip durch seine Hardwareumgebung oder seine Taktrate ausgebremst werden. Im Gegenzug wird eine DirectX-8-GPU auch nicht durch Unmengen an Speicher oder enorme Taktraten jemals in die Lage versetzt, DirectX-9-Shader abzuarbeiten.

Von reinen 2D- und Videobeschleunigern in den Anfangstagen haben sich Grafikchips zu wahren Rechenmonstern entwickelt. Handelte es sich bei den ersten 3D-Chips noch um extrem spezialisierte Hilfsarbeiter, deren Funktionen fest verdrahtet und kaum programmierbar ausgelegt wurden, entwickelte sich neben der Geschwindigkeit vor allem der Grad an Programmierbarkeit immer weiter. Üblicherweise ist dies in entsprechende DirectX-Versionen eingeteilt, denen die einzelnen GPUs dann zugeordnet werden.

attachment.php



>> Shader-Einheiten
Die heute für die Spieleleistung maßgebliche Funktionseinheit innerhalb einer GPU sind die so genannten Shader-Einheiten. Diese werden in zwei Kategorien unterteilt. Je nachdem, an welchen Daten sie arbeiten, spricht man von Vertex oder Fragment Shadern. Vertex Shader bearbeiten die einzelnen Koordinaten oder Beleuchtungsvariablen der Eckpunkte ganzer Drei- oder Mehrecke (Polygone). Angeliefert werden diese Daten von der CPU.

Shader-Einheiten (Vertex Shader wie Fragment Shader) sind in modernen Grafikprozessoren jeweils mehrfach vorhanden. Man kann sie sich gut als Fahrbahnen auf der viel beschworenen Datenautobahn vorstellen: Je mehr Fahrspuren vorhanden sind, desto flüssiger kann der Verkehr rollen. Verengt sich die Fahrbahn an ungünstigen Stellen oder gibt es nicht genügend Ausfahrten, kommt es zum Stau.

attachment.php



>> Fragment versus Pixel Shader
Fragment Shader werden oftmals auch als Pixel Shader bezeichnet, da sie ihre Operationen auf der Ebene der Pixel, der kleinsten sichtbaren Bildelemente (Bildpunkte), durchführen. Verwirrend ist, dass man die Programme, mit denen sie gefüttert werden, ebenfalls so bezeichnet. Die aus dem OpenGL-Bereich stammende Fragment Shader-Bezeichnung beugt vor einem solchen Missverständnis vor. Im DirectX-Umfeld beharrt man jedoch häufig auf der Benennung Pixel Shader. Man sollte sich dieser Doppeldeutigkeit also zumindest bewusst sein. Bevor wir jedoch zu den Fragment Shadern kommen, werfen wir einen kurzen Blick auf die Teile der GPU, die von den künftigen Bildpunkten durchlaufen werden müssen:

Vertex Shader -> Triangle Setup -> Rasterization -> Fragment Shader -> ROPs -> Framebuffer

Der von der CPU kommende Kommandostrom enthält sämtliche Informationen, welche die GPU zum Berechnen (engl.: to render) des Bildes benötigt. Zunächst werden von der Vertex Fetch Unit die Eckpunkte (Vertizes, singular Vertex) eingelesen, die im Kommandostrom bezeichnet werden.



>> Vertex Shader
Als erste Shader-Einheit kommen die Vertex Shader zum Einsatz. Sie wenden so genannte Vertex-Programme auf Eckpunkte an und bewirken dabei zum Beispiel die Veränderung der Form eines Polygons, zu dem das jeweilige Vertex gehört. Anschließend werden die einzelnen Eckpunkte zu so genannten Primitiven (i. d. R.
Dreiecke, aber auch Punkte oder Linien sind möglich) zusammengefasst. Dies sind die geometrischen Grundgerüste, auf deren Basis die GPU ihre Berechnungen durchführt.

attachment.php



>> Triangle Setup
Danach wird über das Triangle Setup und die zugehörigen Clipping-Einheiten bestimmt, ob ein Primitive überhaupt sichtbar ist. Möglicherweise ist es komplett außerhalb des Sichtfeldes der Spielfigur oder von der falschen Seite sichtbar. Es könnte sich zum Beispiel um die Innenseite einer Kiste handeln, die man von außen nicht sehen kann.

attachment.php


>> Rasterizer
Der nun folgende Rasterisierungsprozess ordnet den zuvor beschriebenen Primitiven ihre Pixelinhalte zu. Aus den zuvor stetig verlaufenden Dreiecksseiten wird nun eine dem Pixelraster angepasste Treppe mit Stufen in Pixelgröße (siehe Zeichnung Rasterizer). Durch diesen Prozess, der das glatte Bild auf das Raster der Bildschirmauflösung abbildet, entsteht auch Kanten-Aliasing die berüchtigten wandernden Treppcheneffekte.

attachment.php

ImVerlauf der Rasterisierung wird mittels der HSR-Einheiten [HSR = Hidden Surface Removal, das (vorzeitige) Entfernen verdeckter Flächen] bestimmt, welche Pixel überhaupt noch weiterberechnet werden müssen und welche bereits durch näher zum Betrachter liegende Pixel überdeckt werden. Diese können bereits jetzt von der weiteren Berechnung ausgeschlossen werden. Um dieses Verfahren noch effizienter zu gestalten, können hier deutlich mehr Quads verworfen als später gerendert werden. Der Geforce6 erreicht bis zu 64 verworfene Pixel pro Takt, die Radeon X800/850 bis zu 256.



>> Fragment Shader
Ist der Rasterisierungsprozess abgeschlossen, geht es in die Fragment oder Pixel Shader weiter. Hier werden pixelweise Berechnungen durchgeführt. Aufgrund von Einsparungen in der Steuerlogik kann immer nur für jeweils einen Block von 2x2 Pixeln, ein so genanntes Pixel Quad oder eine Quad-Pipeline, dieselbe Berechnung (SIMD = single instruction multiple data) durchgeführt werden. Die Programme, in denen die Anweisungen für die Fragment-Shader-Einheiten zusammengefasst sind, nennt man im DirectX-Jargon Pixel Shader.

Diese Fragment Shader sind nun das, was der Karte einen Großteil ihrer Geschwindigkeit verleiht oder sie eben dieser beraubt. Das liegt zum einen daran, dass die Anzahl der Pixel mit der Bildschirmauflösung skaliert, während das bei der Anzahl z. B. der Vertizes nicht der Fall ist. Zum anderen liegt es auch darin begründet, dass die Menge an Arbeit, die eine einzelne Quad-Pipeline pro Takt erledigen kann, je nach GPU-Hersteller und Situation drastisch variieren kann. Eine gegebene Szene in einem 3D-Spiel hat unabhängig von der gewählten Bildschirmauflösung eine feste Anzahl an Dreiecken. Wie groß diese Dreiecke jedoch sind, sprich, wie viele Pixel berechnet werden müssen, ist unterschiedlich.



>> Details der Fragment Shader
Jedes Pixel Quad besteht aus vier Kanälen mit jeweils mindestens einer arithmetischen Einheit (Arithmetic Logic Unit, ALU) und diversen, unterschiedlich mächtigen Hilfsarbeitern. Diese Hilfseinheiten wiederum wenden ihre Funktionen auf die vier Bestandteile der Pixelinformationen an: den roten, grünen und blauen Farbkanal sowie den Alpha-Anteil. Letzterer ist üblicherweise für die Transparenz zuständig.

attachment.php

attachment.php

Pro Pixel Quad sind also mindestens 16 Rechenoperationen (4 Farbkanäle x 4 Pixel) möglich, wenn die Architektur voll ausgelastet wird. Hier ist aber bereits der erste Stolperstein. Unter anderem aufgrund eines zu kleinen temporären Registerspeichers, in dem die Werte zwischen Beginn und Ende eines Shader-Programms zwischengelagert werden, kam beispielsweise die Geforce-FX-Reihe kaum jemals auch nur in die Nähe dieses maximalen Durchsatzes. Auch die Geforce6-Reihe leidet noch bis zu einem gewissen Grad an diesem Problem.

Außerdem haben die Fragment Shader moderner Radeon- und Geforce6-GPUs die Fähigkeit, die vier Farbkanäle aufzuteilen. Erstere in einem festen 3:1-Verhältnis, sodass man eine Berechnung für drei Kanäle (z. B. Rot, Grün und Blau, RGB) und eine weitere Berechnung für den vierten, den Alpha-Kanal, durchführen kann. Die Geforce6-Reihe beherrscht zusätzlich eine Aufteilungsmöglichkeit in 2:2-Kanäle. Das erhöht die Flexibilität nochmals. Zudem verfügen Geforce6-Prozessoren über eine zweite, teilweise von der ersten abhängige Shader-Einheit, die im Idealfall die Rechenleistung pro Takt verdoppeln kann. Hinzu kommen die teils sehr spezialisierten Berechnungen der Hilfseinheiten, über die sowohl Radeon als auch Geforce verfügen.

Wenn nun ein Shader-Programm eine Berechnung mithilfe der Texturdaten durchführen soll, wird das über die Shader-Einheit veranlasst und diese bei den Geforce-GPUs für die Dauer der Texturoperation blockiert. Die Radeons verfügen dazu über eine separate Textur-ALU und können dies quasi nebenbei erledigen. Die dafür zuständige Texture Mapping Unit (TMU) holt sich dann die benötigten Texturdaten aus dem lokalen Speicher der Grafikkarte und verrechnet diese in einem (bilineare Filterung), zwei (trilinear) oder mehreren Durchgängen (anisotrope Filterung). Sind alle Instruktionen für einen bestimmten 2x2-Block an Bildpunkten abgearbeitet, geht es in die ROPs weiter.



>> ROPs
Das Kürzel ROP steht für Raster Operator. Diese geben dem Pixel sozusagen den letzten Feinschliff. Hier werden sowohl die endgültigen Farbwerte in den Bildschirmpuffer geschrieben als auch diverse andere Operationen für jedes Pixel bzw. Subpixel durchgeführt. So finden hier zum Beispiel Aktualisierungen des Z-Buffers statt, der Tiefeninformationen enthält. Aber auch das Blending, welches für das Zusammenrechnen verschiedener Texturschichten eingesetzt wird, übernehmen die ROPs. Auch finden hier Stencil-Operationen statt, womit zum Beispiel einfarbige, meist schwarze Schatten mit scharfen Grenzen erzeugt werden.
Im Falle von Anti-Aliasing wird hier auch die endgültige Sichtbarkeitsprüfung für die einzelnen Subpixel (AA-Sample) durchgeführt. Einiges an Vorarbeit hierfür kommt schon aus dem Rasterisierungsteil und wird in den ROPs komplettiert. Je nach Grad des Anti-Aliasings (2x AA, 4x AA usw.) geschieht das in einem einzigen Taktzyklus oder in mehreren Durchläufen. Üblich ist, dass zwei Subpixel pro Takt und ROP geprüft werden können. So wäre 2x FSAA, allein von den ROPs her, quasi ohne Leistungsverlust möglich. Für 4x FSAA sind üblicherweise zwei Durchgänge durch die ROPs vonnöten, sodass sich die Leistung im Extremfall halbiert.



>> Speicher-Interface
Bezeichnet man die GPU mit ihren parallelen Verarbeitungseinheiten als Autobahn, so kann man sich das Speicher-Interface als Zubringer vorstellen. Wenn es zu wenige Auffahrten gibt, bleibt die Autobahn leer. Gibt es zu wenige Abfahrten, staut sich der Verkehr.

Das Speicher-Interface bestimmt neben der GPU und ihren Taktraten die Leistungsfähigkeit moderner Grafikbeschleuniger entscheidend mit. Die maximale Bitbreite und die daraus resultierende Speicherbandbreite entscheiden darüber, ob die GPU ausreichend mit Daten versorgt wird [Beispiel für 6600 GT: 500 MHz Takt x 2 (DDR) x 128 Bit/8 (Umrechnung in Byte) = 16,0 GByte/s]. Anderenfalls vergeudet sie einen Teil ihres Potenzials mit Nichtstun und Warten auf das VRAM (Video-RAM, lokaler Grafikspeicher). Dabei gilt: Je leistungsfähiger die GPU, desto eher reicht ihre Geschwindigkeit auch für höhere Qualitätseinstellungen. Darunter fällt beispielsweise aktivierte Kantenglättung, welche die Anforderungen an die verfügbare Bandbreite erhöht. Aktuelle High-End-Pixelschleudern verfügen über ein 256 Bit breites Interface, welches dazu noch im DDR-Verfahren arbeitet und somit pro Takt 2x 256 Bit übertragen kann. Die meisten Mid-Range-Karten müssen dagegen mit einer 128-Bit-DDR-Anbindung vorlieb nehmen, sind aber oft höher getaktet. Vorsicht sollte man bei Karten walten lassen, die aus Gründen der Kostenersparnis nur über ein kastriertes Speicher-Interface verfügen. 64 Bit genügen für aktuelle Spiele in adäquater Auflösung nur selten, zumal sie oftmals noch mit niedrig taktendem Speicher verknüpft sind.
 
AW: [PCGH] Wissen: Wie funktionieren Grafikkarten (1)

Grafikkarten sind neben Prozessoren das Hauptthema für hardwareinteressierte Spieler. In einer speziellen Wissensreihe will PC Games Hardware alle Grundlagen vermitteln, die für das Verständnis von 3D-Beschleunigern wichtig sind. In diesem Teil geht es um Texturfilter und Kantenglättung.

attachment.php

Filter, Muster, Sensationen: Nein, ganz so reißerisch ist der Inhalt des zweiten Teils unserer VGA-Wissensreihe nicht. Um Filter und Muster geht es in diesem Abschnitt jedoch trotzdem. Zunächst um den einfachen Texturfilter, den es seit jeher in drei verschiedenen Ausprägungen gibt. Dabei wird die Grundlage für den anisotropen Filter gelegt, der heute ein beliebtes Mittel zur Bildqualitätssteigerung geworden ist. Der zweite Abschnitt beschäftigt sich mit Mustern. Und zwar mit Rastern, die Grafikchips für die Kantenglättung verwenden.


Inhalt:
>> Perspektivenkorrektur
>> MIP-Mapping
>> Texturfilterung
>> Anisotrope Filterung
>> Full-Scene Anti-Aliasing
>> FSAA-Muster (1)
>> FSAA-Muster (2)




>> Perspektivenkorrektur
Vor der Texturfilterung wird von der Hardware eine Perspektivenkorrektur der Texturkoordinaten durchgeführt. Dies ist nötig, da Texturen nur als flächige, zweidimensionale Gebilde vorhanden sind. Wenn man diese auf einen dreidimensionalen Körper aufträgt, kommt es zu Verzerrungen. Das kann man sich schön vor Augen führen, indem man versucht, ein Stück Papier (Textur) auf einen Würfel oder einen aufgeblasenen Luftballon zu legen.



>> MIP-Mapping
Im Zuge der Texturfilterung werden aus der Basis-Textur so genannte MIP-Maps gebildet. MIP ist ein Kunstwort und steht für multum in parvo (lat. viel im Kleinen). Aus einer Textur, die beispielsweise 1.024x1.024 Pixel groß ist, werden dann herunterskalierte Miniaturen gebildet. Diese haben 512x512, 256x256, 128x128, 64x64 usw. Bildpunkte. Diese MIP-Maps, verkleinerte Wiederholungen derselben Textur, werden auch MIP-Stufen oder -Level genannt. Sie werden in zunehmender Entfernung zum Betrachter für drei Einsatzgebiete gebraucht. Einerseits um die natürliche Unschärfe in größerer Entfernung zu simulieren. Andererseits, um Texturflimmern zu unterdrücken und auch die Performance zu verbessern.



>> Texturfilterung
Als die 3D-Pixel dank des Voodoo Graphics das Sprinten lernten, etablierte sich der so genannte bilineare Filter. Dieser verrechnet über einen in die TMU (das ist die Texture Mapping Unit) integrierten Filterkernel die Farbwerte. Diese werden aus der entsprechenden Textur ausgelesen. Heutzutage sind bilineare Filterkernel üblich, die aus vier Texturwerten einen gewichteten Mittelwert pro Takt bilden können. Die nächst höhere Stufe in der Lehre der Texturfilterung ist die trilineare Filterung.

Steht bei bilinearer Filterung das bi noch für die beiden Richtungen, in die der Filterkernel aus der Textur ausliest, so wird bei trilinearer Filterung die dritte Komponente aus dem benachbarten MIP-Level hinzugezogen. Trilineare Filterung wird sinnvollerweise nur zusammen mit MIP-Mapping eingesetzt. Die Schärfe-Übergänge an den Kanten zweier Texturstufen sind aufgrund der doppelten Auflösung der näheren Textur natürlich stark ausgeprägt und störend. Der trilineare Filter soll diese Stufen (das MIP-Banding) eliminieren und weich ineinander überlaufen lassen. Dieses rechenaufwendige Verfahren ist auch der Ansatzpunkt einiger Filter-Optimierungen seitens der Grafikchiphersteller. Richtige trilineare Filterung verrechnet bis auf einen GPU-bauartbedingten, sehr schmalen Streifen durchgehend Texturwerte aus zwei MIP-Maps. Dieser schmale Streifen wird bei den Einsparungen der Filterung, wie man Filteroptimierungen dieser Art eigentlich nennen müsste, künstlich verbreitert.

Je nach Aggressivität der Optimierung (Hohe Leistung bei Nvidia oder A.I. auf hoch bei Atis CCC) kann dieser Streifen beinahe den kompletten MIP-Übergang auffressen, in dem nicht mehr trilinear, sondern nur noch bilinear gefiltert wird. Hier entsteht dann oft wieder MIP-Banding durch zu aggressive Einsparung, die eigentlich durch trilineare Filterung eliminiert werden sollte.



>> Anisotrope Filterung
Anisotrop stammt aus dem Griechischen und bedeutet unterschiedliche Eigenschaften in unterschiedlichen Richtungen und hat trotz mannigfaltiger Wiederholungen nichts mit den Tropen (anisotropisch) zu tun. Es handelt sich also um einen richtungsabhängigen Filter.

Der anisotrope Filter (kurz: AF) nimmt sich Problemen bei der Texturdarstellung an. Man kennt es aus den meisten Spielen: Texturen, die im Vordergrund scharf und detailreich dargestellt werden, verschwimmen aufgrund des MIP-Mappings weiter hinten im Bild zusehends. Will man aber schärfere Texturen erhalten, ohne dass diese sich in Flimmern auflösen, so braucht es zusätzliche Filterarbeit. Darüber hinaus besteht das Problem unterschiedlich aufgelöster MIP-Stufen an Geometrie-Ecken. Ein Beispiel: Sie sehen eine Wand entlang auf das Ende eines Tunnels. Während die Wandtexturen in zunehmender Entfernung durch MIP-Mapping geringer auflösen, bleibt die Draufsicht auf das Ende des Tunnels scharf. Hier schafft der anisotrope Filter Abhilfe, indem er der Wand mehr Schärfe verleiht. Abrupte Änderungen der MIP-Auflösung werden verringert. Das Verfahren ist allerdings sehr rechenaufwendig.
Anhand der errechneten Line of Anisotropy wird der notwendige Grad der Anisotropie bestimmt. Dieser gibt, vereinfacht gesagt, an, wie viel mal mehr Texturwerte in Blickrichtung verrechnet werden müssen als bei isotroper (gleich in alle Richtungen) Texturfilterung. Da üblicherweise die TMUs nur dafür ausgelegt sind, einen bilinear verrechneten Texturwert pro Takt zu liefern, braucht anisotrope Filterung mehrere Durchläufe. Entsprechend kann sich die Bildwiederholrate bei eingestelltem 2:1 AF gegenüber trilinearer Filterung um bis zu 50 Prozent reduzieren. Bei entsprechend höherem Grad der Anisotropie sind noch stärkere Einbrüche möglich.

attachment.php

Um diesem Einbruch zu begegnen, arbeiten moderne anisotrope Filter deshalb adaptiv. Es wird nur so viel anisotrop gefiltert, wie anhand der Neigung oder Stauchung der Textur sinnvoll ist. Zusätzlich gibt es die so genannte Winkelabhängigkeit. Um Transistoren zu sparen, verwendet man in modernen GPUs eine vereinfachte Berechnungslogik für AF. Sind Texturen um bestimmte Winkel zum Betrachter geneigt, wird für sie die vereinfachte Formel verwendet. So erhalten sie automatisch einen geringeren Grad der Anisotropie, als eigentlich nötig wäre. Dieses Verfahren spart darüber hinaus auch Texturfüllrate und steigert so die erreichbare Bildwiederholrate. Ironischerweise wird so bei einem Verfahren zur Qualitätsverbesserung die Bildqualität wieder verschlechtert. Die Winkelabhängigkeit ist je nach GPU unterschiedlich stark ausgeprägt. Perfekt bis in den höchsten AF-Grad filtert aktuell kein bekannter Chip.

attachment.php



>> Full-Scene Anti-Aliasing
Die eingangs erwähnte FSAA-Technik glättet die bekannten Treppenstufen, die durch das Pixelraster entstehen. Eine hohe Bildschirmauflösung ohne den Einsatz von FSAA kann zwar auch helfen, die Entstehung solcher Artefakte zu mindern, aus zweierlei Gründen ist das jedoch nicht immer praktikabel. Einerseits arbeiten die heute üblichen TFT-Bildschirme mit einer festen Auflösung von oft nicht mehr als 1.280x1.024 Pixeln, andererseits genügt gerade bei aktuellen Spielen die Leistung der Grafikkarte häufig nicht für höhere Auflösungen.

attachment.php

Die Lösung dieses Dilemmas hört aktuell auf den Namen Multi-Sampling Anti-Aliasing (MSAA) und bedeutet prinzipiell nichts anderes, als die Auflösung zu erhöhen. Die MSAA-Technik wird derzeit von Nvidia- und Ati-Grafikchips verwendet. Der Trick an der Sache ist, dass alle Kanten von Polygonen genauer abgetastet werden. Das heißt, es wird intern mit erhöhter Geometrieauflösung an den Polygonkanten gerechnet. Die Ergebnisse der ROP-Einheiten werden dann am Ende zum endgültigen Farbwert des Pixels verrechnet.

Die ROPs moderner Grafikkarten können dabei bis zu zwei Subsamples pro Durchlauf verrechnen. Für 4x oder gar 6x MSAA müssen sie jedoch zwei respektive drei Durchgänge für die finalen Farbwerte aller Samples einlegen. Die Bildqualität steigt hierdurch merklich an. Aufgrund der erhöhten Anzahl an Samples, die aus den Buffern ausgelesen werden müssen, wächst auch der Bandbreitenbedarf. Somit empfehlen sich für hohe FSAA-Stufen vornehmlich Karten mit hoher lokaler Speicherbandbreite.



>> FSAA-Muster (1)
Die verwendeten Muster unterscheiden sich je nach Grafikchip deutlich voneinander (siehe Schaubilder). Die effektivste Art, die Kantenauflösung zu erhöhen, liegt darin, möglichst nicht achsengleiche Subpixelpositionen (Rotated Grid, Sparsed Grid) zu verwenden so wie es Radeon-Chips durch die Bank vormachen. Auf diese Weise kann man mit einer minimalen Anzahl an Subsamples die jeweilige Achsenauflösung auf das Maximum erhöhen. Die Geforce-Reihe bietet erst ab dem Geforce6 ein prinzipiell gleichwertiges Abtastmuster für 4x MSAA. Für den 6x-MSAA-Modus gibt es aktuell noch kein vergleichbares Gegenstück bei Nvidia.

attachment.php

attachment.php


Zuätzlich bietet Ati das so genannte temporale FSAA an. Das Verfahren baut auf die Trägheit des menschlichen Auges und benötigt hohe Bildwiederholraten, um zu funktionieren. In zwei aufeinander folgenden Bildern wird dabei die Abtastposition der Subsamples verändert. Ist die Bildwiederholrate schnell genug, nimmt das Auge nur ein Bild wahr, allerdings mit der kombinierten Anzahl der verwendeten Samples. So wird via Temporal-AA aus 4x FSAA ein 8x AA, aus 6xAA ein 12 xAA.



>> FSAA-Muster (2)
Ein weiterer Modus zur Kantenglättung ist das ältere Super-Sampling-Verfahren. Hier wird das komplette Bild in höherer Auflösung berechnet und am Ende herunterskaliert. Das Verfahren ist der Erhöhung der Auflösung noch ähnlicher als Multi-Sampling. Hier wird tatsächlich das Bild in höherer Auflösung berechnet und erst ganz am Ende herunterskaliert. Auch das Berechnen des Bildes in getrennten Puffern mit jeweils um ein Subpixel versetzter Position zeigt den Effekt.
Der Nachteil liegt auf der Hand: Super-Sampling kostet Leistung. So sind zum Beispiel bei 2x FSAA teilweise 50 Prozent Leistungsverlust zu beklagen. 4x FSAA halbiert das Ganze dann noch einmal, sodass im Extremfall von ehemals 100 Bildern pro Sekunde nur noch 25 Fps übrig bleiben. Super-Sampling eignet sich damit nur für Spiele, die relativ wenig GPU-Leistung benötigen. Der Vorteil ist, dass Super-Sampling bedingt durch die Vollbildabtastung im Gegensatz zu Multi-Sampling auch so genannte Alpha-Test-Texturen glättet. Da hiermit Löcher in Texturen simuliert werden und Multi-Sampling nur auf Polygonkanten wirkt, ist es in diesem Falle nutzlos. Zäune und ähnliche Gebilde, die nur mit extremem Aufwand durch Polygone darzustellen wären, werden oft durch Alpha-Test-Texturen realisiert. Ferner hat Super-Sampling durch die doppelte Abtastung auch der Texturen einen ähnlichen Effekt wie anisotrope Filterung. Wenn die Leistung vorhanden ist, bietet Super-Sampling ein insgesamt schöneres Bild.

Neben reinem Multi- oder Super-Sampling gibt es auch Mischformen, so genannte Hybrid-Modi. Dabei wird ein bestimmter Anteil von Super-Sampling mit Multi-Sampling gemischt, um die Vorteile beider Varianten zu vereinen. Nvidia bietet Hybrid-Modi schon länger bei seinen Chips an, Ati setzt erstmals bei der Crossfire-Technik darauf. Der G70 von Nvidia hat weitere Hybrid-Modi im Handgepäck.
 
Zuletzt bearbeitet von einem Moderator:
Zurück