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)