Skip to content

Contingencyy/VulkanRenderer

Repository files navigation

VulkanRenderer

Installation

To run this project yourself, simply download the source code from GitHub, as well as the latest Vulkan SDK here: https://vulkan.lunarg.com/sdk/home. The solution will automatically try to find the Vulkan SDK installation by its environment variable VULKAN_SDK. Last tested with Vulkan SDK version 1.3.275.0.

! NOTE ! The Release build currently experiences irregular crashes at startup or shutdown, which I am investigating. Could be related to timeline semaphores.

Project

This is my study project, starting from September 2023, for a whole semester. The goal is to utilize the Vulkan graphics API to create a renderer that creates realistic and stunning real-time renders of cars and other objects with clear-coat pbr materials, utilizing raytraced shadows and reflections, rasterization will be used for everything else. This project uses the following Vulkan extensions:

  • Vulkan EXT dynamic rendering
  • Vulkan EXT descriptor buffer
  • Vulkan EXT timeline semaphores

Current features

  • Physically-based rendering
    • Lambertian/Burley/Oren-Nayar Diffuse BRDF
    • Clear-coat materials
    • Normal mapping
  • Image-based lighting
    • Generated BRDF LUT
    • Generates from equirectangular to cubemaps
    • Energy conserving indirect specular (works for clear-coat specular too)
  • Basic post-processing (Tonemap, gamma correction, exposure)

PBR Chess scene, with image-based lighting

PBR_Chess_IBL

Toy car with clear-coat enabled

Toy_Car_Clear_Coat

Toy car with clear-coat disabled

Toy_Car_No_Clear_Coat

Energy conservation in indirect specular (works for clear-coat specular too) - White Furnace Test

Indirect_Specular_Clear_Coat_Energy_Conservation_White_Furnace_Test.mp4

Planned features

  • Raytraced soft shadows
  • Raytraced reflections
  • Raytraced ambient occlusion

Stretch features

  • (Convolution) Bloom
  • Dithering
  • LODding
  • Mesh shaders (and meshlet builder)

About

A rendering project using the Vulkan API. Will eventually feature raytraced soft shadows, raytraced reflections, and raytraced ambient occlusion.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published