Grading Policy
  Course Folder
  0. Warmup
  1. Line
  2. Triangle
  3. Modeling
  4. Viewing
  5. Lighting
  6. Texturing+PBO
  7. Ray Tracing
  8. Shadows+FBO
  9. Subdivision
  1. Rasterization
  2. Scene, Camera, Lights!
  3. Buffers, Textures, Shaders
  4. Animation
  Image Gallery:

PA1: F15, F14, W13,          W12, W10

PA2: F15, S10, W10

PA3: F15, F14, W13

PA4: S10, W10


Don't see the menu?

Course Notes

OpenGL (ES) APIs Table
Building OpenGL/GLUT Programs
Building OpenGL/GLFW Apps
Command-line Options and Third-party Libraries


Khronos Developers Library
OpenGL Extensions Core Availability

Approaching Zero (→ 0) Driver Overhead (AZDO)
OpenGL NVIDIA Command-list: AZDO by Tristan Lorach at Best of GTC at SIGGRAPH 2015 (video)
AZDO at GDC2014 (video)
Debate about OpenGL

Song Ho Ahn's OpenGL Tutorials and OpenGL Projection Matrix
Tom Dalling's Modern OpenGL Tutorials
Lighthouse3D Core GLSL Tutorials including geometry shader
Open.GL Tutorials
OGLdev OpenGL Tutorials
RasterTek OpenGL 4.0 Tutorials for Windows
GameTutorials OpenGL Tutorials
OpenGL 3.3+ Tutorials
Learning WebGL
OpenGL Geometry Shader tutorial
OpenGL Tesselation Shader tutorial
OpenGL Compute Shader tutorial
OpenGL and OpenGL ES sample code

Learning OpenGL ES (on Android)
OpenGL ES 2.0 for iPhone tutorials
NeHe OpenGL Tutorials (on iOS)
OpenGL ES Tutorials

Older Tutorials and Resources:
Apron OpenGL Tutorials
Ozone3D OpenGL & D3D 8.0 Tutorials
Hplus Graphics
Jerome Jouvie's OpenGL Tutorials and Lessons for Java.
Paul's Projects and Tutorials
Lighthouse 3D Tutorials, incl. GLUT and GLSL
TyphoonLabs' OpenGL Shading Language tutorials
Clockworkcoders' GLSL Tutorial
GLProgramming articles
GLProgramming links
Old Redbook covering OpenGL 1.1
Old Bluebook covering OpenGL 1.1 and GLU reference pages


OpenGL - Latest Articles and Reviews on AnandTech
Vulkan - Graphics and compute belong together
More on Vulkan and SPIR-V at GDC2015
An Overview of Next-Generation Graphics APIs at SIGGRAPH 2015
Vulkan on NVIDIA GPUs by Piers Daniell at Best of GTC at SIGGRAPH 2015 (video)
Gnomes per second in Vulkan and OpenGL ES
Vulkan Tutorial
Trying out the new Vulkan graphics API on PowerVR GPUs
Vulkan: for beginners?
Vulkan: API for High-efficiency Graphics and Compute on GPUs

AMD's Mantle
Mantle - Latest Articles and Reviews on AnandTech
Implementing Hello Triangle in Mantle
AMD’s Mantle

Apple's Metal

Some Thoughts on Apple’s Metal API
Metal - Latest Articles and Reviews on AnandTech
iOS 8 Metal Tutorial with Swift: Getting Started - Ray Wenderlich

Microsoft's Direct3D

Direct3D 12
Windows on Github
Direct3D - Latest Articles and Reviews on AnandTech
DirectX Developer Blogs
The DirectX 12 Performance Preview: AMD, NVIDIA, & Star Swarm
Exploring DirectX 12: 3DMark API Overhead Feature Test
GeForce + Radeon: Previewing DirectX 12 Multi-Adapter with Ashes of the Singularity
DirectX 12 Multiadapter

