Final Guide

Page content

The CS559 Final exam will be given on May 6th in an online format. Details will be announced closer to the date.

Exam Description

The questions will be of varying forms. There will be some multiple choice questions, but also some short answer questions.

There are no example exams available. The quizzes are designed to help you know the topics we will ask. Workbook content is also important.

You are responsible for everything we discussed in lecture, everything covered in the workbooks, and the readings that the workbooks require.

The topics will focus on things covered in lectures on and after March 10th. Earlier material may be included to the extent that later material builds on it. We may ask you about transformations in 3D (which are very similar to transformations in 2D), but we will not ask you about curves.

Exam Content List

Here is a brief outline of the course content (note: you are responsible for all covered material – we are trying to be complete in this outline, but might have missed something):

Non-Graphics:

  • JavaScript Classes and SubClasses

Graphics:

  • 3D Transformations
    • Standard transformations (translate, scale, …)
    • putting transformation into a scene graph
  • Why we animate with transformations
  • Changing Transformations vs. Setting State
  • Rotations in 3D
    • 2D rotations in 3D
    • axis aligned rotations
    • rotations about artibitrary axes
    • local vs. global axes for rotations
    • Euler Angles
    • Axis Angle vs. Euler Angles
    • Composition of Rotation
    • Gimbal Lock
    • Axis Angle forms
    • Quaternions (concepts)
    • Interpolation of rotations
  • LookAt/Lookfrom/Up transformation
  • Hierarchical models and transformations
  • Meshes
    • Criteria for good meshes
    • index set representations
    • properties of meshes and vertices
    • vertex splitting
    • good triangles
    • motivation for fancy mesh data structures (we did not discuss specifics)
    • where do we put colors
  • Barycentric interpolation
  • Normal consistency
  • Backface culling
  • Lighting
    • Lighting intuitions
    • Transport vs. local interactions
    • BRDFs
    • Local vs. Global lighting
  • Local lighting models
    • Basics of models
    • Diffuse materials
      • lambert’s law equations
    • Light types and interaction
    • Specular lighting
      • ideal reflectance intuitions
      • Phong model
      • standard lighting model
    • “Phong Model”
    • alternative workflows for lighting
    • per vertex vs. per fragment shading
    • light geometry
    • material properties in the basic model
  • Texture Mapping
    • Motivation (why not…)
    • steps of texture mapping
    • Texture coordinates
      • UV mapping
    • Kinds of lookup (color maps)
    • UV Mapping with multiple triangles
    • Texture Wrapping
      • mirroring vs. wrapping vs. clamping
    • Repeat
    • Nearest Neighbor vs. bilinear interpolation
    • Minification
      • aliasing problems
      • filtering concepts
      • summed area tables
      • mip maps
      • anisotropy
  • Advanced Textures
    • Fake Normals (motivation)
    • Bump maps and normal maps
    • Displacement maps
    • Layered textures
    • Light Maps
    • Ambient Occlusion Shading
    • changing other properties
    • solid textures
    • skyboxes and environment map assumptions
    • environment maps
    • map storage shapes
    • roughness in environment maps
    • environment maps for lighting
    • dynamic environment maps
    • shadow maps
  • Hardware and 3D Drawing
    • review of abstractions
    • steps of drawing
    • clipping
    • rasterization
    • buffers
    • rasterization
      • models
      • midpoint / brezenham’s algorithm
      • coverage in triangle filling
      • scanline vs. hardware (barycentric test) filling
    • aliasing and anti-aliasing
      • basic concepts
      • problems
      • intuitions for solutions
      • pre-filtering
      • some basic techniques
    • Visibility
      • painters algorithm
      • BSP trees (we did not say very much)
      • Z-Buffer
        • operations
        • problem cases
    • Graphics Pipeline
      • assumptions
      • pipelining
      • steps in the traditional pipeline
      • block transfer of vertex info
      • vertex processing
      • assembly
      • rasterization
      • pixel processing
      • testing / buffering
  • Shaders
    • understanding the pipeline model
    • idea of triangle groups
    • attributes and attribute buffers
    • vertex processing
    • what the rasterizer does (programming model)
    • fragment processing
    • types of variables
    • GLSL concepts and mechanisms
    • vertex shader concepts
    • fragment shader concepts
    • communicating with the host program
      • steps in shader setup
      • communicating variables
      • attribute buffers
    • Lighting in Shaders
      • Phong model
      • material definitions
      • lighting in different coordinate systems
    • Image-based textures in Shaders
      • texture objects and samplers
      • adjusting mip-map levels
    • Shader Idioms
      • GLSL special functions
      • anti-aliasing in shaders
      • smoothstep for jaggies
    • Noise
      • basic concepts
      • perlin noise

Some Hints

You may be asked to read GLSL shader code. Having the OpenGL ES Reference Card handy will be useful. The exam instructions will tell you to open this. You don’t want to have to memorize the order of arguments to functions like clamp and smoothstep.

Questions will not intentionally ask you about THREE.js, but they may use THREE.js examples to ask you about graphics concepts. We will usually provide you with links to THREE.js documentation so you do not need to memorize the names of things.

You will not be expected to remember the details of how the class Framework works.

Question Types

There will be some multiple-choice questions.

Canvas has various forms of multiple choice questions: matching, multiple dropdowns, true false, multiple answers. You may see some of each.

There will be some “multiple-multiple choice” questions (check all of the correct answers). You can think of this as a bunch of True/False questions.

There will be some short answer questions. Be concise. If you don’t get to the point in your first sentence, we might not read more than that. We may not accept ambiguous or long winded answers, and we may not give partial credit for non-specific answers For example, if the question is “what is 1+2”, the answer “An integer greater than two but less than four” may not receive credit. The answer “A number between 1 and 7” will definitely not get credit.

There will be short answer questions that ask you to explain the answers to true/false or multiple choice questions. Sometimes, these may ask you for a simple reason why a wrong answer is wrong (how can you tell this quickly). For example, “Is [1, 1; -1 1] a rotation matrix?” False. “How can you tell?” The first row adds up to more than one.

The exam is designed so that you shouldn’t need a calculator, but you can use one.