## ECS 175 Lectures and Reading

• 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/16: Introduction to fractal plants. Notes.
• 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/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.