Die 3D-Grafikkarten – die 3D-Features (Teil 2) Weitere Infos über 3D-Features

Als Fortsetzung des letzten Artikels sollten Sie diesen, wenigstens den zweiten Abschnitt, gelesen haben. Falls dies noch nicht geschehen ist, können Sie dies hier nachholen.

Nun zur Setup-Engine. Sie entfernt als erstes alle Polygone eines Objekts, die momentan, in der laufenden Szene nicht zu sehen sind, so dass weniger Zeit und Speicherbandbreite für den Aufbau der Szenen benötigt wird. Man nennt dieses Verfahren Backface Culling. Diese Aufgabe kann entweder von dem 3D-Chip selbst übernommen werden oder aber durch einen Treiber emuliert werden, der für diesen Vorgang dann die CPU benutzt. Falls das der Fall sein sollte, ist man auf eine schnelle CPU angewiesen. Jedoch ist mit beiden Arten von Grafikkarten gleich gut bedient. Während die Chips, die das Backface Culling selbst ausführen den AGP- bzw. PCI-Port stark belasten, laufen die Daten bei der anderen Variante besser durch den Port hindurch, da die Polygone vorher ja schon von der CPU aussortiert worden sind.
Von den dann bekannten Polygoneckpunkte werden durch die CPU die Zwischenwerte errechnet, was durch Interpolation geschieht. Man nennt das auch Floating Point. Für jeden zu interpolierenden Parameter ergeben sich sowohl eine X- als auch eine Y-Koordinate. Die Pixelsetzung, auch Rasterung genannt, und die Farbbestimmung eines jeden Pixels und alle folgenden Operationen fallen dem Rasterizer zur Last. Der Color Calculator verwendet nebenher noch eine Reihe von anderen Pipelines, die, abhängig vom 3D-Chip, unterschiedlich implementiert sein können. Diese versehen dann die Pixel mit verschiedenen Optionen. Dazu gehören unter anderem: Fog = Distanzeindruck, Alpha = Transparenzeindruck & Specular = Akzentuieren.
Die Auflösung kann aber, wie man sich denken kann, nicht beliebig erhöht werden, da man auch die kleinsten Polygone entsprechend manipulieren müsste. Deshalb wird zuvor oftmals noch ein Näherungsverfahren wie z.B. Anti-Aliasing im Scan-Converter verwendet. Diese Anwendung verringert den Kontrast- und die Pixelfarbe, damit die Polygone weiter verarbeitet werden können. Die Hersteller verwenden aber alle unterschiedliche Methoden um dies zu realisieren. Es können somit sehr verschieden gute Ergebnisse entstehen.
Rasterizer haben die Aufgabe zu überprüfen, ob sich die darzustellenden Bildelemente vor oder hinter einem bereits gerenderten (ausgefüllten) Element befinden. Dieser Vorgang mit Hilfe des Z-Buffers (auch Depth-Buffer, für Tiefen-Puffer, genannt) erledigt. In diesem Z-Buffer sind alle Tiefeninformationen bereits gerenderter Polygone enthalten, die oftmals mit einem sogenannten Stencil-Buffer (Stencil = Schablone) kombiniert sind. Dieser ist hauptsächlich für die Aufgabe vorgesehen, bestimmte Bildbereiche mit einem „Schreibschutz“ zu versehen, der sie davor schützt, von anderen gerenderten Polygonen überschrieben zu werden.
Um möglichst differenzierte Farbverläufe zu erhalten, wären eine Unmenge an Polygonen notwendig, die dann noch mit den Farben und den verschiedenen Optionen zu versehen sind. Um das zu umgehen gibt es eine extra Pipeline für das Texture Mapping, das Objekten wie Videos, Pattern und Images eine Art zweidimensionale Maske verpasst (mit U- und V-Koordinaten). Das heißt soviel wie, dass ein bestimmtes Objekt einmal „zusammengebaut“ und dann als Textur behandelt wird. Die einzelnen Texturen dieses Objekt (Texel) werden dann in einem Texturenspeicher abgelegt, und können später nach Bedarf auf eine beliebige Polygonoberfläche gelegt werden. Dabei werden auch gleich die Perspektivkorrekturen durchgeführt (Perspective Correct, W-Koordinate), die Bildverzerrungen vermeiden sollen. Auch sollen damit bestimmte Farben bzw. Farbbereiche zu entfernen (ColorKey, Chroma Clear), was einer Realisierung des räumlichen Effekts dient.
Damit allein ist aber die dreidimensionale Struktur immer noch nicht perfekt vermittelt. Auf Grund dessen verwenden heute fast alle Chips noch das Bump-Mapping, womit die Beleuchtung für die Objekte verbessert wird und damit der 3D-Effekt noch deutlicher wird.
Alle Texturen werden entweder direkt über den AGP-Port von der CPU geholt oder gelangen durch den PIO/DMA-Transfer erst in den lokalen Speicher und von dort dann in den Chip. Heutige Grafikkarten haben so viel Speicher, dass sie immer seltener auf den Hauptspeicher zurückgreifen müssen, sondern alles im LFB (Local Frame Buffer (Bildspeicher)) abspeichern, da dieser sowieso um einiges schneller als der AGP-Bus ist.
Alle aktuellen 3D-Grafikkarten unterstützten Multitexturing und Alpha Blending. Das Multitexturing erlaubt es, mehrere Texturen auf einem Polygon zu überlagern, womit Effekte wie die Reflexion von Umgebung oder andere Lichteffekten erzielt werden können.
Je mehr Texture Engines in einer Grafikkarte vorhanden sind, umso mehr Texturen können gleichzeitig bearbeitet werden.
Mit dem Alpha Blending werden bereits im Bildspeicher vorhandene Polygone mit aktuellen Farben verknüpft. Der Alpha-Wert (meistens 8 Bit) ist dabei der Gewichtungsfaktor für die beiden Farbanteile. Ein hoher Alpha-Wert lässt ein Objekt stark durchsichtig werden, wohingegen ein geringer Wert ein Objekt stärker hervorhebt.
Die Leistung einer 3D-Karte hängt aber auch vom verwendeten System ab, denn wenn die CPU zu langsam ist, langweilt sich die Grafikkarte und man kann deren Leistung nie voll ausnutzen. Sollte die CPU schneller als der Grafikprozessor sein, dann kann es zu einem Bildruckeln führen.
Um nun aber eine langsame CPU schneller zu machen, bieten einige Hersteller Codeerweiterungen an, die Ganzzahlberechnungen und Gleitkommaoperationen beschleunigen können.

DirectX von Microsoft gilt heute als allgemeine Software-Schnittstelle für diese Features. Auch die meisten Spiele unter Windows ist diese notwendig. Es gibt aber auch noch eine andere Software-Schnittstelle, die sich Glide nennt und vom Hersteller 3Dfx stammt. Heutzutage gibt es auch einige Spiele, die sowohl Direct3D- als auch Glide-Unterstützung betreiben.

Social-Media:
Pin Share

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.