Pixel Shader - die zweite Stufe

Status
Nicht offen für weitere Antworten.

Lord Hectic

L11: Insane
Thread-Ersteller
Seit
15 Aug 2001
Beiträge
1.668
Nach dem Vertex Shader kommt jetzt der Pixel Shader.
Dieser rendert jetzt die Verticles, daß heißt gibt sie jetzt auf dem Monitor aus.

Nachdem also die Verticles (Vertex plural) den Vertex Shader verlassen haben (transformiert und beleuchtet) wird jetzt das Clipping angewandt.
Das heißt alle Verticles außerhalb der Szene (außerhalb des Monitors) verschwinden (eine ähnliche Technik, die die Kyro schon genutzt hat).

Nun kommen die Verticles zum Triangle Setup und aus dem Vertex wird ein Pixel.
Hier findet auch der Wechsel einer 3D-Szene von "real 3D" zu 2D statt. Der Monitor erlaubt nur eine zweidimensionale Darstellung, deshalb muss das endgültige Frame (Szene) auch in 2D vorliegen.
Das Triangle Setup berechnet Dreieck für Dreieck die Parameter, die für die Rasterung der Dreiecke nötig sind. Es bestimmt vor allem die Pixelkoordianten für die Umrisse der Dreiecke. Das bedeutet, dass der erste und letzte Pixel eines Dreiecks definiert werden - Scanline für Scanline.

So könnte das jetzt aussehen.
trinaglesetup.jpg


trinaglesetup2.jpg

Jetzt werden noch die restlichen Pixel durch den Ratserizer gefühlt.

Zu diesem Zeitpunkt besteht das Dreieck nur noch zweidimensional. Dennoch hat jeder Pixel noch einen Z-Wert (Tiefeninformation), der durch die Rasterung jedes Pixels interpoliert wurde. Farbwerte und Texturkoordinaten müssen für jeden Pixel ebenfalls interpoliert werden. Dieser Vorgang geschieht in Abhängigkeit zu den Werten der drei Vertices, aus denen ein Dreieck besteht. Man sieht, dass der Triangle Setup/Rasterizer wirklich viel zu tun hat. Für jeden Pixel müssen viele Daten zur Rendering Pipeline geschickt werden. Der Triangle Setup/Rasterizer muss in der Lage sein, 4 Pixel/Takt an die vier Rendering Pipelines zu senden.

Die Pixellinien, die das Dreieck markieren, werden zur Pixel-Rendering-Engine geschickt. Im Falle des GeForce3 ist das der Pixel Shader. Damit zusammen wird die Z-Koordinate (Tiefe), die Farbe und Textur für jeden Pixel versendet.

Der GeForce3 hat noch eine weitere Zwischenstufe zwischen Triangle Setup und Pixel Shader, der Teil der Lightspeed Memory Architecure ist.

---------------------------------------------
Schema des Pixel Shaders

Der Rendervorgang:
pixelshader1.gif

Hier das Schema des Pixel Shaders.

Das was ich bis jetzt erklärt habe, war nur ein kleiner Teil. Aber das reicht erstmal aus um ihn einigermaßen zu verstehen.
Eigentlich war das auch seine Funktionsweise.
Das Schema kann man auch verstehen. Schätze ich mal.
Wer unbedingt mehr wißen will, kann bei http://tomshardware.de vorbeischauen.

---------------------------------------------
Was kann er jetzt aber in der Praxis?

DAS!:

Shadow Mapping

Schnellere Ladezeiten für Texturen
Verformung von Bildern, bis zu 8x8 symmetrische Kernels

Texturen mit 4096x4096 oder 512x512x512 Größe

Cube Map Sides bis zu 4096x4096 bei 32 Bit

YUYV Texturen (konvertiert nach RGB im Back End)

Full Image Mode Texture Support
Zeiger auf beliebiges Image, z.B. Back Buffer und Nutzung direkt als Textur

Border Colors und Border Textures

Hardware Read/Write Synchronization
Erlaubt Full Pipelining bei Mischung von Reads und Writes auf gleiche Texture Map.
Man kann auf den Back Buffer direkt rendern und gleich als Texture Map benutzen.

Passthrough Colors

DX6 Bump Environment/Luminance Mapping (cf "Environment Mapped Bump Mapping")

Simple Dependent Texture, S,T in alpha/red (AB) und blue/green (BG)

Isotropic Bi-Directional Reflectance Distribution Function based lighting (BRDF)

Dot product based Texturen für color oder Z

True reflective Bump Mapping (Blinn Bump Mapping)

--------------------------------------------
True Reflectiv Bumb Mapping

Alt aber trotzdem neu.
Der GeForce3 (der Chip, aber die GeFroce3 Graka :-D ) kann jetzt der gebumbten Oberfläche Reflektionen verpassen.
blinnbump.jpg


---------------------------------------------
Anti-Aniasing
Jaja. Anti-Aliasing isz schon eine Wißenschaft für sich deshalb mache ich dazu einen einzelnen Thread auf.

aa1.gif


Es gibt:
Super Sampling AA
Multi Sampling AA
und das neue High-Resolution AA
Das erkläre ich in einem anderen Thread.

Ich verstehe es bis jetzt nämlich selber nicht. :-D

--------------------------------------------
Fakten (auch Speicherbandbreiten) MF wird sich freuen

Der Pixel Shader hat bestimmte Ähnlichkeit mit dem NSR des GeForce2. Er kann zwei Texel pro Taktzyklus verarbeiten. Bei drei oder vier Texturen sind also zwei Taktzyklen erforderlich. Der GeForce3 wird wie der GeForce2 GTS mit 200 MHz getaktet.

