Ihde | Shader mit GLSL: Eine Einführung in die OpenGL Shading Language | E-Book | sack.de
E-Book

E-Book, Deutsch, 160 Seiten

Ihde Shader mit GLSL: Eine Einführung in die OpenGL Shading Language


1. Auflage 2009
ISBN: 978-3-8366-2927-0
Verlag: Diplomica Verlag
Format: PDF
Kopierschutz: 0 - No protection

E-Book, Deutsch, 160 Seiten

ISBN: 978-3-8366-2927-0
Verlag: Diplomica Verlag
Format: PDF
Kopierschutz: 0 - No protection



Seit es Computergrafik gibt, wird kontinuierlich versucht die Qualität der Darstellung bis hin zum absoluten Realismus zu steigern. Die Shader sind dabei ein wichtiges Hilfsmittel um realistischer scheinende Materialien in der Computergrafik zu erzeugen. Shader bieten dem Grafik-Programmierer eine vorher unerreichte Flexibilität. Die vorher starren Vorgaben der Grafikprozessoren können nun individuell an die eigenen Bedürfnisse angepasst werden.
Dieses Buch bietet einen schnellen Einstieg in die Highlevel Shading Sprachen. Anhand von Beispiel-Shadern in der OpenGL Shading Language (GLSL) werden die Grundsätze erklärt. Verschiedene Ansätze werden erläutert und mögliche Fehlerquellen werden aufgedeckt. Die Einbindung der entwickelten Shader in eigene OpenGL-Anwendungen wird geklärt.Zusätzlich wird eine Einführung in Textur-Erstellung und 3D-Modeling gegeben.

