Ed Angel, Dave Shreiner: An introduction to shader-based OpenGL programming. SIGGRAPH Courses 2009: 6:1-6:152