Contingencyy / VulkanRenderer

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

License:MIT License


Languages

Language:C++ 89.5%Language:GLSL 10.5%Language:C 0.0%