COMP 5822M: High-Performance Graphics 2019-2020
ASSIGNMENT 4: Shadow Mapping in Vulkan [20 marks]
For this exercise, you should implement shadow mapping in Vulkan. Full marks will be given to students who deal correctly with shadow acne and implement percentage closest filtering to deal with shadow aliasing.
In industry, it is always useful to have your code set up so that you can turn individual effects and stages on or off, either for testing or demo purposes. In this instance, at least the following steps can be controlled, although you could do more steps:
• Display the shadow map itself
• Render the shadow map as a simple texture on the surfaces
• Render the depth in light coordinates for each visible surface
• Shadow map vs. standard ambient lighting
• Shadow acne removal
• PCF filtering
Moreover, while you may continue to use the duck and bunny, shadow maps are best tested with complex scenes. For this, you may download any free-to-use assets that you can find, provided that:
• Your code (as always) compiles with no additional libraries on my test machine,
• Your handin is no larger than 20MB total size
Marks will be assessed as follows:
[8 marks] Basic shadow map
[3 marks] Shadow acne removal
[3 marks] PCF implementation for anti-aliasing
[3 marks] GUI controls for showing the stages of the computation
[3 marks] Complex scene demonstrating shadow map quality
You are only allowed to use the following code resources:
vulkan-tutorial.com (including object & image loader code)
code handed out for COMP 5812M, COMP 5821M, COMP 5822M
GLM / GLFW
The standard ArcBall code
All other code must be written by you personally.
Penalties of up to 25% may be assessed for poor software engineering choices (makefiles, comments, structure, hardcoded input names, &c.)
Handin:
Please hand in the following files to the VLE:
Any code or vertex shader files
Any assets you load (include object models)
The.mtl and texture files (in .jpg or .ppm) that you have used
A readme
Do NOT handin your Visual Studio project files or anything not listed above.
Deadline: Friday, May 8, 10:00 am