Sie sind auf Seite 1von 6

Bie

uiafikpipe-
line
Eine kuize Beschieibung uei
uiafikpipeline
uanlel MargrelLer
LLp//wwwdanlelmargrelLercom

Die Grafikpipeline

Als erstes werde ich erklren was ein Shader Model ist, welche
Sprachen es fr Shader gibt und danach werde ich auf die Grafikpipeline
eingehen.

Shader Model (SM)
Ein SM beschreibt welche Shader man zur Verfgung hat.
Ein Shader ist ein Teil auf der Pipeline den man nicht nur konfigurieren
kann, sondern fr den man kleine Programme schreiben kann. Diese
Programme wirken sich dann, je nach dem welcher Shader, auf Pixel
oder Vertices aus.
Vertices ist die Mehrzahl von Vertex und dies sind die Eckpunkte der
Primitves. Primitives sind die kleinsten Einheiten, die die Grafikkarte
darstellen kann (z.B. Punkt, Dreiecke).
Hier die letzten vier Versionen des SMs:
SM 2.0 Vertex und Pixel Shader
SM 3.0 Vertex und Pixel Shader
SM 4.0 Vertex, Geometry und Pixel Shader
SM 5.0 Vertex, Geometry, Pixel, Hull und Domain Shader

Shader Sprachen
Frher wurden die Programme noch in Assembler geschrieben. Heute
gibt es dafr mehrere Sprachen. Die zwei bekanntesten sind sicherlich
GLSL (fr OpenGL) und HLSL (fr DirectX). Es gibt noch eine weitere
interessante Sprache, Cg (C for Graphics), die von NVidia in
Kooperation mit Microsoft entworfen wurde. Cg kann man als GLSL oder
HLSL kompilieren. Die Sprache selbst ist an HLSL angelehnt und man
kann damit Vertex oder Pixel Shader schreiben.
LLp//wwwdanlelmargrelLercom


XNA 4.0 und SMs
XNA untersttzt zwei verschiedene Modi.
Das erste ist das Reach Profile, in diesem Profil wird das SM 2.0
untersttzt. Man sollte aber beachten, dass WP7 keine Custom Shader
untersttzt, sprich man kann keine eigenen Shader dafr schreiben.
Das HiDef Profil untersttzt SM 3.0+. Das + (Plus) bedeutet nur, dass
die Xbox 360 das SM 3.0 und noch ein paar spezielle Sachen mehr hat.
Reach SM 2.0 WP7, Xbox 360 und Windows mit einer
DX9 Grafikkarte oder hher
HiDef SM 3.0+ Xbox 360 und Windows mit einer DX10
Grafikkarte oder hher

OpenGL und SMs
OpenGL kann man nicht direkt einem SM zuordnen, da nicht immer die
gleichen Features implementiert werden. Folgende SM sind mit
folgenden Versionen eingefhrt worden:
D3D 9.0c OpenGL 3.0/GLSL 1.30 SM 3.0
D3D 10 OpenGL 3.3/GLSL 3.30 SM 4.0
D3D 11 OpenGL 4.1/GLSL 4.10 SM 5.0

Warum eine Pipeline?
Man Teilt ein System in mehrere Schritte einer Pipeline, damit man mehr
Performance bekommt. Eine Pipeline ist aber immer nur so schnell, wie
das langsamste Glied. n Station eins kann so lange nichts nachgefllt
werden, solange die Sachen in Station zehn nicht fertig sind. Prinzipiell
erhlt man aber bei einer Pipeline mit n Schritten eine
Geschwindigkeitsbeschleunigung vom Faktor n.
ch vergleiche das Ganze mal mit einem Flieband wo Autos produziert
werden. Nehmen wir an, dass jede Station ca. eine Minute dauert, bis
LLp//wwwdanlelmargrelLercom

auf die Autotrmontage, die dauert ca. zwei Minuten. Es kann also nur
alle zwei Minuten ein fertiges Auto entstehen, das heit, die anderen
Stationen mssen immer eine Minute ruhen.
OK, ich hoffe das ist soweit klar und gehe jetzt mal auf die Begriffe des
Graphikfliebandes ein.

Der Weg der Grafikpipeline geht ber.
AppIication Stage -> Geometry Stage -> Rasterize Stage -> DispIay

1. Die AppIication Stage
n der Application Stage werden Berechnungen gemacht wie die
Kollisionserkennung, Steering Behaviours und A, die dann ein
neurendern zufolge haben. Alle Operationen die auf der CPU laufen,
gehren zur Application Stage.

