31.10.2013 Aufrufe

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2.5. GPU PROGRAMMIERUNG 18<br />

anschließend in Bildschirmkoordinaten (Projectionmatrix) umgerechnet. Im<br />

Verlauf des Shaders muss dabei gl Position mit den neuen transformierten<br />

Vertex-Attributen gefüllt werden. Das Vertexshader-Programm wird für jeden<br />

Vertex einzeln aufgerufen. Im Listing 2.1 ist ein simples Beispiel für ein<br />

Vertexshader Programm aufgeführt.<br />

2.5.2 Fragmentshader<br />

Der Fragmentshader wird von jedem Fragment einzeln durchlaufen. Dieser<br />

bekommt das Fragment, mit den interpolierten Vertex-Attributen, und<br />

weitere beliebige Werte durch die Varyings. Durch diese Informationen wird<br />

der endgültige Farbwert jedes Fragmentes berechnet. Dafür können beliebige<br />

Berechnungen angewendet oder Texturen ausgelesen und weiterverarbeitet<br />

werden. Auch Post-Processing-Effects wie Bloom, Blur oder Beleuchtung<br />

werden hier errechnet. Auch ist es möglich, gezielt Fragments zu verwerfen<br />

um Löcher in Objekten zu realisieren. Im Verlauf des Shaders muss dabei<br />

gl FragColor die endgültige Fragmentfarbe zugewiesen werden.<br />

Ein simples Beispiel für einen Fragment Shader ist in Listing 2.2 aufgeführt.<br />

varying vec2 textCoord ;<br />

uniform sampler2D t e x t u r e ;<br />

void main ( void )<br />

{<br />

// Lesen der Fragmentfarbe an der P o s i t i o n der Texturkoordinate<br />

g l F r a g C o l o r = texture2D ( texture , textCoord ) ;<br />

}<br />

Listing 2.2: Minimum Fragment Shader in GLSL<br />

Die OpenGL ES Pipeline ist auf den Vertex- und Fragmentshader beschränkt<br />

und diese Shadertypen sind auch zwingend erforderlich. Wenn diese nicht<br />

implementiert werden, ist es nicht möglich das Shaderprogramm zu kompilieren<br />

und auf die Grafikkarte zu übertragen. So etwas wie Standardimplementationen,<br />

welche bei nicht vorhanden sein verwendet werden, sind nicht<br />

vorhanden. Auf der Standard OpenGL Pipeline stehen noch zwei weitere<br />

Shader zu Verfügung. Dabei handelt es sich um den Tesselationshader und<br />

den Geometryshader und diese dienen dazu, die geometrischen Primitiven<br />

zu manipulieren und zu verfeinern. Diese Shadertypen sind dort optional<br />

und können weggelassen werden. Detailliertere Informationen zum Thema<br />

OpenGL ES können dem Buch OpenGL ES 2.0 Programming Guide[8] entnommen<br />

werden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!