- Seit
- 15 Aug 2001
- Beiträge
- 1.668
Der Titel klingt beklopt.
So ist es aber.
Das was die nex-gen Konsolen vormachen (Motion-Blur, etc....), wird den PC erst jetzt durch den Vertex Shader beigebracht.
Damit man die Technologie versteht, muß man als erstes wißen was ein Vertex ist.
Für einen Laien erklärt ist ein Vertex ein Atom einer 3d-Szene.
Ein Vertex ist der Stützpunkt eines Polygons.
Jede Linie in dem Model der Kahne verbindet einen Vertex mit dem anderen.
Dieser Vertex enthält verschiedene Atribute:
x,y,z Koodinaten; RGBA (Rot, Grün, Blau, Alpha), Gewicht(!), Größe.
Der Vertex Shader macht eigentlich, daß was man sich einfach vorstellen kann, wofür Grafikindustrie aber 4 Jahre bräuchte.
Er verändert diese Atribute (Maße, Farbe, Größe,....), ohne den CPU zu belasten, also eine Erweiterung, der T&L Einheit des GPUs.
Und jetzt kann man die Gestalt einen ganzen Objekts verändern, daß heißt jetzt tatsächlich in Echtzeit das Objekt morphen (!!!), das zeigt NVIDIA mit einem Delphin
Man hat der GPU nur die Keyframes gegeben der Animationen dazwischen hat der Vertex Shader berechnet. Geil, was?
Der Vertex Shader kann natürlich außer Morphing noch:
Interpolation,
Reflektionen,
Veränderung der Oberfläche,
Motion Blur (oder das was es sein soll, dazu aber später noch)
Leider ist das nicht so grenzenlos, wie es NVIDIA den Usern sagt. Die Befehle im Shader sind nämlic auf 128 Stück begrenzt.
--------------------------------------------
Der Shader im Detail:
Dieses Blockschaltbild zeigt, dass der Vertex Shader Eckpunkte mit bis zu 16 Dateneinträgen verarbeiten kann. Jeder Eintrag besteht aus 4 Fließkommazahlen (128 Bit). Dies reicht für einen Vertex mit Koordinaten, Gewicht, Normale, Farbe, Nebel und Größeninformationen aus. Dabei ist noch genug Platz für die Koordinaten verschiedener Texturen.
Wie sich aus dem Bild und der Beschreibung erkennen lässt, ist der Vertex Shader ein SIMD (single instruction multiple data) Prozessor. Bei jeden verarbeiteten Befehl löst er 4 Variablen aus. Die meisten Transform & Lighting-Operationen bestehen aus einer 4x4 oder einer 3x3 Matrix. Generell werden alle Daten als Floating-Point-Werte verarbeitet. Der Vertex Shader kann daher mit einer leistungsfähigen SIMD FPU verglichen werden, die in ähnlicher Form auch im Pentium III oder Pentium 4 vorkommt.
Als nächstes wichtiges Feature sind die 12 SIMD-Register zu nennen, die ebenfalls 4 Floating-Point-Werte (128 Bit) beinhalten können. Neben diesen 12 Registern, die vielseitig verwendbar sind, bietet der Vertex Shader 96 4 x 128-bit SIMD Konstanten, die als fixe Parameter vom Programmierer vor dem Start einer jeden Routine festlegt werden können. Diese Konstanten können innerhalb der Routine benutzt und indirekt adressiert werden. Allerdings steht nur eine Konstante pro Befehl zur Verfügung. Will man mehr als eine Konstante pro Befehl nutzen, so muss zuerst eine in ein Register geladen werden und zwar mit einem vorherigen Ladebefehl. Typische Anwendung findet dieser Vorgang zum Beispiel bei Matrixdaten (üblicherweise 4x4 Matrix), Lichteinwirkungen, spezielle Animationen, Vertex Interpolation (Morphing, Key Frame Interpolation), Zeit (für Key Frame Interpolation und Teilsysteme). Das endgültige Resultat ist ein Vertex, dass nach Durchlaufen im Vertex Shader transformiert und beleuchtet ist. Es sei angemerkt, dass der Vertex Shader keine Vertices erzeugen oder zerstören kann. Ein Vertex geht hinein und kommt im bearbeiteten Zustand heraus.
--------------------------------------------
Jetzt kommen wir aber zu den Ergebnissen dieser tollen, unglaublichen erffindung von NVIDIA:
Gesichter, Kleidung und Bewegungen können jetzt super-realistisch dargestellt werden.
Für Animationen benutzte man früher 2 Matrizen pro Vertex. Der Shader erlaubt jetzt 32 pro Vertex.
Dieses Beispiel basiert auf 20 Matrizen pro Vertex (20-Matrix-Skinning):
Dynamische Verzerrungen:
Lichtbrechungen:
Reflektionen:
Mehrschichtiger Nebel (Layered Fog):
Per-Vertex-Motion-Blur:
NAJA :-?
Weitere Effekte:
Kreation von realitätstreuen Fellen bei Tieren.
Partikelsysteme können unabhängig von der CPU laufen.
Durch Mesh Blending lassen sich Lichtbrechungen unter der Wasseroberfläche berechen.
Doppelseitige Lichtquellen erlauben unterschiedliche Lichtcharakteristiken auf der Vorder- und Rückseite eines Dreiecks.
Silhouetten-Rendering, Membrane Lighting, Rainbow Rendering, Anisotropic Lighting, Toon Shading.
"Perlin"-Rauschen gehört sicherlich zu den populärsten Funktionen für Rauschen (Noise). Damit lassen sich leicht Wolken, Nebelschwaden, Feuer usw. erzeugen.
Der Vertex Shader des GeForce3 unterstützt diese Funktionen hardwareseitig, also ohne nennenswerte Belastung der CPU.
Viele Point Lights (Punktlichtquellen). Gegenüber DirectX 7 sind mehr als 8 Lichtquellen möglich. So sind 17 diffuse Lichter möglich.
Der limitierende Faktor ist aber wieder die Beschränkung auf 128 Instruktionen.
Das einzige Problem ist aber das Programmieren für den Vertex Shader.
Es braucht viel Zeit (Wir kennen ja die tollen PC-Programmiere. Die brauchen schon für ein Spiel ohne VS 4 Jahre)
Wir werden sehen wie lange es dauern wird, bis der Vertex Shader standart wird.
Bis das erste Spiel die T&L Engine nutzte vergingen ja 18 Monate nach Einführung der GeForce256.
_________________
http://nav.to/masterfusion
Master Fusion - the developer's gathering
<font size=-1>[ Diese Nachricht wurde geändert von: Adam am 2001-09-15 17:27 ]</font>
So ist es aber.
Das was die nex-gen Konsolen vormachen (Motion-Blur, etc....), wird den PC erst jetzt durch den Vertex Shader beigebracht.
Damit man die Technologie versteht, muß man als erstes wißen was ein Vertex ist.
Für einen Laien erklärt ist ein Vertex ein Atom einer 3d-Szene.
Ein Vertex ist der Stützpunkt eines Polygons.
Jede Linie in dem Model der Kahne verbindet einen Vertex mit dem anderen.
Dieser Vertex enthält verschiedene Atribute:
x,y,z Koodinaten; RGBA (Rot, Grün, Blau, Alpha), Gewicht(!), Größe.
Der Vertex Shader macht eigentlich, daß was man sich einfach vorstellen kann, wofür Grafikindustrie aber 4 Jahre bräuchte.
Er verändert diese Atribute (Maße, Farbe, Größe,....), ohne den CPU zu belasten, also eine Erweiterung, der T&L Einheit des GPUs.
Und jetzt kann man die Gestalt einen ganzen Objekts verändern, daß heißt jetzt tatsächlich in Echtzeit das Objekt morphen (!!!), das zeigt NVIDIA mit einem Delphin
Man hat der GPU nur die Keyframes gegeben der Animationen dazwischen hat der Vertex Shader berechnet. Geil, was?
Der Vertex Shader kann natürlich außer Morphing noch:
Interpolation,
Reflektionen,
Veränderung der Oberfläche,
Motion Blur (oder das was es sein soll, dazu aber später noch)
Leider ist das nicht so grenzenlos, wie es NVIDIA den Usern sagt. Die Befehle im Shader sind nämlic auf 128 Stück begrenzt.
--------------------------------------------
Der Shader im Detail:
Dieses Blockschaltbild zeigt, dass der Vertex Shader Eckpunkte mit bis zu 16 Dateneinträgen verarbeiten kann. Jeder Eintrag besteht aus 4 Fließkommazahlen (128 Bit). Dies reicht für einen Vertex mit Koordinaten, Gewicht, Normale, Farbe, Nebel und Größeninformationen aus. Dabei ist noch genug Platz für die Koordinaten verschiedener Texturen.
Wie sich aus dem Bild und der Beschreibung erkennen lässt, ist der Vertex Shader ein SIMD (single instruction multiple data) Prozessor. Bei jeden verarbeiteten Befehl löst er 4 Variablen aus. Die meisten Transform & Lighting-Operationen bestehen aus einer 4x4 oder einer 3x3 Matrix. Generell werden alle Daten als Floating-Point-Werte verarbeitet. Der Vertex Shader kann daher mit einer leistungsfähigen SIMD FPU verglichen werden, die in ähnlicher Form auch im Pentium III oder Pentium 4 vorkommt.
Als nächstes wichtiges Feature sind die 12 SIMD-Register zu nennen, die ebenfalls 4 Floating-Point-Werte (128 Bit) beinhalten können. Neben diesen 12 Registern, die vielseitig verwendbar sind, bietet der Vertex Shader 96 4 x 128-bit SIMD Konstanten, die als fixe Parameter vom Programmierer vor dem Start einer jeden Routine festlegt werden können. Diese Konstanten können innerhalb der Routine benutzt und indirekt adressiert werden. Allerdings steht nur eine Konstante pro Befehl zur Verfügung. Will man mehr als eine Konstante pro Befehl nutzen, so muss zuerst eine in ein Register geladen werden und zwar mit einem vorherigen Ladebefehl. Typische Anwendung findet dieser Vorgang zum Beispiel bei Matrixdaten (üblicherweise 4x4 Matrix), Lichteinwirkungen, spezielle Animationen, Vertex Interpolation (Morphing, Key Frame Interpolation), Zeit (für Key Frame Interpolation und Teilsysteme). Das endgültige Resultat ist ein Vertex, dass nach Durchlaufen im Vertex Shader transformiert und beleuchtet ist. Es sei angemerkt, dass der Vertex Shader keine Vertices erzeugen oder zerstören kann. Ein Vertex geht hinein und kommt im bearbeiteten Zustand heraus.
--------------------------------------------
Jetzt kommen wir aber zu den Ergebnissen dieser tollen, unglaublichen erffindung von NVIDIA:
Gesichter, Kleidung und Bewegungen können jetzt super-realistisch dargestellt werden.
Für Animationen benutzte man früher 2 Matrizen pro Vertex. Der Shader erlaubt jetzt 32 pro Vertex.
Dieses Beispiel basiert auf 20 Matrizen pro Vertex (20-Matrix-Skinning):
Dynamische Verzerrungen:
Lichtbrechungen:
Reflektionen:
Mehrschichtiger Nebel (Layered Fog):
Per-Vertex-Motion-Blur:
NAJA :-?
Weitere Effekte:
Kreation von realitätstreuen Fellen bei Tieren.
Partikelsysteme können unabhängig von der CPU laufen.
Durch Mesh Blending lassen sich Lichtbrechungen unter der Wasseroberfläche berechen.
Doppelseitige Lichtquellen erlauben unterschiedliche Lichtcharakteristiken auf der Vorder- und Rückseite eines Dreiecks.
Silhouetten-Rendering, Membrane Lighting, Rainbow Rendering, Anisotropic Lighting, Toon Shading.
"Perlin"-Rauschen gehört sicherlich zu den populärsten Funktionen für Rauschen (Noise). Damit lassen sich leicht Wolken, Nebelschwaden, Feuer usw. erzeugen.
Der Vertex Shader des GeForce3 unterstützt diese Funktionen hardwareseitig, also ohne nennenswerte Belastung der CPU.
Viele Point Lights (Punktlichtquellen). Gegenüber DirectX 7 sind mehr als 8 Lichtquellen möglich. So sind 17 diffuse Lichter möglich.
Der limitierende Faktor ist aber wieder die Beschränkung auf 128 Instruktionen.
Das einzige Problem ist aber das Programmieren für den Vertex Shader.
Es braucht viel Zeit (Wir kennen ja die tollen PC-Programmiere. Die brauchen schon für ein Spiel ohne VS 4 Jahre)
Wir werden sehen wie lange es dauern wird, bis der Vertex Shader standart wird.
Bis das erste Spiel die T&L Engine nutzte vergingen ja 18 Monate nach Einführung der GeForce256.
_________________
http://nav.to/masterfusion
Master Fusion - the developer's gathering
<font size=-1>[ Diese Nachricht wurde geändert von: Adam am 2001-09-15 17:27 ]</font>