/Real-Time-Ray-Tracing

Physically based ray tracing / path tracing with CUDA. Real time rendering with Vulkan.

Primary LanguageCMIT LicenseMIT

Real-time Ray Tracing

  • Physically based ray tracing / path tracing.
  • GPU Compute workload implemented in CUDA.
  • Real time rendering framework implemented with Vulkan.

Physically based rendering

  • Monte Carlo uni-directional path tracing
  • Surface BSDF models
  • Rayleigh-Mie sky model
  • Local light source

Acceleration

Variance reducing

  • Low-discrepancy blue noise sampler
  • Multiple importance sampling

Scene traversal

  • LBVH
    • Two level BVH, each level with limited element count for better kernel efficiency
    • Triangle list -> AABB, morton codes, scene AABB
    • Radix sort -> Sorted morton codes, leaf reorder indices
    • LBVH build
    • BVH traversal using stack

Denoising

  • SVGF `Atrous spatial + temporal filter

Optimizations

  • Adaptive sampling/filtering with image noise level estimation
  • Dynamic resolution

Post-processing

  • Eye-adaptive histogram-based auto exposure
  • Bloom effect
  • Lens flare
  • Tone mapping
  • Sharpening

Prerequisites

  • Windows 10 OS
  • cmake 3.10
  • CUDA
  • Vulkan
  • Git submodules
    • git clone --recurse-submodules
    • git submodule update --init --recursive
  • Please note that it may have conflict with assimp NOMINMAX define

References