Grafikkarten-Lexikon

Vorwort

Willkommen beim Grafikkarten-Lexikon! :peace:

An dieser Stelle findet ihr eine Übersicht über die wichtigsten Themen aus dem Bereich Grafikkarten und deren Features. Mein Ziel ist es, meine Texte möglichst allgemein verständlich zu halten, um vielleicht auch bei einigen Laien Interesse fürs Thema zu wecken. Und natürlich sollen auch die ganzen Zocker da draußen informiert werden, was die Grafikkarte überhaupt tut, wenn Features wie AntiAliasing, anisotropes Filtern oder HDR aktiviert werden.
Da ich aufgrund meines Studiums nicht so wahnsinnig viel Zeit in das Projekt investieren kann, habe ich mich dazu entschlossen, immer wieder mal ein neues Stichwort anzusprechen und so die Liste in unregelmäßigen Abständen zu erweitern. Dafür sollen die Texte dann auch inhaltlich korrekt sein und dennoch simpel genug gehalten sein, so dass eben auch Laien etwas damit anfangen können. Eine sture, evtl. sogar noch zusammenkopierte Auflistung von Fremdwörtern und Technikbegriffen ist nicht in meinem Interesse und sicherlich auch nicht eurem ;).
Beginnen will ich die Serie mit dem Thema HDR: "High Dynamic Range"- Rendering.

Frohes Lesen und Verstehen wünscht euch
Spasstiger X-D

P.S.: Ihr könnte gerne auch eure eigenen Erklärungen posten. Aber ins Inhaltsverzeichnis wollte ich zunächst nur meine Artikel reinnehmen.

-----

Inhaltsverzeichnis

-----

Linksammlung

 

FaKe

The Altered
finde ich mal ne coole idee !!!

add mal guru3d.com noch zu den links

;)

Anti ALiasing

Die Kompensation von Störungen durch Aliasing nennt man Anti-Aliasing. Dabei handelt es sich um eine Software die Farbverläufe, Hintergrundfarben und Kanten berechnet und so glättet, dass Farbübergänge kontinuierlich und die Ränder von Schriften, Kanten und Rundungen wieder fließend erscheinen.

Man unterscheidet dabei zwischen dem temporalen und dem spatialen Anti-Aliasing, also dem räumlichen. Bei diesem Verfahren werden die Farbwerte der von den Kantenpolygonen berechnet und diese mit den Farbwerten der Umgebung interpoliert, wodurch eine Glättung stattfindet.

____________________________________________________________________________

Bilineares Filtern
Berechnung von weichen Übergängen durch das Antialiasing-Verfahren.

____________________________________________________________________________

Bump-Mapping
Um einer Textur eine wirklichkeitsnahe Struktur zu geben, muß man eine Bumpmap, die Höhen- und Tiefenwerte an die Textur übergibt, auf diese legen. Eine Bumpmap ist nichts anderes als ein Graufstufenbild, dessen unterschiedliche Helligkeitswerte Höhen- und Tiefen Informationen übermitteln. Je dunkler die Werte der Bumpmap, desto mehr Tiefe bekommt die Textur.

____________________________________________________________________________
 
jap, is ne wirklich nette idee!

allerdings würd ich an deiner stelle die zeit sparen und einfach nur auf diesen sehr guten ARTIKEL ZU ANTI-ALAISING verlinken...
dafür hätt ich lieber ne gute erklärung über die unterschiede der bumpmaps, normalmaps, doom3maps,... und wie sie alle heißen.
 

FaKe

The Altered
Originally posted by daPoppie@09.09.05, 21:05
jap, is ne wirklich nette idee!

allerdings würd ich an deiner stelle die zeit sparen und einfach nur auf diesen sehr guten ARTIKEL ZU ANTI-ALAISING verlinken...
dafür hätt ich lieber ne gute erklärung über die unterschiede der bumpmaps, normalmaps, doom3maps,... und wie sie alle heißen.
Bump-Mapping

Um einer Textur eine wirklichkeitsnahe Struktur zu geben, muß man eine Bumpmap, die Höhen- und Tiefenwerte an die Textur übergibt, auf diese legen. Eine Bumpmap ist nichts anderes als ein Graufstufenbild, dessen unterschiedliche Helligkeitswerte Höhen- und Tiefen Informationen übermitteln. Je dunkler die Werte der Bumpmap, desto mehr Tiefe bekommt die Textur.


Displacement-Mapping

Displacement Mapping bezeichnet eine Technik in der Computergraphik, die angewandt wird, um einer Oberfläche eines dreidimensionalen Objektes eine höhere Detailtreue zu geben und damit eine realistischere Darstellung zu erreichen.


