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

von: Heiko Ihde

Diplomica Verlag GmbH, 2009

ISBN: 9783836629270 , 160 Seiten

Format: PDF, OL

Kopierschutz: frei

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 34,99 EUR

Mehr zum Inhalt

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


 

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