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