Height-Mapping

Die Informationen liegen in Form von relativen Höhendaten vor. Dabei wird eine Textur verwendet, die in Graustufen vorliegt, wobei jeder Grauwert eine bestimmte Höhe repräsentiert. Normalerweise ist Schwarz (Farbwert 0) die "tiefste" Stelle und Weiß (Farbwert: 255) die "höchste". Diese Form der Datenspeicherung ist nicht nur auf Bumpmapping beschränkt, viel öfter kommt sie bei der Generierung von riesigen Terrains zum Einsatz.


Normal-Mapping

In einer Normalmap werden anstatt von Höheninformationen Vektoren in ein RGB-Farbentripel konvertiert. Jeder Pixel besteht aus 3 Farbenkanälen: Rot, Grün und Blau. Diese können als X,Y und Z interpretiert werden: der Vektor muss nur mehr normalisiert werden, um daraus den Helligkeitsfaktor am betreffenden Punkt zu berechnen (siehe Per-Pixel-Lighting). Hierbei muss beachtet werden, dass der Vektor, der aus den Farbwerten berechnet wird im Tangentenraum vorliegt. Um die nötigen Berechnungen durchführen zu können muss dieser Vektor in das Weltkoordinatensystem transformiert werden. Alternativ könnten auch alle anderen Vektoren (Kamera-Punkt, Licht-Punkt) in das Tangentenkoordinatensystem verschoben werden.

Anwendung: der 3D-Modeller baut zwei Versionen eines Modells: eine hochauflösende, sehr detailreiche (100.000+ Polygone) und eine für das fertige Programm bestimmte, undetaillierte (100-10.000 Polygone). Ein Programm berechnet den Unterschied zwischen den beiden Modellen und beschreibt mit den gewonnenen Daten eine Textur. Diese Textur wird dann auf das Low-Res Modell aufgespannt. Im fertigen Spiel/Bild/Anwendung bekommt der Benutzer den Eindruck, dass das hochdetaillierte Modell verwendet wird.

Außerdem kann eine Heightmap in eine Normalmap umgewandelt werden, welche heutzutage am häufigsten verwendet wird.

Bumpmapping verbessert die Bildqualität und den Realismusgrad ohne sich groß auf die Performance niederzuschlagen. Außerdem ist das Einsatzgebiet nicht nur auf Schattierungen begrenzt. Reflexionen können mit dieser Technik genau so "gebumpt" werden.

Im Unterschied zum Bumpmapping wird beim Displacement Mapping auch die Objekt-Geometrie entsprechend des Oberflächenprofils verändert. Dies erfordert einen wesentlich größeren Rechenaufwand beim Rendern, wird aber von neueren Grafik-Prozessoren bereits in Hardware realisiert. Neuere Grafikengines wie z.B. Unreal Engine 3 sind in der Lage Displacement Mapping vorzugaukeln: Über Modifikationen der Texturkoordinaten auf Per-Pixel Basis werden Effekte simuliert, die die (nicht existenten, nur beleuchteten) Unebenheiten plastisch wirken lassen. Die einfachste dieser Varianten nennt sich Parallax-Mapping und berechnet aus einer Heightmap die neuen Texturkoordinaten relativ zur Kameraposition. Der Nachteil ist, dass eigentlich nicht sichtbare Pixel trotzdem gerendert werden. Abhilfe schafft nur das Speichern zusätzlicher Beziehungen zwischen Texel (Verdeckungen) über weitere Texturen (View-Dependent Mapping). Diese Effekten werden oft unter Virtual Displacementmapping zusammengefasst.
 
HDR: "High Dynamic Range"- Rendering

Seit dem Aufkommen von DirectX-9-Grafikkarten und insbesondere seit Erscheinen der GeForce-6-Reihe gewinnt HDR zunehmend Bedeutung unter den Grafikfeatures und wird von immer mehr Spielen unterstützt. Oftmals wird HDR mit dem sogenannten Bloom-Effekt verwechselt, der das Bild ein wenig weichzeichnet und den Kontrast erhöht. Lichtquellen tragen dann meist einen Lichtschleier, der andere Objekte überblendet. Augenscheinlich geschieht bei aktivem HDR-Rendering genau dasselbe. HDR-Rendering ist aber weit mehr - und das Bild wird nicht weichgezeichnet.

