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