CS 419v / 519v -- Vulkan

Winter Quarter 2018


Classes Projects Handouts Grades VHR Piazza

Word Cloud from our class notes:

This page was last updated: March 22, 2018


What We Will Be Doing This Quarter

The goals of this course are to leave you "career-ready" (i.e., both work-ready and research-ready) for tasks that require the implementation of graphics rendering and computing algorithms in Vulkan.

You will have access to the graphics systems in OSU's Computer Graphics Education Lab (CGEL) in Batcheller Hall 244. This might be the only place around OSU where you can get access to Vulkan. I will take responsibility for making sure that Vulkan continues to work in the CGEL. You are welcome to try to install Vulkan on other systems, but I don't have enough experience with it to be much help if it doesn't wotk right away.

Access to the CGEL is by the card-reader chip in your OSU ID. I will be submitting a class roster to EECS so that you can all be enabled.

This is a different type of class. Be aware that:


CS 450 or CS 550. You must be demonstrably good at OpenGL to take this class. No exceptions!


Here are some Vulkan resources I have found handy:


The class is being taught by Professor Mike Bailey.

Office: Kelley 2117 (2nd floor, south side)
Phone: 541-737-2542
E-mail: mjb@cs.oregonstate.edu

Prof. Bailey's Office Hours:

Prof. Bailey's Office Hours for the WQ are:
Mondays 11:00 - 1:00 Kelley 2117
Tuesdays 12:00 - 2:00 Kelley 2117
Thursdays 12:00 - 2:00 Kelley 2117
    or, anytime my office door is open
    or, by appointment -- send email

The Virtual Hand Raise (VHR)

It takes courage to ask a question in class. But, the worst thing of all is to not ask! So, this class also has the Virtual Hand Raise. Click here to get into it. It will allow you to send me a question or comment, completely anonymously. I will answer questions submitted this way by email to the class or in class.


Graham Sellers, Vulkan Programming Guide, Addison-Wesley, 2017. The OSU bookstore is supposed to have it. It is also available through Amazon.

It looks like you can get online access to the text from the book here.

You really should have ready access to this book, but it is probably not necessary to own one yourself. So much of Vulkan is about detail. This book does a good job with that. (My notes do a better job with general concepts.) Feel free to form a consortium to buy one book and share it.

Other course material will consist of printable notes, web pages, and notes taken in class.

My Handouts

Vulkan Intro 1pp 2pp 4pp 6pp
Data Buffers 1pp 2pp 4pp 6pp
Vertex Buffers 1pp 2pp 4pp 6pp
Shaders and SPIR-V 1pp 2pp 4pp 6pp
GLFW 1pp 2pp 4pp 6pp
GLM 1pp 2pp 4pp 6pp
Drawing 1pp 2pp 4pp 6pp
Instancing 1pp 2pp 4pp 6pp
Descriptor Sets 1pp 2pp 4pp 6pp
Textures 1pp 2pp 4pp 6pp
Graphics Pipeline 1pp 2pp 4pp 6pp
Queues and Command Buffers 1pp 2pp 4pp 6pp
Swap Chain 1pp 2pp 4pp 6pp
Sample Code 1pp 2pp 4pp 6pp
Physical Devices 1pp 2pp 4pp 6pp
Logical Devices 1pp 2pp 4pp 6pp
Dynamic State Variables 1pp 2pp 4pp 6pp
Push Constants 1pp 2pp 4pp 6pp
Getting Information Back from the Graphics System 1pp 2pp 4pp 6pp
A Review of OpenGL Compute Shaders 1pp 2pp 4pp 6pp
Vulkan Compute Shaders 1pp 2pp 4pp 6pp
Vulkan Synchronization 1pp 2pp 4pp 6pp
Pipeline Barriers 1pp 2pp 4pp 6pp
Push Constants Coming      
Quaternions 1pp 2pp 4pp 6pp
My Quaternion Code Quat.h Quat.cpp    
Normal Maps and Parallax Mapping 1pp 2pp 4pp 6pp
Spherical Stereographics 1pp 2pp 4pp 6pp
Antialiasing and Multisampling 1pp 2pp 4pp 6pp
MultiPass Rendering 1pp 2pp 4pp 6pp
More Information PDF      
Creating a Video Demo of a Graphics Project 1pp 2pp 4pp 6pp

Handouts from Student-led Discussions

