CS 450/550 -- Fall Quarter 2023
Test #2 Review
This page was last updated: December 2, 2023
Test #2 will be taken using the Canvas Quiz mechanism.
It will consist of 40 multiple choice questions to be done in 60 minutes.
It is Open Notes.
Warning! "Open Notes" is not the same as "I don't need to study for it"!
You will run out of time if you have to lookup in the notes every one of the questions.
Date and Time Range:
Test #2 (which is a second test, not a comprehensive final) will be taken on Canvas in a 60-minute interval
of your own choosing during December 13-17 (Finals Week).
It will open at 12:01 AM on Wednesday December 13 and will close at 11:59 PM on Sunday, December 17.
The test will be open notes.
Test rules:
-
The test is worth 100 points.
-
It is open notes.
-
It is closed friends.
-
You are responsible for:
- what is in the handouts,
- what was said in {class,Live Lecture,videos},
- what you have done in the projects.
Clearly I cannot enforce the Closed Friends.
I am counting on your honesty.
I would refer you to the
Code of Student Conduct.
Also, you should know that, while there is a lot of good information on the Internet,
there is a lot of bad information too, or information explained in a different way.
This test has been written with respect to our class notes.
Complaints about a missed test answer because "that's not what something000something.com says" will be ignored.
The test can potentially cover any of the following topics:
Class Topics:
-
GLM:
What is it? Why do we care?
The glm::vec3, glm::vec4, and glm::mat4 data types
Overloading the "*" operator
-
Geometric Modeling:
L-systems
Meshes
Cubic Curves
Bézier cubic curves (although, in the general case, they can be any order).
[ You don't need to know the equation. ]
Catmull-Rom curves
[ You don't need to know the equation. ]
Curve drawing (increment t by some quantity)
The fact that Bézier surfaces exist, and the bicubic ones are sculpted with 16 points
Constructive Solid Geometry (CSG, 3D Venn Diagrams, Booleans)
Metaballs that can "blend" together if they get close enough
Using displacement textures in the vertex shader (Moon surface example)
Simplified Euler's rule relating Faces, Edges, and Vertices (F - E + V = 2)
-
Vertex Buffer Objects:
What they are, where they live, what the advantage of using them is
GL_ARRAY_BUFFER vs. GL_ELEMENT_ARRAY_BUFFER: what each is used for
glDrawArrays( ) vs. glDrawElements( )
[ You don't need to be able to replicate the code. ]
-
GLSL Shaders:
The two most common types of GLSL Shaders:
vertex shaders,
fragment shaders
Interface Variables:
uniform variables,
out/in (varying, in the Mac world) variables
Data types (e.g., vec3, vec4, mat4)
Common built-in variables:
gl_ModelViewMatrix, gl_ProjectionMatrix, gl_ModelViewProjectionMatrix
gl_Vertex, gl_Normal, gl_Color, gl_MultiTexCoord0, gl_Position, gl_FragColor
The role of the rasterizer
Texture units, the built-in texture( ) function, callable from any shader type
discard operator (fragment shader only)
-
Casting Shadows in OpenGL:
Two-pass algorithm
First pass renders from the point of view of the light source and records depths from there
Second pass uses those depths to determine what fragmants are not visible to the light and thus are in a shadow
If a fragmant is in a shadow, render it with Ambient light only
-
Forward Kinematics:
The general pattern for computing
[M n/g] = [M 1/g] * [M 2/1] * ... * [M n-1/n-2] * [M n/n-1]
-
Instancing:
General idea
Why do we care?
The built-in shader variable gl_InstanceID
-
Rendering:
Local versus Global illumination.
What the Rendering Equation means
[ you don't need to know the equation itself ]
OpenGL rendering: {Z,Zed,Depth}-buffer
Ray-tracing: what it is good at, how it models light transport, intersectng a ray with a xxx
[ don't need to know equations ]
Radiosity: what it is good at, how it models light transport, system of equations
[ don't need to know equations ]
Sub-surface scattering: what materials is it good for creating the illusion of?
Path-Tracing: Bidirectional Reflectance Distribution Function (BRDF), distribution of the bounced light rays
Screen Space Ambient Occlusion (SSAO)
[ what it does, how it works ]
-
Stencil Buffer:
What is it?
How does it work?
What are some of the things you can do with it?
-
Animation:
Keyframing/Keytiming: what it is, why do it this way
Forward kinematics: what it is, why do it this way
Inverse kinematics (IK): what it is, why do it this way
Particle systems: what they are, the three elements of doing it (Emit, Display, Update), what effects you can create this way
Rigid Body Physics: why do it this way, F=ma, springs, dampers, chains/strings, cloth
Functional animation ("fake physics"): what it is, how it is done, why do it this way, its use in collision avoidance
Motion Capture (MoCap): what it is, why do it this way
-
3D Printing:
Additive versus subtractive manufacturing
The STL file format
Overhangs
The Vertex-to-Vertex rule
Simplified Euler's Formula (F - E + V = 2)
-
Putting the Eye Position on an Orbiting Body:
Using transformations to get the eye position, look-at position, and up-vector for a call to gluLookAt( )
-
Stereographics:
Horizontal parallax
Vertical parallax
Plane of zero parallax
Non-symmetric viewing volumes
Different ways of channeling the images into each eye
Lenticular
ChromaDepth
-
Looking Glass Stereo Quilts:
[ This is here for fun and will not be on the test. ]
-
Virtual and Augmented Reality:
Yes, I'm confused by all the definitions too.
Let's just called it "Mixed Reality".
A shader for the fisheye lens distortion
Foveated Rendering
Variable Rate Rendering
Headset for your phone
CAVE
Spherical Stereo rendering
OpenXR
-
Vulkan:
General information
Why it was created, why should you care
Comparison with OpenGL
The Pipeline State Object (PSO) -- put a combination of all state values in one data structure
Compiling shaders into a SPIR-V file: why do it this way?
-
More Information
Projects:
4 | Keytime Animation
|
5 | Texture Mapping
|
6 | Shaders
|
[ I can't ask any Final Project questions because everyone is doing something different. ]