A real time rendering and offline volumetric path tracing engine library written in Vulkan, and a 3D UI scene editor application written in Qt. Uses VK_KHR_ray_query.html and VK_KHR_ray_tracing_pipeline.html for GPU accelerated ray tracing implementing ray generation, ray closest hit, ray any hit and ray miss shaders.
- Spatially varying Physically based (Metallic/Roughness) and Lambert materials
- alpha, normal, emissiveness and ambient occlusion
- Bindless descriptors
- Point, Directional and Mesh lights
- HDR equirectangular and cubemap environment maps
- Perspective and Orthographic cameras
- Tone mapping
- Real time rendering
- Deferred rendering
- Ray traced shadows
- Intancing
- Image Based Lighting
- GPU path traced rendering
- Multiple importance sampling
- Light sampling
- BRDF sampling
- Low discrepancy samplers
- Next event estimation
- Homogeneous media
- Russian roulette
- Depth of field
- Denoising
- Multiple importance sampling
- Entity component system
- Export and Import scenes
- Cross platform build
- Vulkan SDK. Set the VULKAN_SDK environment variable. Version tested 1.3.204.1
- assimp. Set the ASSIMP_ROOT_DIR environment variable. Version tested 5.2.5
- OpenImageDenoise. Set the OIDN_ROOT_DIR environment variable. Version tested 2.1.0
- Qt. Set the Qt6_DIR environment variable. Version tested 6.2.4
- Install dependencies
- Clone the project and all its submodules
- Create build folder, run cmake and build
- Runtime dependencies like the shaders and the assets folders are copied automatically, but in any case, make sure they are besides the binary
- Run vviewer binary for the scene editor. Needs Qt dependency
- See offlinerender to use the rendering library without UI
- If a render fails with Device Lost, restart the application and render the scene with a smaller batch size