February 14 Jian Tang The Vulkan Ecosystem 1pp      
February 14 Trevor Hammock Compiling Shaders with Visual Studio 1pp 2pp 4pp 6pp
February 14 Lance Roy Cross-Platform Vulkan with GLFW 1pp 2pp 4pp 6pp
February 21 Bei Rong A Vulkan Application Tentative Idea 1pp 2pp 4pp 6pp
February 21 Christopher Cooper Vulkan C++ SDK 1pp 2pp 4pp 6pp
February 28 Zach Lerew Reading an OBJ File 1pp 2pp 4pp 6pp
February 28 Richard Cunard Setting Up Vulkan 1pp 2pp 4pp 6pp
March 7 Braxton Cuneo Making Fun Shapes with Math 1pp      
March 7 Lili Shellhammer WebVk 1pp 2pp 4pp 6pp
March 7 Trevor Hammock Descriptors and How to Organize Them 1pp 2pp 4pp 6pp
March 12 Jianchang Bi Fractals 1pp 2pp 4pp 6pp
March 12 Raja Petroff Vulkan Debugging 1pp 2pp 4pp 6pp
March 12 Logan Wingard Vulkan vs. OpenGL Speeds and Performance PDF      
March 12 Alan Neads DirectX Vulkan Wrapper 1pp 2pp 4pp 6pp
March 14 Natasha Anisimova Vulkan and Animation 1pp 2pp 4pp 6pp
March 14 Victor Li Multithreading in Vulkan 1pp 2pp 4pp 6pp
March 14 Christopher Cooper DirectX 12 Differences 1pp 2pp 4pp 6pp
March 14 Glenn Upthagrove The Computer Graphics Teapot in Vulkan Video #1 Video #2 github link  
March 14 Zach Larew Project #5 With 1,000 Arms Video      
March 14 Hannah Solorzano Vulkan Multithreading and Performance 1pp 2pp 4pp 6pp

Class Schedule

To see an Academic Year calendar, click here.

Class time is: Monday and Wednesday, 2:00 - 3:30.

Be sure to check the class room in the table below to see what days we will be in Kelley 1005 and what days we will be in the Computer Graphics Education Lab (CGEL -- Batcheller Hall room 244).

  Date Room Topics
1 Jan 8 Kelley 1005 Go over the syllabus.
Filling out the alias web form.
Intro to Vulkan.
2 Jan 10 Kelley 1005 Project #1.
Data Buffers, Vertex Buffers
3 Jan 15 ----- Martin Luther King holiday -- no class today
4 Jan 17 Kelley 1005 Vertex Buffers
SPIR-V and Shaders
5 Jan 22 Kelley 1005 SPIR-V and Shaders
6 Jan 24 Kelley 1005 Matrices and GLM.
7 Jan 29 Kelley 1005 Start to go over the sample code.
8 Jan 31 Kelley 1005 Sample code.
9 Feb 5 Kelley 1005 Sample code.
10 Feb 7 Kelley 1005 Physical Devices.
11 Feb 12 Kelley 1005 Logical Devices.
12 Feb 14 Kelley 1005 Happy Valentine's Day!
13 Feb 19 Kelley 1005
14 Feb 21 Kelley 1005 The Winter Quarter Career Fair is today!
15 Feb 26 Kelley 1005
16 Feb 28 Kelley 1005
17 March 5 Kelley 1005
18 March 7 Kelley 1005
19 March 12 Kelley 1005
20 March 14 Kelley 1005


Project # Points Title Due Date
1 100 Create your own 3D object in Vulkan. January 19
2 100 Add Lighting to Your Own Vulkan Program February 9
3 100 Drawing using an Index Buffer February 23
4 100 Instancing March 5
5 100 Push Constants for Robot Animation March 16

Project Turn-In Procedures

Your project turnins will be electronic. Your electronic turnin will be done at http://engr.oregonstate.edu/teach and will consist of a PDF report. The PDF file should include:

Electronic submissions are due at 23:59:59 on the listed due date.

Your project will be graded and the score posted to the class web page.
If you want to know why you did not receive full credit, send me an email asking about it, or see me during Office Hours.
You have one week to do this.

Bonus Days and Late Assignments

Projects are due at 23:59:59 on the listed due date, with the following exception:

Each of you has been granted 5 Bonus Days, which are no-questions-asked one-day extensions which may be applied to any project, subject to the following rules:

  1. No more than 2 Bonus Days may be applied to any one project
  2. Bonus Days cannot be applied to tests
  3. Bonus Days cannot be applied such that they extend a project due date past the start of Test #2.

Click here to get a copy of the Bonus Day Submission Form. Fill this out and turn it in within a week after turning in your project.


Grades will be posted through this web page. To protect your privacy, they will be posted by your alias that you give me in Project #1.

Click here to see the current grade posting.

CS 519v will be graded on a fill-the-bucket basis. There will be 7 projects, 10 quizzes, and class participation. You get to keep all the points you earn.

Your final grade will be based on your overall class point total. Based on an available point total of 900, grade cutoffs will be no higher than:

Points Grade
830 A- 
810 B+
770 B- 
750 C+
710 C- 
690 D+
650 D- 

Notice that this grade scale is not 90%-80%-70%-60%. That is because I do a soft grade on the projects.

Downloadable Files

  1. Self-contained Windows 2017 solution:

  2. sample.cpp source code:

  3. PDF listing of sample.cpp:

  4. SampleVertexData.cpp cube array-of-structures:

  5. Shader sources:

  6. Disassembled shader SPIR-V binaries:

  7. Informational and Debugging Output from sample.cpp

  8. MP4 video of runing the sample program:

Class Rules

Students With Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Religious Holidays

Oregon State University strives to respect all religious practices. If you have religious holidays that are in conflict with any of the requirements of this class, please see me immediately so that we can make alternative arrangements.

Other Useful Online Graphics and Shader Information