2. Die Geometry Stage
Die Geometry Stage kann man noch einmal in Subkategorien aufteilen.
Folgende Stationen gibt es:
Model & View Transformation -> Vertex Shading -> Projection ->
Clipping -> Screen Mapping
O Model & View Transformation
n diesem Bereich wird vom Model Space in den World Space
umgerechnet und vom World Space in den View Space. Der Model
Space ist das Koordinatensystem des Models. Dieses Model muss
in Weltkoordinaten umgerechnet werden. Das Ganze rechnet man
mittels Matrizen um. Wenn man alles in den World Space bersetzt
hat, wird nun alles in den View Space konvertiert. Der View Space
hat den Ursprung bei der Kamera.
O Vertex Shading (programmierbar)
LLp//wwwdanlelmargrelLercom

Hier laufen die selbst programmierten Vertex Shader. Vertex
Shader werden auf die einzelnen Vertices eines Meshes
angewandt. Ein Beispiel wo der Vertex Shader verwendet wird,
wren sogenannte Clothes (Kleidung von Charakteren)
O Hull Shading und Domain Shading
Hull und Domain Shader werden fr Tessellation verwendet.
Tesselation kann aus Low Poly Objekten ,High Poly" Objekte
machen.
O Geometry Shading (programmierbar)
Hier laufen die selbst programmierten Geometry Shader. Hier
knnen neue Primitives (Punkt, Linien oder Dreiecke) hinzugefgt
werden. Beispiel wre hier Parallax Occlusion Mapping POM.
O Stream Out (programmierbar)
Der Stream Out ist dazu da, dass man die restlichen Stationen
umgehen kann und so an Overhead spart, da man nicht durch die
ganzen Pixeloperationen gehen muss.
O Projection (konfigurierbar)
Es wird bestimmt ob es ein perspektives oder ein paralleles (zb.
Orthographisches) Verfahren sein soll. Das perspektive Verfahren
sieht so aus, je weiter entfernt ein Objekt ist, desto kleiner wird es.
Beim orthographischen Verfahren, ist das Objekt immer gleich
gro. Alle Koordinaten werden vom Viewvolume und den darauf
angewandten Shadern neu berechnet. Es entsteht ein Unit Cube
von -1 bis +1.
O Clipping (konfigurierbar)
Hier werden alle Vertices die ber den Projectionrand stehen
abgeschnitten und es werden am Schnitt neue Vertices gesetzt.
O Screen Mapping (nicht beeinflussbar)
Hier wird das Bild an das Ausgabefenster angepasst. Direct3D 9
und die Vorgnger hatten immer [0,0] im Screenmittelpunkt. Seit
Direct3D 10 ist die linke obere Ecke [0,0]. Bei OpenGL ist es die
LLp//wwwdanlelmargrelLercom

linke untere Ecke. XNA basiert auf Direct3D 9. Die Koordinaten
gehen von x
1
bis x
2
und y
1
bis y
2
, wobei x
1
<x
2
und y
1
<y
2
.

. Rasterize Stage
Auch die Rasterizer Stage hat mehrere Stationen, die wie folgt lauten:
Triangle Setup -> Triangle Traversal -> Pixel Shader -> Merger
O Triangle Setup (nicht beeinflussbar)
Hier werden die Daten fr die Dreiecksoberflchen berechnet. Alle
Daten kommen von der Geometry Stage.
O Triangle Traversal / Scan Conversion (nicht beeinflussbar)
Hier wird jeder Pixel, der ber die Hlfte von einem Dreieck
berdeckt ist, diesem Dreieck zugewiesen.
O Pixel Shader (programmierbar)
Hier luft der selbst programmierte Pixel Shader. Ein Pixel Shader
wird auf einzelne Pixel, wie der Name schon sagt, angewandt. Ein
Beispiel fr einen Pixel Shader wre Bloom oder Depth of Field.
O Merger (konfigurierbar)
Hier werden, wie uns Merger schon sagt, bestimmte Sachen
zusammengefhrt. Die verschiedenen Farben aus den Shadern
und den Buffern werden hier zusammengebracht. Buffer wie der
Depth/Z Buffer, Stencil Buffer oder der Frame/Accumulation
Buffer.

Noch ein abschlieender Satz zur Grafikpipeline.
Wenn man gar nichts programmieren oder konfigurieren kann, nennt
man das eine fixed function pipeline. Es gibt auch heute noch eine
Konsole die eine fixed function pipeline besitzt und zwar die Wii.