Graphics Shaders: Theory and Practice Examples

Auxiliary files (images, textures, obj geometry files, etc) can be found here.

Shader files can be found here:

GlibVertex ShaderTess Control ShaderTess Eval ShaderGeometry ShaderFragment ShaderComments
beziercurve.glib beziercurve.vert     beziercurve.geom beziercurve.frag Bezier curve using geometry shaders
beziersurface.glib beziersurface.vert beziersurface.tcs beziersurface.tes beziersurface.geom beziersurface.frag Bezier surface using tessellation shaders
cloud.glib cloud.vert       cloud.frag Procedural clouds using noise
corvallis.glib corvallis.vert       corvallis.frag Hyperbolic geometry
edge.glib edge.vert       edge.frag Edge detection
eroded.glib eroded.vert       eroded.frag Erosion using noise and discard
explode.glib explode.vert     explode.geom explode.frag Triangles explode into points
image.glib image.vert       image.frag Lots of image processiong examples in one shader
imageRipple.glib imageRipple.vert       imageRipple.frag A sin*sin function on an image
lighting.glib lighting.vert       lighting.frag Shows many variations of lighting parameters
mandelzoom.glib mandelzoom.vert       mandelzoom.frag Zoom very far into the mandelbrot set
multiband.glib multiband.vert       multiband.frag Combining 3 satellite images to produce data
ovalnoise.glib ovalnoise.vert       ovalnoise.frag Create patterns using noise and ellipses
pleats.glib pleats.vert       pleats.frag Create a curtain from a flat quad
rainbow.glib rainbow.vert       rainbow.frag Rainbow stripes
reflect.glib reflect.vert       reflect.frag Cube map reflection
refract.glib refract.vert       refract.frag Cube map refraction
screen.glib screen.vert       screen.frag Shows why the discard command is necessary
shrink.glib shrink.vert     shrink.geom shrink.frag Shrink triangles using a geometry shader
silh.glib silh.vert     silh.geom silh.frag Produce silhouettes using a geometry shader
sphereadapt.glib sphereadapt.vert sphereadapt.tcs sphereadapt.tes sphereadapt.geom sphereadapt.frag A sphere tessellation adapts to its screen coverage
stripes.glib stripes.vert       stripes.frag Shows the difference between texturing in Model Coords vs. Eye Coords
terrain.glib terrain.vert       terrain.frag Oregon terrain using bump-mapping
transition.glib transition.vert       transition.frag Shows the wiping transition between two images
world.glib world.vert       world.frag Shows a world texture mapped onto a sphere