Direct3D 11
Microsoft Windows 8 D3D Tutorial
DirectXTutorial Direct3D 9 and 11 up to 11.2
RasterTek DirectX Tutorials Direct3D 10 and 11 (12 to come)
Microsoft Direct3D 11 tutorials


Direct3D 10 and earlier
Engel et al., Programming Vertex, Geometry, and Pixel Shaders, 2nd ed., D3D 10 shader programming
Blythe, D., "The Direct3D 10 System," Proc. ACM SIGGRAPH, 2006, and the accompanying presentation
The Direct3D Graphics Pipeline up to Direct3D 9.0
Direct3D 9 doc tree reading signposts
GameTutorials D3D 9 Tutorials
Apron D3D 9 Tutorials
Ozone3D OpenGL & D3D 8.0 Tutorials
Drunken Hyena D3D8 Tutorials
Engel, ed., The ShaderX Books

Other articles, tutorials, books

McGuire, M., Historically Significant Papers for Computer Graphics, 2010.
SIGGRAPH 2009 courses not available in the above archive
Real-Time Rendering
GPU Gems
Graphics Gems
Merry, B., "Performance Tunig for Tile-Based Architectures," in OpenGL Insights, eds. Cozzi, P. and Riccio, C., CRC Press, 2012
A look at the PowerVR graphics architecture: Tile-based rendering
Tom's Hardware on Graphics Cards
NVidia's Documentation
Cg Tutorial
Object/Object Intersection Page
Color Mixing
Tone Mapping
Perlin Noise
More noise texture
Convolution Tutorial
Poynton's Chapter on Gamma and FAQ
Game Developer Magazine
Ray Tracing News
Ray Tracing Efficiency Issues
Void, Quaternions, 2003
Zorin et al.'s Subdivision GDC01 tutorial and code
Prusiniewicz, Algorithmic Beauty of Plants
Reynold's NPR site
Comet's 3D modeling, texturing, lighting, animation

Demoes and Interactive Tutorials

Austin's geometric explanation of SVD
Kalman, D., "A Singularly Valuable Decomposition: The SVD of a Matrix," The College Mathematics Journal, 27:2-23, 1996
Brown Applets Repository
Digital Image Processing Interactive Tutorials
BSP Trees Demo (old version)
Popovic's Change of Basis
Color Space Conversion
Michael Bach's 84 Optical Illusions
Marble Texture
Wood Texture
Algebraic Surfaces
Lagrange vs. Spline Interpolations
Curve Interpolation
Bezier Curve
de Casteljau
Bezier Patch
Zymon's BRDF browser
3D trees


GUI Toolkits
OpenGL Related Toolkits and APIs
GLUT-like Windowing, GUI, and Media Control toolkits
The GUI Toolkit/Framework Page (old)

Shader development:
Nvidia's FX Composer

Javascript/WebGL scenegraphs:
Non-WebGL x3dom

Scenegraphs/Game engine:
Epic Games' Unreal Engine
Unity Technologies' unity
OpenSceneGraph (OSGEdit)
O3D, a JavaScript API for web browser based 3D apps; implemented on top of WebGL.
OGRE3D (wiki) and CEGUI
OpenGL Performer
OpenInventor (commercial version)

Rendering engine:
Arbaro: tree generation for povray
Pixie: opensource Renderman; wiki
Global Illumination Shootout
Predefined C Compiler Macros

glm: OpenGL Mathematics a header-only C++ math library based on GLSL specs
Computational Geometry Algorithms Library
OpenMesh: polygonal mesh data structure
Open Dynamics Engine: rigid body dynamics simulation

Encoding formats:
Collada (wiki)
X3D (Book and Resources)
X3D tutorials
File Formats
GD library

Data Sets

Stanford Data Archives
Debevec's Light Probe Image Gallery and HiRes version
Tuebingen data set and new data set

Computer Vision Information Pages