Steigen wir etwas tiefer in die Materie ein: Jeder von Euch weiß, dass man nicht direkt in die Sonne schauen sollte und dass es im Skiurlaub von Vorteil ist, eine Sonnenbrille zu tragen. Das Sonnenlicht hat einfach eine sehr große Intensität und Schnee reflektiert dieses Licht fast vollständig. Deshalb kneift man auch die Augen zu, wenn man die Skihütte verlässt und sich vor Einem die schneebeckte Berglandschaft eröffnet. Das krasse Gegenteil wäre eine finstere Höhle, wo nur sehr begrenzt Licht einfällt. Das Auge benötigt hier einige Momente, bis Umrisse und schließlich auch Oberflächen sichtbar werden.
In Zahlen gemessen kann das Auge Helligkeiten von 10^-5 cd/m² (Schatten bei Sternenlicht) bis 10^5 cd/m² (Schnee bei Sonneneinstrahlung) unterscheiden (cd steht für Candela). Das ist ein Bereich der 10 Größenordnungen bzw. 10^10 = 10 Milliarden abdeckt.
Eigentlich enorm, wie empfindlich unser Auge auf Helligkeitsunterschiede reagiert.

Ein typischer Computerbildschirm, z.b. ein Röhrenmonitor, kann dagegen bei der Darstellung nur Helligkeiten von 1 bis 100 cd/m² unterscheiden, gerade mal ein Bereich von 2 Größenordnungen bzw. 10^2 = 100.
Ebenso arbeiten Grafikkarten ohne HDR auch nur mit 8 Bit = 256 verschiedenen Helligkeitsstufen für jeden Farbkanal. So kommt es dann auch zur typischen Farbtiefe von 24 Bit, drei Farbkanäle rot, grün und blau mit je 8 Bit.

Jedes Spiel ohne HDR bietet also nur einen Helligkeitsraum, auch Dynamikumfang genannt, von gerade mal 2 Größenordnungen, während das menschliche Auge satte 10 Größenordnungen erfassen kann. Das menschliche Auge nimmt also 8 Größenordnungen mehr bzw. 100 Millionen mal feiner Helligkeiten wahr als von einer Grafikkarte ohne HDR berechnet werden kann

HDR setzt nun genau hier an. Es werden je Farbkanal nun statt 256 verschiedenen Helligkeitsabstufungen bis zu 2^32 = 4 Milliarden Abstufungen zur Verfügung gestellt (9 Größenordnungen). Diese Genauigkeit wird auch fp32 genannt, also 32 Bit je Farbkanal.
Bei Nvidia steht alternativ fp16, bei ATI bisher ausschließlich fp24 zur Verfügung. fp16 berücksichtig immerhin noch einen Dynamikumfang von 5 Größenordnungen (65536 Helligkeitsabstufungen).

Da der PC Bildschirm ja nur nur 100 Helligkeitsabstufungen wiedergeben kann, wird das fertig berechnete Bild per sogenanntem Tone-Mapping auf 8 Bit je Farbkanal runtergerechnet, woraus wieder die oben genannten 24 Bit Farbtiefe resultieren (bei 32 Bit Farbtiefe hat man noch einen vierten Farbkanal für die Transparenz).

Allerdings wurde bei den Berechnungen ein viel größerer Dynamikumfang berücksichtig. So kann es sein, dass die berechnete Szene eine Höhle darstellt mit unbeleuchteten Wänden und einem Riss in der Höhlendecke, wo die Sonne durchscheint. An der Stelle, wo die Sonne durchscheint, ist das Licht mehrere Millionen mal intensiver (6 Größenordnungen und mehr) als auf der unbeleuchteten Höhlenwand.
Beim Runterrechnen wird man deshalb in dem Bereich, wo das Licht einfällt viel weiß vorfinden, während man die Höhlenwand immer noch in all seinen Nuancen sieht.

Es ist nun auch möglich, das fertig berechnete Bild nur ganz langsam in den darstellbaren Farbbereich zu verschieben. Betritt man nun z.b. das Freie, nachdem man eine Weile in der dunklen Höhle sein Unwesen getrieben hat, wird der Bildschirm für einen Moment weiß sein, bis die Konturen und Oberflächen wieder sichtbar werden. Unser virtueller Protagonist kneift sozusagen die Augen zu, weil er geblendet wird. Umgekehrt ist natürlich das gleiche möglich, beim Betreten einer Höhle ist erstmal alles schwarz, allmählich werden aber Details sichtbar. Dieser Vorgang wird in der Biologie Adaption genannt.

Außerdem hat der größere Dynamikumfang noch einen weiteren Vorteil. Dadurch, dass genauer gerechnet wird, sind die immer komplexer werdenden Shader-Programme weniger anfällig für Rundungsfehler, welche sich als scheinbare Grafikfehler äußern können.

