TEXTURING Mit dem Cube Environment Mapping-Verfahren werden sechs verschiedene Bilder aufgetragen [Quelle: siehe Bildergalerie]
Dieser Artikel erschien im Original in der PC Games Hardware 10/2001. Die Begrifflichkeiten haben sich aber seitdem nicht geändert. GigaTexel und Matrix-Skinning sind wichtig - sagt zumindest die Industrie. Nur wer weiß schon genau, was sich hinter diese Begriffen verbirgt? Lernen Sie dazu! Neun weitere Fachwörter werden auf den folgenden Seiten erklärt. Nach der Lektüre unserer 3D-Vokabel-Sammlung ist Ihr Grafikkartenwissen up-to-date.
Skinning In Spielen werden bei bewegten Charakteren wie Tieren, Monstern oder Spielern oft bewegliche Glieder definiert. Speziell bei stark angewinkelten Gliedteilen beobachtet man bei diesem Verfahren an den Gelenken hässliche Übergänge, ja sogar Löcher oder unrealistische Verzerrungen im Gewebe. Mittels "Matrix Skinning" lassen sich Körperbewegungen hardwarebeschleunigt animieren und die beschriebenen Verbindungsfehler vermeiden, indem die Position der Dreieckseckpunkte an den Gelenken variiert wird. Je nach Entwicklungsstand der Hardware können unterschiedlich viele Glieder in die Berechnung einfließen. Die Berechnungsdaten eines Muskels oder eines Körperglieds werden dabei in so genannten Matrizen festgehalten, einer mathematischen Zahlenstruktur. GeForce2 -Beschleuniger beherrschen 2-faches Matrix Skinning. Bis zu zwei Glieder können hier die Bewegung und die Position der Eckpunkte bestimmen, was kaum für einen sinnvollen Einsatz in Spielen ausreicht. Besser geeignet scheint 4-faches Matrix Skinning mit vier Berechnungsglieder, das vom Radeon (Ati) und vom GeForce3 (Nvidia) unterstützt wird. Doch auch dieses Verfahren ist limitiert. Zwar reichen vier Knochen oder Muskeln für die realistische Animation eines einzelnen Gelenks, doch verteilt über einen ganzen Körper agieren viele verschiedene Gelenke mit unterschiedlichem Bewegungsverhalten. Die Lösung nennt sich Paletted Matrix Skinning und ist ebenfalls im GeForce3 sowie im Matrox-G550-Prozessor eingebaut.
Für jedes Gelenk lässt sich eine neue Gruppe Berechnungsmatrizen nachladen, so dass hier jeweils unterschiedliche Daten genutzt werden können (meist bis zu vier Matrizen). Bei programmierbaren Prozessoren sinkt dabei allerdings die Leistung mit jedem zusätzlich berücksichtigten Glied. Insgesamt stehen je nach Chip bis zu 256 Berechnungsvorschriften zur Verfügung, welche die endgültige Position der Dreieckseckpunkte an den Gelenken beeinflussen können. Die Berücksichtigung derart vieler Werte lässt Bewegungen enorm dynamisch und realistisch aussehen und gibt den Entwicklern bei der Erstellung komplexer Charakteranimations-Algorithmen freien Handlungsspielraum. Die beschriebenen Funktionen werden bei Grafikkarten ohne Hardware-Unterstützung vom Hauptprozessor ausgeführt.
Spiele-Engine Ein Spiel besteht aus verschiedenen kleinen Programmen, die für unterschiedlichste Zwecke vom Spielehersteller entwickelt werden. Der "Spiele-Engine" genannte Programmteil ist dabei grundsätzlich für sämtliche Berechnungen verantwortlich, die das Geschehen während des Spielablaufs beeinflussen. Dazu gehören Berechnungsanweisungen zum Verhalten der Gegner (künstliche Intelligenz, engl. Artificial Intelligence; AI) sowie Physikberechnungen zum Verhalten der Objekte. Letzteres berechnet beispielsweise die Flugbahn einer Rakete in einer Flugsimulation oder die Auswirkung der Fliehkraft bei einem Autorennspiel (Querneigung des Boliden). Für die Darstellung der Spieledaten ist die 3D-Engine verantwortlich, welche ebenfalls ein Teil der Spiele-Engine ist. Oft kommt es vor, dass manche Spiele dieselbe 3D-Engine nutzen. Einige Spieleentwickler haben sich dann auf den 3D-Teil der Spiele-Engine spezialisiert und bieten diesen gegen eine Gebühr anderen Firmen zum Einbau in die eigenen Spiele-Engine an (z.B. Q3-Engine oder Unreal-Engine). Andere wiederum lizenzieren ihre 3D-Sound-Routinen.
[index]
Stencil Buffer Bildspeicher und Tiefenspeicher reichen noch nicht, um das Effekt-Repertoire der Spieleentwickler abzudecken. Für spezielle Trickeffekte wird ein weiterer Datenspeicher benötigt, der "Stencil Buffer" (Schablonenpuffer). Im Stencil Buffer kann der Spieleentwickler zu jedem Bildschirmpunkt zusätzliche "Notizen" ablegen. Bis zu 8 Speicherbits stehen zur Informationsspeicherung zur Verfügung und erlauben 256 verschiedenen Einträge pro Bildpunkt. Spezielle Einblendeffekte (Fade) und echte Schattenwürfe (volumetrische Echtzeitschatten) sind damit möglich.
Textur / Texel / Texturing Beim "Texturing" genannten Vorgang geht es immer darum, ein 2-dimensionales, "flaches" Bild über ein 3-dimensionales Objekt zu stülpen. Ein solches Bild nennt sich im Fachjargon "Textur" oder "Texture Map". Bei diesem flachen Bild kann es sich beispielsweise um das Foto einer Wandstruktur handeln oder auch um Bilder mit Licht- ("Light Map"), Umgebungs- ("Environment Map") oder Strukturinformationen ("Bump Map") zur Erzeugung von dynamischen Spezialeffekten. Allen Textur-Varianten gemeinsam ist, dass die Informationen als Farbwerte gespeichert sind. Ein einzelner Farbwert eines solchen Bildes nennt man "Texel" (Texture Element). Beim Texturing muss der Grafikprozessor darauf achten, dass die Textur perspektivisch korrekt aufgespannt wird. Zur Abschwächung von Genauigkeitsfehlern beim Berechnen der einzelnen Pixel kommt dabei Texturfiltering zum Einsatz, indem pro Bildpunkt mehrere Texel ausgelesen und miteinander vermischt werden. Werden mehrere Texturen über ein Dreieck gespannt, spricht man von Multitexturing. Manche Grafikprozessoren können dies ohne Geschwindigkeitsverlust (Single Cycle) mit derzeit bis zu drei Texturen (Radeon) oder ohne Speicherzugriff (Single Pass) mit bis zu vier (GeForce3), sechs (Radeon 2) respektive acht Texturen (Kyro).
Tesselation Manche Spieledesinger konstruieren gewisse Objekte nicht allein aus Dreiecken, sondern nutzen auch Vierecke oder zusammenhängende gekrümmte Oberflächen (Curved Surfaces) als Grundbausteine. Da der Grafikprozessor allerdings nur Dreiecke verarbeiten kann, müssen diese Objekte vor der weiteren Berechnung in mehrere Dreiecke zerlegt werden. Diesen Zerlegungsvorgang nennen 3D-Experten "Tesselation". Modernste Grafik-Boliden wie Nvidias GeForce3 oder Atis kommender Radeon 2 haben diese Funktion im Chip integriert. Die Hardware-Einheit muss jedoch vom Spiel explizit unterstützt werden. Ohne diese Unterstützung übernimmt der Hauptprozessor die Zerlegungsarbeit.
Texturkompression Texturen belegen viel Speicherplatz. Farbschöne und hochauflösende 32-Bit-Texturen stellen die Leistungsfähigkeit eines jeden Beschleuniger-Boliden auf die Probe. Eines dieser 512x512 Pixel großen Klebebilder belegt bereits 1 Megabyte Speicherplatz, dazu kommen Struktur-, Licht- und Umgebungstexturen. Ohne Kompressiontechnik geht dem Speicherplatz und speziell der Leistungsfähigkeit der Verbindungsstraßen zwischen Chip und Speicher (Bandbreite) schnell die Puste aus, hochauflösende Texturen wären in Spielen kaum praktikabel. Texturkompression ist ein Verfahren, um den Speicherbedarf von Texturen in Spielen zu verkleinern. Der benötigte Speicherplatz und Datendurchsatz für eine komprimierte Textur verringert sich im Schnitt um rund 80 Prozent. Erst innerhalb des Chips, wo Engpässe kaum bestehen, wird die Datenmenge wieder aufgeblasen. Die Qualität der Textur leidet zwar etwas unter diesem Zusammenquetschen, doch sofern der Chipentwickler eines der verbreiteten Kompressions-Verfahren korrekt im Chip integriert, ist der visuelle Unterschied kaum zu erkennen. Im Markt durchgesetzt hat sich das von der ehemaligen Chipschmiede S3 entwickelte Verfahren S3TC. Mittlerweile ist die Technik fester Bestandteil der verbreiteten Programmierschnittstellen (DirectX / OpenGL) und wird von vielen Spielen genutzt.
[index]
Triangle Setup Das Triangle Setup ("Dreiecksaufbereitung") folgt in der 3D-Pipeline direkt nach T&L (Dreiecks-Transformation und Beleuchtung). Der Rendering-Teil des Grafikchips ("Rasterizer") arbeitet mit anderen Daten als der Geometrieteil, so dass das Triangle Setup die Dreiecksdaten zeilenweise in Pixeldaten umzuwandeln hat. Dabei werden für jedes Pixel bis zu 20 verschiedene Werte erzeugt, beispielsweise pixelgenaue Neigungs-, Perspektiv- und Texturinformationen sowie die Anfangs- und Endpunkte einer Pixelserie. Die erste Beschleunigerchipgeneration anno 1996 war bei dieser Arbeit noch auf ausreichend Rechenpuste des Hauptprozessors angewiesen, doch bereits die darauf folgende 3D-Chiparmada brannte die Transistoren für diese Aufbereitungsanlage komplett ins Silizium. Üblicherweise kann diese Recheneinheit gleich viele Dreiecke verarbeiten wie die T&L-Einheit.
Vertikale Bildsynchronisation (VSYNC) Die vertikale Bildsynchronisation, kurz VSync, dient dem Abgleich der eingestellten Monitor-Bildwiederholrate mit der Bilderzeugungsgeschwindigkeit der Grafikkarte. Ist diese Funktion ausgeschaltet, kann die Grafikkarte den Monitor bei der Darstellung überholen oder diesem hinterherhinken. Alte und neue Teilbilder überschneiden sich dann und es kommt vor allem bei niedrigeren Bildwiederholraten zu einem unangenehmen Effekt mit waagrechten Bildsprüngen. Diese oft in actiongeladenen Spiele-Sequenzen (z.B. bei schnellen Bewegungen oder bei Drehungen) auffallenden Bildstörungen nennt man "Tearing". Es ist daher für Qualitätsfreaks zu empfehlen, den VSync dauerhaft zu aktivieren. Einzig für Benchmarkmessungen ist die Monitor-Synchronisation auszuschalten, um Verfälschungen der Vergleichswerte auszuschließen und die Leistungsmessung unabhängig von den Fähigkeiten des Monitors durchzuführen.
[index]
Z-Buffering (Unterform von HSR) Um sich überdeckende Objekte korrekt darzustellen, bedienen sich fast alle Grafikchips eines "Z-Buffering" genannten Verfahrens. Dessen Aufgabe ist es zu verhindern, dass nicht sichtbare Teile der Szene dargestellt werden. Z-Buffering ist somit eine Form des "Hidden Surface Removal" (HSR). Bei den meisten 3D-Beschleunigerchips werden die ankommenden Dreiecke in Pixel zerlegt, schattiert und texturiert (Rendering). Vor dem anschließenden Schreiben in den Grafikspeicher kommt das Z-Buffering zum Zug. Aus den Dreiecksdaten errechnet der Grafikcontroller für jedes Pixel den aktuellen Tiefenwert (Z-Wert), also einen Zahlenwert für den Abstand des Bildpunktes zum Betrachter. Je größer dieser Wert ist, umso weiter weg befindet sich das Objekt. Im folgenden "Z-Test" genannten Vorgang stellt der Grafikchip fest, ob an dieser Stelle bereits ein Pixel gezeichnet wurde und ob dieses räumlich vor dem neuen Pixel liegt. Wie die Farbinformationen werden auch die Tiefeninformationen für jedes Pixel in einem Bereich des Grafikkartenspeichers (Z-Buffer; Tiefenpuffer) abgelegt, so dass der Grafikchip stets Zugriff auf alle relevanten Bildinformationen hat.
Der Chip vergleicht die alten Daten an dieser Stelle mit dem neuen Wert. Ist der neue Tiefenwert kleiner als der zuvor gespeicherte, so werden die Farb- und Tiefeninformationen im Speicher ersetzt, das heißt der neue Bildpunkt überdeckt einen zuvor gezeichneten Bildpunkt. Im umgekehrten Fall geschieht nichts, der neu berechnete Bildpunkt für diese Koordinaten wird ignoriert, da er von einem zuvor berechneten Pixel bereits überdeckt wird. Einige Grafikboliden der neuesten Generation (KYRO, GeForce3) führen Teile des Z-Bufferings oder ähnliche Verfahren vor dem Schattieren und Texturieren der Pixel durch. Durch dieses "vorgezogene Hidden Surface Removal" sparen die Chips Rechenleistung und Speicherzugriffe, sofern sich in einem Spiel mehrere Objekte überdecken.
Bildergalerie zum Artikel