MAT 594CM W2011 _ W 10-2 _ Elings/CNSI 2611
Angus Forbes, Instructor
angus.forbes@mat.ucsb.edu
Description
This course introduces fundamental concepts in real-time computer graphics programming. The goal of the course is to provide students with a solid foundation in programming techniques as well as to introduce various approaches to representing, manipulating, and thinking about form and space. Students will become thoroughly acquainted with the OpenGL library and the GLSL shading language while investigating lighting models, texturing, curves and surfaces, dynamics, space partitioning, geometric data structures, and animation, as well as other related topics.
In addition to frequent varied assignments that include reading, quizzes, short programming exercises, collaborative experiments and a research presentation, students will be graded on the technical and creative aspects of a final project. Each class will include both a lectures and a programming lab. Students should have experience programming in a high-level object-oriented language, such as Java or C++. All students are required to bring a laptop to each class in order to participate in programming exercises.
Please subscribe to the MAT 594CM Winter 2011 class forum (go here for information on how to subscribe to the forum). Announcements and assignments will posted there, along with links to articles, code, and other resources.
Topics: Introduction to OpenGL programming; The git VCS
Links: [OpenGL Red Book (intro to OpenGL)] [Avoiding Pitfalls in OpenGL] [Songho's OpenGL Exposition and Tutorials] [OpenGL Reference Pages] [Nehe's Introduction to OpenGL] [GLUT] [Lighthouse3D GLUT tutorial] [Nehe GLUT OSX tutorial] [git: the fast version control system] [github.com]
Assignment: [Problem Set #1]
Topics: The rendering pipeline, "immediate mode" rendering functions, vectors, matrices, affine and perspective transformations, lighting, materials
Links: [OpenGL Redbook: Viewing chapter] [OpenGL Redbook: Lighting chapter] [Fallout Software's Lighting tutorial] [Steve Baker's Basic OpenGL Lighting] [Wolfram's cross product page] [Cross product snippet]
Slides: [week 1.pdf]
Assignment: [Problem Set #2]
Links: [Blender download] [libpng] [libjpeg] [OpenGL Redbook: Texture Mapping chapter] [Simple OpenGL image loader]
Slides: [week 2.pdf]
Topics: Pointers, arrays, structs, easing functions, interpolation, vertex arrays, vertex buffer objects, display lists
Links: [C programming tutorial] [Pointer arithmetic tutorial] [Open Asset Import Library] [Songho's vertex array tutorial] [display list tutorial]
Slides: [week 3.pdf]
Topics: Parametric curves, Bezier curves, Hermite curves, Catmull-Rom splines, b-splines, NURBS curves and surfaces, octrees, voronoi diagrams, delauney triangulation, convex hulls, intersection tests
Topics: fixed functionality vs. custom rendering pipeline, vertex shaders, fragment shaders
Links: [Introduction to GPU Programming with GLSL.pdf] [GLSL Lighthouse3D tutorial] [Orange book code samples (.zip)] [Khronos GLSL reference card]
Code: [shader examples directory]
Slides: [week 5.pdf]
Topics: textures as data, custom lighting models, bump mapping/normal maps, vertex displacement
Links: [Fabien Sanglard's bump mapping tutorial] [Swiftless bump mapping tutorial] [gl_NormalMatrix] [Shamyl Zakariya's NormalMappr.app] [Nvidia's Melody Normal Map application] [Typhoon Labs' GLSL tutorials] [oZone3D.net GLSL tutorials] [Phong shading]
Real-Time GPU Demos: [Nvidia GPU demos] [ATI GPU demos] [Farbrausch demoscenes] [scene.org demoscene awards] [monostep.org demoscenes] [pouet.net demoscenes]
Guest: MAT graduate student John Delaney discusses his work on subdivision surfaces and fluid simulations
Topics: 'Toon shaders, projective texturing, shadow maps, frame buffer objects (FBOs), light scattering
Links: ["Projective Texture Mapping," C. Everitt] ["Hardware Shadow Mapping," C. Everitt, A. Rege, C. Cebenoyan] [Fabien Sanglard's shadowmapping tutorial] [Sombermoon's shadow mapping tutorial] [Lighthouse 3D toon shader tutorial] [Nvidia's FBO tutorial
Previous Course Pages:
MAT 201B F2010
MAT 594CM S2010
MAT 594CM S2009
MAT 259 W2009
Rendering:
Real-Time Rendering /
Real-Time Rendering Resources
Advanced Lighting and Materials with Shaders
GPU Programming:
OpenGL Shading Language (The Orange Book)
/ Orange Book Resources
GPU Gems 1 (online)
GPU Gems 2 (online)
GPU Gems 3 (online)
D3D Book (online)
ShaderX 1-7, GPU Pro (some of these are online)
The CG Tutorial (online)
OpenGL & Game Programming:
OpenGL Programming Guide (The Red Book)
/ (old edition available online)
Interactive Computer Graphics: A Top Down Approach
Game Programming Gems 1-7, Best of
Game Development StackExchange
General Mathematics:
Mathematics for Computer Graphics (online, requires UCSB login)
Mathematics for 3D Game Programming and Computer Graphics
GLM : OpenGL Mathematics library
CML : Configurable Math Library
Geometry:
Beyond Geometry: Classic Papers from Riemann to Einstein
The Curves of Life
Algebraic Topology
Curves and Surfaces for CAGD: A Practical Guide
Geometry for Computer Graphics (online, requires UCSB login)
Computational Geometry in C /
C and Java Resources
Computational Geometry: Algorithms and Applications
Paul Bourke's Geometry Pages
Physics & Simulations
Real-time Collision Detection
Physics for Game Programmers / Resources
Vector Analysis for Computer Graphics (online, requires UCSB login)
Rotations:
Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace and Virtual Reality
Visualizing Quaternions
Rotations, Quaternions, and Double Groups
Geometric Algebra:
Geometric Algebra for Computer Science: An Object-Oriented Approach to Geometry
/ Resources
Geometric Algebra: An Algebraic System for Computer Games and Animation (online, requires UCSB login)
Geometric Algebra for Physicists
Generative Processes:
The Self-Made Tapestry: Pattern Formation in Nature
Pamphlet Architecture 27: Tooling
Protocells
Generative Algorithms - Weaving, Zubin M Khabazi
Generative Algorithms - Porous Structures, Zubin M Khabazi
Git:
git home page
git Reference
github.com & github help
git Wikipedia entry
SSH:
Secure Shell Wikipedia entry
Public-key cryptography Wikipedia entry
IDEs & Coding Tools:
XCode 3
Eclipse Helios
Netbeans 6.9
Vim 7.3 / MacVim 7.3
TextMate 1.5.9