This is a Vulkan renderer that is written on stream from scratch - without using any third party code that is Vulkan specific. We are using non-Vulkan-specific third party libraries however.
The goal is to experiment with a few modern Vulkan rendering techniques, such as GPU culling & scene submission, cone culling, automatic occlusion culling, task/mesh shading, and whatever else it is that we will want to experiment with. The code will be written exclusively on stream.
The renderer is written using Visual Studio and targets Windows desktops with modern Vulkan drivers. You will need Visual Studio 2017 and Vulkan SDK to follow along
The development of this project streams on YouTube on weekends; Saturday and Sunday, 10 AM PST. You can watch the stream here: https://www.youtube.com/c/zeuxcg/live
Playlist: https://www.youtube.com/playlist?list=PL0JVLUVCkk-l7CWCn3-cdftR0oajugYvd
- Setting up instance/device and filling the screen with a solid color: https://youtu.be/BR2my8OE1Sc
- Rendering a triangle on screen: https://youtu.be/5eS3gsL_P-c
- Cleaning up validation errors and implementing swapchain resize: https://youtu.be/_VU-G5rglnA
- Rendering a mesh using shader storage buffers and int8: https://youtu.be/nKCzD5iK71M
During the streams we find various bugs in parts of the Vulkan stack and report them:
-
vkAcquireNextImageKHR crashes in validation layers if vkGetSwapchainImagesKHR hasn't been called
KhronosGroup/Vulkan-ValidationLayers#358 -
vkGetPhysicalDeviceSurfaceFormatsKHR doesn't fill format count correctly
https://software.intel.com/en-us/forums/graphics-driver-bug-reporting/topic/797666 -
Fix NonWritable check when vertexPipelineStoresAndAtomics not enabled
KhronosGroup/Vulkan-ValidationLayers#73 -
Implicit int8->float cast adds Int8 capability to the shader without asking for GL_KHX_shader_explicit_arithmetic_types
KhronosGroup/glslang#1525