Daraus ergeben sich folgende Pixel-Füllraten:

800 Mpixel/s für 1 bis 2 Texturen pro Pixel
400 Mpixel/s für 3 bis 4 Texturen pro Pixel

Die Texel-Füllraten betragen:

1.600 Mtexel/s bei 4 Texturen pro Pixel
1.600 Mtexel/s bei 2 Texturen pro Pixel
1.200 Mtexel/s bei 3 Texturen pro Pixel
800 Mtexel/s bei 1 Textur pro Pixel


Während der Pixel Shader zwei Texel pro Takt aufnehmen kann, erlaubt er bis zu vier Texturen pro Pass (Durchgang). Das ist ein wichtiger Unterschied, der zeigt, wie irreführend reine Füllraten-Zahlen sein können. Der NSR des GeForce kann nur zwei Texturen pro Pixel aufnehmen. Wenn man mehr verarbeiten möchte, müsste der Pixel durch einen anderen Rendering Pass gehen. Der GeForce3 Pixel Shader benötigt 2 Taktzyklen für 3 oder 4 Texturen, kann dies aber in nur einem Pass erledigen. Der große Unterschied ist, dass der GeForce3 nun wertvolle Speicherbandbreite spart, da er beim Speichern und Lesen der Farbwerte und Z-Werte nur einmal auf den Z-Buffer zugreifen muss. Der GeForce2 dagegen benötigt für seine 2 Passes auch 2 Zugriffe.

Wenn Spiele bei hohen Auflösungen und im 32-bit Modus betrieben werden, erreicht man die Grenzen der Bandbreite. Das theoretische Maximum beträgt beim GeForce3 für das Rendern von 3 oder 4 Texturen pro Pixel nur 2 (1 x lesen, 1x schreiben) * 200MHz/ 2 Clock Cycles * 8 byte (32-bit color + 32-bit Z), während der GeForce2 GTS doppelt so viel Bandbreite verschlingt. Daraus lassen sich nun folgende Angaben bestimmen:

Speicherbandbreiten der GeForce-Chips im Vergleich

1.600 MByte/s beim GeForce3
3.200 MByte/s beim GeForce2 GTS

Hinweis: weniger ist besser
Meint Tom's Hardware

Theoretische Füllraten hin oder her. Die Speicherbandbreiten beeinflussen die wahren Füllraten in der Praxis. Der GeForce3 hat eindeutig bessere Karten bei hohen Auflösungen.

---------------------------------------------
Was lernen wir jetzt daraus

Diese Karte wird nichts nützen, wenn man nicht die dazu passende Software hat. :(


_________________
http://nav.to/masterfusion
Master Fusion - the developer's gathering

<font size=-1>[ Diese Nachricht wurde geändert von: Adam am 2001-09-15 20:08 ]</font>
 
aha! :-D
@Adam: Ich wusste gar nicht, das du technisch so gut drauf bist!! :-D
 
MF & Phoenix sind hier nicht die einzigsten, die wißen was überhaupt in ihrem PC bzw. ihrer Konsole passiert.
 
Cube Map Sides bis zu 4096x4096 bei 32 Bit

YUYV Texturen (konvertiert nach RGB im Back End)

Full Image Mode Texture Support

Border Colors und Border Textures

Hardware Read/Write Synchronization

Passthrough Colors

DX6 Bump Environment/Luminance Mapping (cf "Environment Mapped Bump Mapping")

Simple Dependent Texture, S,T in alpha/red (AB) und blue/green (BG)

Isotropic Bi-Directional Reflectance Distribution Function based lighting (BRDF)

Dot product based Texturen für color oder Z

True reflective Bump Mapping (Blinn Bump Mapping)

:lol: Hört sich ja alles sehr professionell an, wie blöd nur, daß in der Praxis die PC Spiele trotzdem alle Mies aussehen :lol: :lol:.

Ich verstehe auch gar nicht, warum die Entwickler so viel Zeit in das Anti-Aliasing verschwenden. Am PC braucht man das eh nicht. Die hohen Auflösungen von 1024x768 oder mehr reichen völlig aus, da braucht man doch keine Kantenglättung mehr. Nur wenn man es schaffen würde, qualitativ richtig hochwertiges Anti-Aliasing zu benutzen, wie das im Moment nur bei Render-Programmen wie 3DS MAX der Fall ist, dann würde das sehr viel bringen. Aber glaube mir: Bildbearbeitungs-Programme benutzen ganz andere Techniken für AA als Spiele. Da kommt es ja auf die Sekunde auch nicht an. Ich weiß es ja, hab es ja selbst in FX Studio geproggt, und das sieht besser aus als jedes Supersampling-Verfahren oder sonst was :-D.
 
Die Markteinführung läuft natürlich sehr schlepend.
Einer der Gründe ist der übertriebene Preis der GeForce3.

Bis T&L marktfähig war und in den ersten Spielen verwendet wurde, vergingen 18(!!!) Monate.

Aquanox ist das erste Spiel, was es nutzt man aber trauriger Weise keine Verbesserung zu einer GeForce2 sieht.
Das heißt, daß es wohl auch noch bis zu 1 Jahr dauern kann, bis der PC wieder einen OHHH-Effekt haben wird, wie es im Jahre '97 war und wie es jetzt durch die PS2 ist.
 
T&L kann auch die Xbox!! :p :p
Aber nicht die Ps2!! :p :p :p
*HILFE!!* :-D
 
Status
Nicht offen für weitere Antworten.
Zurück
Top Bottom