CS 457/557 -- Winter Quarter 2024
Test #2 Review
This page was last updated: January 8, 2024
Test dates and times:
Test #2 will go live at 12:01 AM PT on Wednesday, March 20.
It will close at 23:59 PT on Sunday, March 24.
This gives you 119 hours, 58 minutes in which to take a 1-hour test.
Test Information:
-
This will be a multiple choice test cast as a Canvas "Quiz".
-
There will be 40 questions, worth 2.5 points each.
-
You will have 60 minutes to complete it.
Once you start, you need to finish.
Canvas does not allow you to pause, leave, then come back and resume.
-
The test is open notes and closed friends.
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 look up in the notes every one of the questions.
-
Clearly, I cannot stop you from accessing information on the Internet.
However, the test has been written against our class notes.
If you miss a particular question, any protest of the form "But somethingsomething.com said that..." will be ignored.
-
You are responsible for
- what is in the handouts
- what was said in class or in the videos
- what was covered on the quizzes
- what you have done in the projects
The test can potentially cover any of the following topics:
Class Topics:
-
Red-Cyan Stereopairs
[ This was just for fun -- it will not be on the test ]
-
Image manipulation in shaders:
Negative
Image un-masking --
you do need to know what "don't-want" image goals go with what "do-want" image goals:
luminance,
brightness,
contrast,
saturation,
difference,
chromakey,
edge detection,
blurring,
sharpening
Embossing
Toon rendering
Mandelbrot set, Julia set -- what is different about how these images are created?
[ You don't need to know these equations ]
-
Render-to-Texture:
How does it work?
What types of things can you do with it?
[ You don't need to know the OpenGL or glman code to do this! ]
-
The physics of rainbows:
The idea of covering the scene with a "curtain" of fragments
and then seeing which are in the right place to make a rainbow color
Discard the rest
[ You don't need to know what the exact angles are, although they are fun to know in order to impress people with. ]
-
The physics of spectral effects (CDs, DVDs, oilslicks):
The idea of determining which wavelengths reinforce, and thus produce a specific visible color
at a particular fragment.
[ You don't need to know the equations. ]
-
Simulating real lenses:
We need 2 refractions: one in the front and one out the back
We can refract out the back because we know the mathematical shape of the lenses (spherical)
-
Geometry Shaders:
Where they fit in the graphics shader pipeline (right before the rasterizer)
5 possible input topologies, 3 possible output topologies
[ You do need to know what those 8 topologies are. ]
Adjacency topologies
Emitting a vertex
Ending a primitive
How "in" variables are handled (as arrays)
How "out" variables are handled (emitted)
Triangle parametric interpolation
[ You do need to know the parametric triangle equation. ]
Examples of use: Bézier curve, shrink, silhouettes, explosion, hedgehog, sphere subdivision
[ You won't have to be able to code these, but you should know how they work ]
-
GLM:
What is it, why we care.
The fact that GLM creates many data types that mimic GLSL data types (vec2, vec3, vec4, mat4, etc.)
The fact that GLM mimics many OpenGL fixed-functions (glm::rotate, glm::lookat, glm::perspective)
The fact that you need to use GLM if you are using post-deprecation OpenGL and if you are using Vulkan
[ You don't need to be able to write any GLM code. ]
- Shadows:
General idea
The first shader program (vertex+fragment) generates the depth map from the eye's point of view
The second shader program (vertex+fragment) uses that depth map to decide if a given fragment
is blocked from seeing the light source
How do you create the shadow? Paint with black? No! Just use ambient and skip the diffuse and specular.
-
The Science Behind Pixar
[ This was just for fun and won't be on the test. ]
- Tessellation shaders:
Where they fit in the graphics shader pipeline
(If you have a geometry shader, they are between the vertex and geometry shader.
If you don't have a geometry shader, they are between the vertex shader and the rasterizer.)
What they are good for
What is the purpose of the Tessellation Control shader?
What is the purpose of the Tessellation Evaluation shader?
The (u,v,w) coordinates used by the TES
What the Tessellation Primitive Generator (TPG) does
(I would have called it the "Tessellation Pattern Generator".)
How to spell "tessellation". (Just kidding.)
Examples of use:
Bézier curve, Bézier surface,
adaptive sphere subdivision,
PN triangles,
adaptive terrain
[ You won't have to be able to code these, but you should know how they work ]
[ You don't need to know the Bézier curve, Bézier surface, or PN triangle equations. ]
-
Wave Motion:
How do wave particles really move (in circles)
Can vary: wave speed, wave amplitude, wave frequency, wave direction
-
Visualization in shaders:
Visualization image manipulation
Sending data to be turned into colors versus sending colors
Assigning colors and alphas based on scalar value
("transfer function")
Point clouds: what they are, the two kinds of distracting artifacts that they create
Jitter clouds: what they are and how they prevent those two artifacts
Cutting planes
Contour planes
[ You do need to know the xyz ↔ stp equations ]
Passing in per-vertex scalar values
3D probes (a good use for eye coordinates)
3D volumes
[ You don't need to know the compositing equation. ]
Line integral convolution
-
The SuperQuad Geometry Shader
What it does, how it does it
Why it's useful in visualization
-
Compute Shaders:
They are not part of the graphics hardware pipeline.
What they are good for,
how to use them
Shader Storage Buffer Objects (SSBO):
how they are different from previous OpenGL buffer objects
The fact that Compute Shaders get compiled and employed the same way as do all other GLSL shaders.
The global id (gid) variable.
Using gid to access global memory
Work-groups, work-items.
The meaning of the yellow robot analogy
The meaning of the phrase "data parallel"
-
Bump-Mapping with Surface-Local Coordinates
Needed to do bump-mapping on non-planer surfaces
Creates a coordinate system that wraps around an object
What are N, T, and B?
[ You don't need to know the details of the matrix equations. ]
[ You don't need to know the details of the cross-product method or the Gram-Schmidt method. ]
-
Bump-Mapping with Normal mapping
It's a form of bump-mapping
What is the effect?
How do we get that effect?
-
Bump-Mapping with Parallax mapping
It's a form of bump-mapping
What is the effect?
How do we get that effect?
-
Vulkan:
Differences between OpenGL and Vulkan
Differences between OpenGL GLSL and Vulkan GLSL
SPIR-V
-
Vulkan Ray-tracing
How it works
What the 5 new shader types are
The fact that these shaders are event-called, not pipeline-called
-
Efficient Ray-Triangle Intersections
Re-using the triangle interpolation equation from the Geometry Shader notes
-
Algorithmic Art
Connet Circles
[ You don't need to know the equation. ]
What does the built-in variable gl_FragCoord tell you?
(Where you are in pixel coordinates.)
-
RenderMan for GLSL Users:
Difference in goals between RenderMan and GLSL
What is a "Microfacet"?
Oi = 0. versus discard
-
More information.
Projects:
- Project 4: Cube Mapping Reflective and Refractive Bump-mapped Surfaces
- Project 5: Image Manipulation: Fisheye, Whirl, Mosaic, Blend