OpenGL Shading Language Overview
Programmable Graphics Hardware Pipeline
Programmable Vertex Processor
The vertex processor is a programmable unit that operates on incoming vertex attributes, such as position, color, texture coordinates, and so on. The vertex processor is intended to perform traditional graphics operations such as vertex transformation, normal transformation/normalization, texture coordinate generation, and texture coordinate transformation.
Programmable Geometry Processor
The greometry processor allows access to the geometry (lines, triangles, quads etc.). It is even possible to create new geometry. However, the geometry shader is not part of the OpenGL Shading Language specification. It is a multivendor extension and currently available (for developers) on NVidia GeForce 8 series graphics cards. Because this is a very important extension to the OpenGL Shading Language it is mentioned here and in some tutorials. (If you don't want or can't use Geometry Shaders, simply ignore this and let the fixed function pipeline do it!)
Programmable Fragment Processor
The fragment processor is intended to perform traditional graphics operations such as operations on interpolated values, texture access, texture application, fog, and color sum.
The OpenGL Shading Language is similar to C. Vertex Shaders, Geometry Shaders and Fragment shaders must have a main-entry function "void main()".
I could write a specification of the whole language here but I believe the better approach is to learn by example. In the next section a simple shader source code is introduced. Every section has a simple source code to download. A good way to learn GLSL is to download those example and modify it, do your own "experiments"!
You should also download the official GLSL language specification. You can get it here (under "Miscellaneous Documents").