wangkepfe / Real-Time-Ray-Tracing

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

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

License:MIT License


Languages

Language:C 73.4%Language:Cuda 17.5%Language:C++ 8.6%Language:CMake 0.2%Language:Python 0.1%Language:Batchfile 0.0%Language:GLSL 0.0%