| CPSC 424 | 
Computer Graphics | 
Fall 2025 | 
CPSC 424 Exam 1 Review Information
Exam 1 will cover material from the first several weeks of class
  and labs 1-3: fundamentals of 3D computer graphics, the programmable
  pipeline, the viewing pipeline (modeling, viewing, and projection),
  projection types, hierarchical modeling, and representing geometry.
  Lighting, shading, and more recent topics will not be on this
  exam.
The exam will be written (not on the computer), with the focus on
concepts rather than specific syntax details — you won't be
asked to write actual WebGL code, but you should have a reading
knowledge of WebGL and be able to describe or give implementations at
the pseudocode level.
-  
"Reading knowledge" or "reading level" means that you should be
  familiar enough with WebGL (both the JavaScript and shader parts) to
  understand and be able to explain or modify code you are given.  For
  specific WebGL operations (such as gl.drawArrays
  or gl.drawElements) you should be able to plug in the right
  parameter values for a given situation but you do not need to be
  able to write the whole call from memory.
 -  
"Pseudocode level" means that you know the steps involved in the
  code if not necessarily the exact syntax. You can lump together
  the four statements needed to set up values for shader attributes
  into a single "set shader parameter X to Y".
 
You may have a single page of notes (8.5x11", one
  side) which will be handed in with your exam.  This page may be
  handwritten or typed and can contain whatever you would like, but
  it must be a hardcopy — on a piece of paper, not a
  laptop, tablet, phone, or other device — and must be
  personally prepared by you — you may not copy another
  student's page or hand out copies of yours to others.  Creating your
  own notes is an essential part of the learning process — deciding
  what to include requires engagement with the material which
  reinforces understanding and improves long-term retention of the
  material, provides an opportunity for review in order to identify
  gaps in your knowledge in time to ask questions before the exam,
  increases confidence in what you do know, and encourages taking
  ownership of your own learning.
Specific topics, terms, and concepts you should be familiar with:
  -  vector graphics vs raster graphics 
  
 -  RGB color and the alpha color component 
  
 -  coordinate system
  
 -  antialiasing
  
 -  the key elements of 3D graphics: geometric
    modeling, geometric transformations, viewing and projection,
    lighting and material, textures, animation
  
 -  transformations — 3D scale, rotate, translate
    (you don't need to know the matrices, but you
    should know the parameters for the operation and the effect of the
    transformations)
  
 -  combining transformations (transformations are applied to
    objects in the opposite order they occur in the code)
  
 -  hierarchical modeling
  
 -  the viewing pipeline: object coordinates, world
    coordinates, eye coordinates, clip coordinates, device
    coordinates; modeling transform, viewing transform, projection
    transform, viewport transform — the role of each of these,
    why they are important
  
 -  view window, view volume, viewport
  
 -  why there are near and far clipping planes (i.e. why is the
    view volume not infinite in z)
  
 -  projection
    
      -  parallel vs perspective projection, oblique projections
	— what the type of projection means in terms of
	projectors and the shape of the view volume, and how the
	resulting drawing is affected
      
 -  projection types: multiview orthographic, front, side,
	plan, axonometric, isometric, dimetric, trimetric, cabinet,
	cavalier, one-point perspective, two-point perspective,
	three-point perspective, oblique perspective (properties of
	the resulting drawing, how to achieve in WebGL)
    
 
   -  the graphics and viewing pipeline in OpenGL 1.1 and WebGL
    
      -  fixed vs programmable pipeline: what the terms refer to,
	the differences, why modern OpenGL uses a programmable
	pipeline
      
 -  modelview and projection matrices, why the modeling and
	viewing transforms are combined
      
 -  working with the WebGL programmable pipeline
	
	  -  flow of data
	  
 -  specifying modeling, viewing, projection
	    transformations
	  
 -  shaders: what computations are done (viewing pipeline,
	    lighting, texture transforms, application of textures,
	    bump mapping, ...), where (vertex or fragment shader), and
	    why
	  
 -  uniform, attribute, varying variables (what they are,
	    purpose/why you would use, where the values come from)
	
 
     
   -  representing geometry: polygonal/triangle
    meshes, indexed face sets
  
 -  geometry in WebGL
    
      -  the WebGL primitive types and what each type means for how the
	list of vertices is interpreted
      
 -  gl.drawArrays and gl.drawElements
	(reading knowledge)
    
 
    
   -  implementing a WebGL program (reading/pseudocode
  level), including
    
      -  implementing the graphics pipeline in WebGL (defining shaders
	and getting information to the shaders)
      
 -  creating a scene (setting up the camera and projection,
	positioning objects, and drawing wireframe and solid objects)