4/2: Intro to pipeline and to linear interpolation.
Section 2.6 (2.10 in 2nd edition) in Fundamentals of
Computer Graphics (hereafter called "the text"). You should
also read Chapter 1 in the text, it is a good introduction
and full of helpful programming advice!
4/4: Triangle rasterization and some background on 2D geometry.
Section 8.1 (Section 3.6 in the 2nd edition).
4/6: Barycentric coordinates, Section 2.7 (2.11 in the 2nd edition), and z-buffering, Section 8.2 (in both editions!).
4/9: Introduction to programming with OpenGL 2. Attributes.
Chapter 4 in the OpenGL ES book, up to page 72, and Chapter 6, up to
page 115. Don't worry
about constant attributes, we will not use them. And we'll get to
Vertex Buffer Objects later.
See the comments in
commentedTriangle.cpp for a
detailed example.
4/11: Varying shader variables.
Read pages 88-91 in the OpenGL ES book on the different kinds of
variables in vertex programs.
2D translation and scale
matrices, Section 6.1 in the text.
4/14: How to use a matrix in OpenGL; uniform variables.
The code we looked at in class is given
with the fractal plant assignment.
4/18: Using matrices in turtle graphics. Pre-multiplying the turtle
by a new motion matrix vs. post-multiplying the turtle by a new motion matrix.
4/20: Bezier
curves and the de Casteljau construction. Section 15.6.1 (both editions).
4/23: Moving to 3D. CCW oriented triangles and backface culling.
The z-buffer. Orthographic projection. Section 7.1 (both editions).
Example code (also gives example of using glm):
cube.cpp draw.cpp draw.h cube.v.glsl cube.f.glsl
You'll also need shader_utils and the folder containing the
glm include (that original example we ran used glm; look for it there).
4/25: Projective transformations and perspective projection.
Section 7.2 (both editions).
Here is a handout on projection
matrices with some formulas.
4/27: No Lecture. Instead...
4/30: Midterm review.
5/2: Midterm.
5/4: Glassball project.
Implementing the glassball interface; rotation around an
arbitrary vector through the origin.
5/7: Choosing the right
arccos. Combining object motion with projection.
5/9: Diffuse lighting.
5/11: Normal vectors. Rotating the normal vectors.
5/14: VBOs and IBOs.
5/16: Objects from files - the .obj data type.
5/18: Ambient and specular lighting.
5/21: Intro to the virtual world project.
Camera motions, and intro to texture mapping.
On texture mapping, here is the
overview from the
OpenGL Wiki, with some of the theory. We will get to MipMaps later.
You can ignore the parts on texture storage, texture compression, swizzle masks and render targets.
5/23: Texture mapping implementation in OpenGL. Seamless
textures, and magnification filtering.
Chapter 9 of the OpenGL ES book.
5/25: Integrating what we know into the project. Lighting and camera
motion, lighting and texture mapping. Fog. Pages 224-227 in the OpenGL ES book.
The infinite floor illusion.
5/30: We are grateful for the texture mapping hardware and firmware. Minification and MipMaps. Perspective-correct texture mapping.
6/1: Making a pillar or a ball. Defining normals and
texture coordinates.