Möchte man eine Szene realistisch abbilden, so kommt man um HDR nicht herum. Erst mit HDR kann man so viele Helligkeitsnuancen beim Rendern eines Bildes berücksichtigen, wie es auch das menschliche Auge tut. Das einzige, was noch zur perfekten Wiedergabe einer realistischen Szene fehlt, ist ein Bildschirm, der die Helligkeit der Sonne erreicht ;).

Links zum Thema:P.S.: Auf technische Details zur Realisierung von HDR wollte ich hier nicht eingehen. Nur soviel: Echtes HDR ist mit ATI Hardware bisher noch nicht möglich, es fehlen einige wichtige fp-Einheiten (fp16-Blender, fp16-Textureinheiten), außerdem ist der Framebuffer bei ATI nicht fp-fähig.
 
Antialiasing

Antialiasing kann in Zusammenhang mit Grafikkarten und 3D-Rendering als Kantenglättung übersetzt werden. Kantenglättung ist deshalb notwendig, weil bei der Bilderzeugung störende, so genannte Treppeneffekte auftreten. Dies liegt daran, dass geometrische Figuren bzw. Körper auf ein Bild mit einer bestimmten Auflösung nicht beliebig genau abgebildet werden können.
Ein Kreis zum Beispiel ist auf einem Bild mit einer Auflösung von 4x4 Pixeln nur noch schemenhaft erkennbar, aber ganz sicher nicht mehr rund. Die Verluste, die durch diese Digitalisierung (Abbildung einer unendlichen, kontinuierlichen Menge, z.b. eines Kreises, auf eine abzählbare, diskrete Menge, z.b. ein Bild mit einer Auflösung von 4x4 Pixeln), nennt man Aliasing. Die Informationen, die so verloren gehen, werden durch Antialiasing zum Teil bewahrt, fließen also mit in das endgültige Bild ein.
Um sich ein Bild davon zu machen, wie sich die Digitalisierung konkret auswirkt, habe ich zwei Grafiken erstellt. Das Szenario ist die Kante eines kunterbunten Hauses im Teletubbie-Land ;). Dabei treffen eine blaue Himmelsfläche und ein gelbes Hausdach zusammen. Die kleinen Quadrate im Bild stehen für die Pixel des zu berechnenden Bildes:

kante3gr.gif
pfeil21im.gif
kantefilled5hu.gif

Kante eines Hausdachs wird auf ein Raster mit geringer Auflösung abgebildet

Man sieht wie die glatte Hauskante durch die geringe Auflösung sehr pixelig wird. Das ist der am Anfang erwähnte Treppeneffekt.
Antialiasing glättet nun die Kante, indem die Pixel entlang der Pixelkante so mit einer Farbe gefüllt werden, dass der ungefähre Kantenverlauf wieder angenähert wird. Dabei setzt sich die neue Farbe aus dem Blau des Himmels und dem Gelb des Hausdaches zusammen.

kantefilled5hu.gif
pfeil21im.gif
kantefilledaa7so.gif

Antialiasing/Kantenglättung entlang des Dachkante

Die neue Kante wirkt deutlich glatter, obwohl die Bildauflösung nicht geändert wurde. Wenn die Pixel entsprechend klein sind, dann fällt auch der Farbübergang kaum auf. Nur hier habe ich bewusst sehr große Pixel gewählt, um den Effekt zu veranschaulichen.

Man unterscheidet bei Grafikkarten in erster Linie zwei Typen von Antialiasing:
- Multisampling-Antialiasing (MSAA)
- Supersampling-Antialiasing (SSAA)
Die folgenden Abschnitte befassen sich mit den zwei Antialiasing-Verfahren im Detail.


Multisampling-Antialiasing (MSAA)

Beim Multisampling-Antialiasing (MSAA) werden nur Objektkanten geglättet, keine Kanten innerhalb von Texturen, auch nicht von Texturen mit Transparenzanteil. Zäune beispielsweise, die nur aus einer teilweise transparenten Textur bestehen, werden also nicht vom MSAA behandelt.
Beim MSAA wird im Anschluss an die eigentlichen Pixelberechnungen (Texturierung, Shadereffekte, etc.) jedes Bildpixel in weitere Pixel, sogenannte Subpixel unterteilt.

subpixel4vm.gif

Unterteilung eines Bildpunktes in Unterpixel/Subpixel

