Shader mit GLSL
Eine Einführung in die OpenGL Shading Language
- Art: Diplomarbeit
- Autor: Heiko Ihde
- Abgabedatum: Februar 2009
- Umfang: 129 Seiten
- Dateigröße: 1,7 MB
- Note: 1,3
- Institution / Hochschule: Beuth Hochschule für Technik Berlin Deutschland
- ISBN (eBook): 978-3-8366-2871-6
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Ihde, Heiko Februar 2009: Shader mit GLSL, Hamburg: Diplomica Verlag
- Schlagworte: Shader, OpenGL, GLSL, 3D Grafik, Texturing
48,00 €
PDF-eBook Download: 48,00 €
Diplomarbeit von Heiko Ihde
Einleitung:
Diese Arbeit ist das Ergebnis von dreimonatiger, intensiver Auseinandersetzung mit dem Thema Shader und der OpenGL Shading Language. Sie befasst sich im Groben mit der Erstellung von Shadern mit GLSL und den dafür nötigen Vorbereitungen. Der Autor hat sich während der Erstellung vom blutigen Anfänger zum begeisterten Shader Programmierer entwickelt.
Die Arbeit ist so gestaltet, dass ein Leser mit Grundkenntnissen der Informatik und Computergrafik das Prinzip von Shadern ohne Probleme erlernt. Sichtbare Ergebnisse sollen zum Ausprobieren und Experimentieren ermutigen. Beginnend mit den notwendigen Vorbereitungen werden die wichtigsten Funktionen der GLSL anhand von Beispielen erklärt.
Selbst wer vorher noch nie etwas mit Shadern zu tun hatte, soll nach dem Lesen dieser Arbeit in der Lage sein Shader zu lesen, zu schreiben und diese in OpenGL-Anwendungen zu integrieren.
Inhaltsverzeichnis:
| 1. | Einleitung | 6 |
| 1.1 | Begriffliche Voraussetzungen | 6 |
| 1.1.1 | Shader | 6 |
| 1.1.2 | Shader Objekt | 7 |
| 1.1.3 | Shader Programm | 8 |
| 1.1.4 | Fixed Functionality | 8 |
| 1.1.5 | Vertex | 9 |
| 1.1.6 | Edge | 9 |
| 1.1.7 | Face | 9 |
| 1.1.8 | Fragment | 10 |
| 1.1.9 | Vertex Shader | 10 |
| 1.1.10 | Geometry Shader | 10 |
| 1.1.11 | Fragment Shader | 10 |
| 1.1.12 | Object-Space | 11 |
| 1.1.13 | Eye-Space | 12 |
| 1.1.14 | Diffusemap / Colormap | 12 |
| 1.1.15 | Alphamap / Transparencymap | 13 |
| 1.1.16 | Bumpmap | 13 |
| 1.1.17 | Heightmap / Displacementmap | 13 |
| 1.1.18 | Normalmap | 13 |
| 1.1.19 | Specularitymap / Reflectivitymap | 13 |
| 1.1.20 | Luminositymap | 14 |
| 1.1.21 | Environmentmap / Reflectionmap | 14 |
| 2. | Gründe für Shader mit GLSL | 15 |
| 2.1 | Über Shader | 15 |
| 2.2 | Die Shadertypen | 15 |
| 2.3 | Die High Level Shading Languages | 16 |
| 2.3.1 | HLSL | 17 |
| 2.3.2 | Cg | 17 |
| 2.3.3 | GLSL | 18 |
| 3. | Shader in OpenGL | 20 |
| 3.1 | Die OpenGL Shading Language | 20 |
| 3.1.1 | Unterschiede zwischen Vertex und Fragment Shader | 20 |
| 3.1.2 | Unterschiede zu C/++ | 21 |
| 3.1.3 | Typecasting und Konstruktoren | 21 |
| 3.1.4 | Neue Datentypen | 21 |
| 3.1.5 | Zugriff auf Vektor-Komponenten | 22 |
| 3.1.6 | Die attribute, uniform und varying Qualifiers | 22 |
| 3.2 | Die OpenGL Shading Language API | 23 |
| 4. | Vier Schritte zum eigenen Shader | 25 |
| 4.1 | Die Objekte vorbereiten | 25 |
| 4.1.1 | Vorbereiten in Blender | 25 |
| 4.1.2 | Vorbereiten in OpenGL | 29 |
| 4.2 | Die Texturen vorbereiten | 32 |
| 4.2.1 | Diffusemap | 33 |
| 4.2.2 | Alphamap | 38 |
| 4.2.3 | Bumpmap | 41 |
| 4.2.4 | Normalmap | 43 |
| 4.2.5 | Huemap | 44 |
| 4.2.6 | Lightnessmap / Brightnessmap | 48 |
| 4.2.7 | Environmentmap | 49 |
| 4.2.8 | Kanten entfernen | 54 |
| 4.2.9 | CrazyBump | 55 |
| 4.3 | Die Shader einbinden | 57 |
| 4.3.1 | Shader erstellen und kompilieren | 57 |
| 4.3.2 | Shader verwenden | 59 |
| 4.3.3 | Werte übergeben | 60 |
| 4.3.4 | Texturen übergeben | 61 |
| 4.3.5 | Das Resultat | 63 |
| 4.3.6 | Die Shader in GLSLDemo einbinden | 63 |
| 4.4 | Die Shader programmieren | 66 |
| 4.4.1 | Farbe | 67 |
| 4.4.2 | Fragmente verwerfen | 69 |
| 4.4.3 | Direktionales Licht | 69 |
| 4.4.4 | Punktlicht | 73 |
| 4.4.5 | Drei Punktlichter | 74 |
| 4.4.6 | Drei Punktlichter (optimiert) | 76 |
| 4.4.7 | Glanz | 78 |
| 4.4.8 | Prozedurale Textur 2D | 81 |
| 4.4.9 | Prozedurale Textur 3D | 84 |
| 4.4.10 | Selektiv Fragmente verwerfen | 86 |
| 4.4.11 | Prozedurale Textur 3D (optimiert) | 88 |
| 4.4.12 | Einbinden von Textur-Maps | 92 |
| 4.4.13 | Nebel | 94 |
| 4.4.14 | Simulation der Fixed Functionality mit ShaderGen | 96 |
| 4.4.15 | Mehrfarb-Lack | 97 |
| 4.4.16 | Hue-Shifter | 99 |
| 4.4.17 | Displacement | 104 |
| 4.4.18 | Displacement Wasser | 106 |
| 5. | Fazit und Aussicht | 109 |
| 6. | Eigenständigkeitserklärung | 110 |
| 7. | Anhang 1: Literaturverzeichnis | 111 |
| 8. | Anhang 2: Verwendete Software | 112 |
| 8.1 | Programmierung | 112 |
| 8.2 | Grafik | 112 |
| 8.3 | Sonstiges | 113 |
| 9 | Anhang 4: GLSL Kurz-Referenz | 114 |
| 9.1 | Data types | 114 |
| 9.2 | Data type qualifiers | 114 |
| 9.2.1 | Global variable declarations | 114 |
| 9.2.2 | Function parameters | 115 |
| 9.3 | Vector components | 116 |
| 9.4 | Preprocessor | 116 |
| 9.5 | Vertex shader variables | 116 |
| 9.5.1 | Special Output Variables | 116 |
| 9.5.2 | Special input variables | 117 |
| 9.5.3 | Varying outputs | 117 |
| 9.5.4 | Attribute inputs | 117 |
| 9.6 | Fragment shader variables | 117 |
| 9.6.1 | Special Output Variables | 117 |
| 9.6.2 | Special input variables | 118 |
| 9.6.3 | Varying inputs | 118 |
| 9.7 | Built-in constants | 118 |
| 9.8 | Built-in uniforms | 118 |
| 9.9 | Built-in functions | 121 |
| 9.9.1 | Angle and Trigonometry Functions | 121 |
| 9.9.2 | Exponential Functions | 122 |
| 9.9.3 | Common Functions | 122 |
| 9.9.4 | Geometric Functions | 123 |
| 9.9.5 | Matrix Functions | 123 |
| 9.9.6 | Vector Relational Functions | 124 |
| 9.9.7 | Texture Lookup Functions | 124 |
| 9.9.8 | Texture Lookup Functions with LOD | 129 |
| 9.9.9 | Fragment Processing Functions | 130 |
| 9.9.10 | Noise Functions | 130 |
| 10. | Stichwortverzeichnis | 131 |
Eine Textprobe schicken wir Ihnen gerne unter Angabe der Studiennummer 12871 zu.
48,00 €
PDF-eBook Download: 48,00 €



