Skip to content

A Vulkan volumetric path tracer with a scene editor in Qt

Notifications You must be signed in to change notification settings

zhangfq-chemistry/vviewer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vviewer

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.

Alt text

Features

  • 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
  • Entity component system
  • Export and Import scenes
  • Cross platform build

Dependencies

vengine library

  • 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

vviewer binary

  • Qt. Set the Qt6_DIR environment variable. Version tested 6.2.4

Building

  • 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

Usage

  • Run vviewer binary for the scene editor. Needs Qt dependency
  • See offlinerender to use the rendering library without UI

Images

Alt text

Alt text

Alt text

Alt text

Alt text

Known issues

  • If a render fails with Device Lost, restart the application and render the scene with a smaller batch size

About

A Vulkan volumetric path tracer with a scene editor in Qt

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.6%
  • Other 0.4%