CS 419v/519v -- Winter Quarter 2023
Test #1 Review
This page was last updated: February 3, 2023
Test dates and times:
The test will open Wednesday, February 8, 12:01 PM and will close Sunday, February 12, 11:59 PM
This gives you 107 hours, 58 minutes 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 and the videos, including the Live Lectures
- what was covered on the quizzes
- what you have done in the projects
The test can cover any of the following topics:
-
Course Infrastructure:
Project Turn-in procedures
Bonus Days
-
Intro to Vulkan.
Major goals of Vulkan.
Who is the Khronos Group?
"Deprecated" means Gone!
-
Drawing.
Which Topologies can be used
Vertices-only (non-indexed) vs. Vertices+Indices (indexed)
Vertex buffers
vkCmdDraw( CommandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
vkCmdDrawIndexed( CommandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
Use of sizeof( ) and offsetof( )
-
Shaders
#define VULKAN
Uniform buffers required
Use of "set" in the layout
-
SPIR-V.
What is the compilation process?
The 2 steps.
Reasons for doing things this way
-
Data Buffers. (vkBuffer)
FindMemoryThatIsHostVisible( );
FindMemoryThatIsDeviceLocal( );
vkMapMemory( LogicalDevice, IN myBuffer.vdm, 0, VK_WHOLE_SIZE, 0, OUT &pGpuMemory );
-
GLFW
What is it?
glfwWindowShouldClose( )
Doesn't block: glfwPollEvents( );
Blocks: glfwWaitEvents( );
Blocks with a timeout: glfwWaitEventsTimeout( double secs );
double seconds = glfwGetTime( );
-
GLM.
What is it?
glm::vec3, glm::vec4, glm::mat4
glm::ortho( ), glm::perspective( ), glm::rotate( ), glm::translate( ), glm::scale( )
glm::inverseTranspose( )
How to multiply a mat4 times a vec3
#define GLM_FORCE_RADIANS
- Key-Time Animation
How to make it work
How to turn quantities into GLM transformation mat4's
-
OBJ Files
What the vn and vt lines signify
-
Instancing
What is it?
vkCmdDraw( CommandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
vkCmdDrawIndexed( CommandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
What can you do in a shader to make these objects look different?
gl_InstanceIndex
-
Descriptor Sets
What are they?
What is an advantage of using uniform buffer "sets"?
Why the Pipeline Data Structure layout needs to know the Descriptor Set layout
vkCmdBindDescriptorSets( );
-
Graphics Pipeline Data Structure
What OpenGL would call the "state" or the "context"
What are Dynamic State Variables?
What is "Restart Enable"? What are the special indexes that specify this?
Viewport and Scissoring -- what's the difference?
What is "Depth Bias"?
What can the Stencil Buffer do?
vkCmdBindPipeline( CommandBuffer,VK_PIPELINE_BIND_POINT_GRAPHICS, GraphicsPipeline );
-
Vulkan Textures.
Two-step copying of the texture image.
Host Visible memory ("staging image") to Device Local memory
Tecture sampling parameters
Mip-mapping
vkCmdCopyImage( );
Image View -- gives access to the actual image
Image View swizzling
-
Queues and Command Buffers:
What is a Vulkan Command Buffer? Why do things this way?
Why does the sample code create three Command Buffers?
The double-buffered rendering happens in two Command Buffers
Command Buffers get submitted to a Queue for execution
The test can cover any of the following Projects:
-
Project 1:
Create your own 3D object in Vulkan
-
Project 2:
Keytime Animation of an OBJ Object with Vulkan and GLM