The final exam is 10:05am-12:05pm on Tuesday, May 7th in rooms 5206 and 5208 Social Sciences. Students eligable for McBurney accomodations have been contacted by email.

The exam will be multiple choice and given on auto-scanned forms (just like the midterm). Please bring a pencil and an eraser. The exam is closed book and closed notes. You may not bring a “cheat sheet” or use an internet connected device during the exam. (that means you can’t use your phone). The exam is designed so that you do not need a calculator.

## Exam Content

**The exam is cummulative**: all topics in class may be tested. There will be a focus on the topics that were covered after March 7th, but since these topics build on the topics covered earlier, there is not really a separation.

The exam may include content from:

- Lectures
- Content on the course web and workbooks
- Required readings (including book chapters and the tutorials from older editions of the class (e.g., Color, images vs. objects, pxiels, points and vectors, SVG tutorial)).

In general, the important things from readings and the web were also covered in lecture.

We do not expect you to memorize details. Of course, this is subjective – but our goal is to test that you know the concepts, not memorize the things you can look up. But some examples of things we will not ask you to remember:

- equations for cubic forms – for example, you should know what a Hermite or Cardinal Spline is, and the geometric intuitions, but you if you need them, we’ll give you the equations for the parametric functions or basis functions
- the parameter list of JavaScript, Canvas, GLSL or THREE functions. For example, we don’t expect you to remember the order of the parameters, so if we show you the code new THREE.PerspectiveCamera(50, 1, 0.1, 1000 ); and remind you that the first parameter is the field of view, you should know what field of view does. For GLSL you will need to know what the different kinds of variables are (const, uniform, attribute, varying) and be able to read shader programs.
- details we didn’t actually give to you. For example, we expect that you should know that there are ways to interpolate unit quaternions, but not necessarily the details of how they work.

## Topics List

The Lectures List page (with links to slides and videos) is a good resource.

There is a topics list from the first 7 weeks on the midterm exam description page.

The material discussed in lecture during the last week (animation, curved surfaces, light-based rendering) is fair game. Those lectures occur after this list is being written, so they are not included here.

The Key Topics after week 7 (note: this list may not be everything):

- Transformations in 3D, Hierarchical Modeling
- Rotations in 3D (Euler Angles, Axis Angle, Quaternions, rotation matrices)
- Camera / Viewing Transformations (we talked about the perspective transformation briefly), Lookfrom/Lookat
- Meshes (in the general graphics sense, which is more than the THREE data structure sense), including things like T-Junctions, vertex sharing, and vertex splitting
- Mesh Representations for Graphics (strips, fans, index sets) – but not Winged-Edge representations.
- Kinematic chains (e.g. composition of transformations), inverse kinematics (the concept, not the methods)
- Surface properties and normals
- How we use triangles (fake normals, baricentric interpolation, …)
- Texture mapping concepts (motivation, need for texture coordinates, uv mapping, …)
- Uses of texture maps (normal maps, bump maps, light maps, environment maps, shadow maps, displacement maps, …)
- Texture filtering (basic concepts and need, summed-area, mip-maps, interpolation)
- Lighting (local models, light types, basic graphics lighting model, diffuse & specular lighting, …)
- Kinds of maps for environment mapping
- Multi-pass rendering for dynamic environment maps and shadow maps
- The graphics pipeline (organization of graphics hardware). You should know what all the steps do (e.g., what rasterization is)
- The shader programming model (e.g., how the pipeline restricts what shaders do). You will need to know how information is passed between shaders (including what GLSL calls the variable types)
- Z-Buffering (basic operation, vs. the painters algorithm, artifacts, …)
- Aliasing (the aspects we discussed in class about how it occurs in the 3D graphics pipeline)
- Shader programming (be sure to know the variable types), attribute buffers
- Approaches to more efficient rendering (early Z, deferred shading, Culling)
- Animation Concepts (keyframing, skinning, warping & morphing)
- Curves and Surfaces in 3D (from 4/30 lecture)
- Light-Based Rendering concepts (from 5/2 lecture)