Ihde Shader mit GLSL: Eine Einführung in die OpenGL Shading Language jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;1 Einleitung;7
1.1;1.1 Begriffliche Voraussetzungen;7
1.1.1;1.1.1 Shader;8
1.1.2;1.1.2 Shader Objekt;9
1.1.3;1.1.3 Shader Programm;9
1.1.4;1.1.4 Fixed Functionality;9
1.1.5;1.1.5 Vertex;10
1.1.6;1.1.6 Edge;11
1.1.7;1.1.7 Face;11
1.1.8;1.1.8 Fragment;11
1.1.9;1.1.9 Vertex Shader;12
1.1.10;1.1.10 Geometry Shader;12
1.1.11;1.1.11 Fragment Shader;12
1.1.12;1.1.12 Object-Space;13
1.1.13;1.1.13 Eye-Space;14
1.1.14;1.1.14 Diffusemap / Colormap;15
1.1.15;1.1.15 Alphamap / Transparencymap;15
1.1.16;1.1.16 Bumpmap;15
1.1.17;1.1.17 Heightmap / Displacementmap;15
1.1.18;1.1.18 Normalmap;16
1.1.19;1.1.19 Specularitymap / Reflectivitymap;16
1.1.20;1.1.20 Luminositymap;17
1.1.21;1.1.21 Environmentmap / Reflectionmap;17
2;2 Gründe für Shader mit GLSL;18
2.1;2.1 Über Shader;18
2.2;2.2 Die Shadertypen;18
2.3;2.3 Die High Level Shading Languages;19
2.3.1;2.3.1 HLSL;20
2.3.2;2.3.2 Cg;21
2.3.3;2.3.3 GLSL;22
3;3 Shader in OpenGL;24
3.1;3.1 Die OpenGL Shading Language;24
3.1.1;3.1.1 Unterschiede zwischen Vertex und Fragment Shader;25
3.1.2;3.1.2 Unterschiede zu C/++;25
3.1.3;3.1.3 Typecasting und Konstruktoren;26
3.1.4;3.1.4 Neue Datentypen;26
3.1.5;3.1.5 Zugriff auf Vektor-Komponenten ;27
3.1.6;3.1.6 Die attribute, uniform und varying Qualifiers;27
3.2;3.2 Die OpenGL Shading Language API;28
4;4 Vier Schritte zum eigenen Shader;31
4.1;4.1 Die Objekte vorbereiten;31
4.1.1;4.1.1 Vorbereiten in Blender;31
4.1.2;4.1.2 Vorbereiten in OpenGL;36
4.2;4.2 Die Texturen vorbereiten;39
4.2.1;4.2.1 Diffusemap;41
4.2.2;4.2.2 Alphamap;47
4.2.3;4.2.3 Bumpmap;50
4.2.4;4.2.4 Normalmap;52
4.2.5;4.2.5 Huemap;54
4.2.6;4.2.6 Lightnessmap / Brightnessmap;59
4.2.7;4.2.7 Environmentmap;60
4.2.8;4.2.8 Kanten entfernen;66
4.2.9;4.2.9 CrazyBump;67
4.3;4.3 Die Shader einbinden;69
4.3.1;4.3.1 Shader erstellen und kompilieren;70
4.3.2;4.3.2 Shader verwenden;73
4.3.3;4.3.3 Werte übergeben;74
4.3.4;4.3.4 Texturen übergeben;75
4.3.5;4.3.5 Das Resultat;77
4.3.6;4.3.6 Die Shader in GLSLDemo einbinden;78
4.4;4.4 Die Shader programmieren;81
4.4.1;4.4.1 Farbe;82
4.4.2;4.4.2 Fragmente verwerfen;84
4.4.3;4.4.3 Direktionales Licht;85
4.4.4;4.4.4 Punktlicht;90
4.4.5;4.4.5 Drei Punktlichter;92
4.4.6;4.4.6 Drei Punktlichter (optimiert);94
4.4.7;4.4.7 Glanz;97
4.4.8;4.4.8 Prozedurale Textur 2D;100
4.4.9;4.4.9 Prozedurale Textur 3D;104
4.4.10;4.4.10 Selektiv Fragmente verwerfen;106
4.4.11;4.4.11 Prozedurale Textur 3D (optimiert);109
4.4.12;4.4.12 Einbinden von Textur-Maps;114
4.4.13;4.4.13 Nebel;116
4.4.14;4.4.14 Simulation der Fixed Functionality mit ShaderGen;119
4.4.15;4.4.15 Mehrfarb-Lack;120
4.4.16;4.4.16 Hue-Shifter;122
4.4.17;4.4.17 Displacement;127
4.4.18;4.4.18 Displacement Wasser;130
5;5 Fazit und Aussicht;134
6;6 Anhang 1: Literaturverzeichnis;135
7;7 Anhang 2: Verwendete Software;137
7.1;7.1 Programmierung;137
7.2;7.2 Grafik;137
7.3;7.3 Sonstiges;138
8;8 Anhang 4: GLSL Kurz-Referenz;139
8.1;8.1 Data types;139
8.2;8.2 Data type qualifiers;140
8.2.1;8.2.1 Global variable declarations;140
8.2.2;8.2.2 Function parameters;141
8.3;8.3 Vector components;141
8.4;8.4 Preprocessor;142
8.5;8.5 Vertex shader variables;142
8.5.1;8.5.1 Special Output Variables;142
8.5.2;8.5.2 Special input variables;143
8.5.3;8.5.3 Varying outputs;143
8.5.4;8.5.4 Attribute inputs;143
8.6;8.6 Fragment shader variables;143
8.6.1;8.6.1 Special Output Variables;143
8.6.2;8.6.2 Special input variables;144
8.6.3;8.6.3 Varying inputs;144
8.7;8.7 Built-in constants;144
8.8;8.8 Built-in uniforms;144
8.9;8.9 Built-in functions;147
8.9.1;8.9.1 Angle and Trigonometry Functions;147
8.9.2;8.9.2 Exponential Functions;148
8.9.3;8.9.3 Common Functions;148
8.9.4;8.9.4 Geometric Functions;149
8.9.5;8.9.5 Matrix Functions;150
8.9.6;8.9.6 Vector Relational Functions;150
8.9.7;8.9.7 Texture Lookup Functions;151
8.9.8;8.9.8 Texture Lookup Functions with LOD;156
8.9.9;8.9.9 Fragment Processing Functions;158
8.9.10;8.9.10 Noise Functions;158
9;9 Stichwortverzeichnis;159


Kapitel 4.3.6, Die Shader in GLSLDemo einbinden:

Wer ohne den aufwändigen Weg über ein eigenes OpenGL Programm Shader schreiben und ausprobieren möchte, der kann diese auch in ein bestehendes Programm wie z.B. GLSLDemo von der Seite www.3dshaders.com einbinden.
Nach der Installation von GLSLDemo sollten im Ordner des Programms die Ordner bin, shaders und textures vorhanden sein. Starten wir das Programm mit glsldemo.exe im Ordner bin müsste das Programm wie in der Abbildung aussehen. In der Seitenleiste sind bereits einige Shaderbeispiele vorhanden.
Im Menü View/Uniform adjuster (oder über Tastatureingabe Alt+U) können wir ein Bedienfeld öffnen. Darin werden Schieberegler für die im Shader definierten uniform Variablen angezeigt. Mit diesen Reglern können wir die Werte der Variablen ändern. Hat die Änderung des Wertes ein visuelles Feedback zur Folge, können wir es im 3Dbereich der Anwendung sofort sehen.


Heiko Ihde, Diplom-Informatiker FH, Grafiker für Computerspiele, Medieninformatik-Studium an der TFH-Berlin. Abschluss 2009 als Diplom-Informatiker FH. Derzeit tätig als Medieninformatiker im Bereich Grafik.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.