Auf diese Subpixel wird eine sogenannte Subpixelmaske gelegt. Je nachdem, welche Antialiasing-Stufe eingestellt wird, enthält diese Maske 2,4, 6 oder noch mehr Referenzpunkte. Bei 4-fachem Antialiasing sind 4 dieser Referenzpunkte vorhanden.

onepixelsparsed2xd.gif

Subpixelmaske für 4xMSAA mit rot markierten Referenzpunkten

Nun wird geprüft, wieviele dieser Referenzpunkte innerhalb eines bestimmten Objekts liegen. Bei unserem Beispiel liegen z.b. 2 Punkte innerhalb des gelben Daches, also unterhalb der Dachkante, und zwei Pixel liegen im Bereich des Himmels oberhalb der Dachkante. Der Farbwert dieses einen Pixels setzt sich nun zusammen aus zwei Anteilen der Himmelsfarbe Blau und zwei Anteilen der Dachfarbe Gelb. Würde nur ein Referenzpunkt innerhalb der Daches liegen, würde die endgültige Pixelfarbe aus dreimal Blau und einmal Gelb bestehen.

onepixelsparsed2xd.gif
pfeil1jr.gif
onepixelcolor0qo.gif

Bestimmung der endgültigen Pixelfarbe

Die Positionen der Referenzpunkte innerhalb der Subpixelmaske und die Gestalt der Subpixelmaske können ganz unterschiedlich ausfallen. Hierbei fallen Begriffe wie "sparse grid", "ordered grid" oder "rotated grid" an. Hierauf wollte ich jetzt aber nicht genauer eingehen, wer Interesse am Thema gewonnen hat, schaut sich am Besten die weiter unten gelinkten Seiten an. Insbesondere auf den Artikel von 3DCenter.de sei an dieser Stelle hingewiesen.


Supersampling-Antialiasing (SSAA)

Beim Supersampling-Antialiasing (SSAA) wird intern effektiv mit einer höheren Auflösung gerechnet, indem alle Pixelberechnungen wie Texturierung oder Shader-Effekte auf Subpixel-Ebene efolgen (Erklärung zu Subpixel siehe Abschnitt "Multisampling"). Das endgültige Bild hat natürlich nur noch die Auflösung, die durch die realen Pixel vorgegeben wird. Beim SSAA werden nicht nur Kanten von Objekten geglättet, sondern auch sämtlich Kanten innerhalb von Texturen. Auch Zäune, die aus teilweise transparenten Texturen bestehen, werden so geglättet.
Beim 2x2 SSAA wird für die Höhe und für die Breite des Bildes bei sämtlichen Berechnungen intern die doppelte Größe verwendet. Aus 1024x768 werden so 2048x1536. Bei Nvidia-Karten ist mit Hilfe spezieller Tools bis zu 4x4 SSAA bei einer Auflösung von 1024x768 möglich, intern wird dann also mit 4096x3072 gerechnet. Dies kostet verständlicherweise sehr viel Leistung und ist in aktuellen Spielen nur mit einem SLI-Verband aus zwei High-End-Grafikkarten (GeForce 7800 GT/GTX) bei brauchbarer Performance nutzbar - wenn überhaupt.

kantedoubleresfilled7kj.gif
pfeil21im.gif
kantedoubleresfilledsmall5fp.gif

Bild wird intern mit doppelter Auflösung berechnet, aber mit normaler Auflösung ausgegeben

kantefilledsmall8pz.gif
kantedoubleresfilledsmall5fp.gif

Bild in normaler Auflösung, links ohne Antialiasing, rechts mit SSAA

Links zum Thema
 

Grey

B.J. Blazkowicz
zwei ergänzende links:

Allgemein:
- http://users.erols.com/chare/video.htm
3D Chipset Specs - alle existierenden Grafikkarten in einer Tabelle wenn man mal die spezifikationen auf einen blick haben möchte, oder einfach mal nach specs bestimmter karten sucht.



High Dynamic Range realtime Demo:
- http://www.daionet.gr.jp/~masa/rthdribl/
eine demo mit verschiedenen impressionen zum HDR Rendering mit verschiedenen materials und enviroments sowie lightning techniken.
 

Grey

B.J. Blazkowicz
jo stimmt, sorry.

vielleicht wärs gut die gesammten links im ersten post thematisch zu sortieren.
 

Burzum

Fiend
Ein Forum ist imo äußerst ungeeignet hierfür.

Setz irgendwo ein Wiki auf? Frag doch bei 3dcenter.de z.B. an ob die dir ein Wiki stellen wenn Du selbst keinen Webspace mit php/mysql hast.

Ansonsten: Das kostet 2-3 Eu im Monat.
 
Top