Skip to content

A wavefornt path tracer from scratch in C++ & CUDA

Notifications You must be signed in to change notification settings

Rainzor/Renderer-CUDA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUDA Path Tracer

Features

  • Wavefront Path Tracing
    • Sperating megakernels into several kernels: RayGen, Intersection, Shade ...
    • Less Warp Divergence: Stream compacting the ray path segments
    • Improve Memory Access Coalescing: SoA data layout and sorting path segments by material type before shading
  • Texture Mapping: More surface color based on CUDA Texture Object
  • Triangle Primitive Mesh: More shapes based on Obj loader
  • Accelerate Data Structure BVH:
    • Binary Radix Tree Construction
    • Parallel Tree Traversal
    • Two Level Acceleration Structures: world level (TLAS) & model level (BLAS)
  • Efficient Monte Carlo Integrator:
    • Next Event Estimation: Shadow rays are explicitly aimed at light sources
    • Multiple Importance Sampling: Combining the PDFs of different sampling techniques
  • Physically Based Rendering:
    • Diffuse (Lambertian)
    • Fresnel Reflection

Screenshots

bunny_1024spp

Dependencies

  • CUDA
  • OpenGL
  • GLFW
  • GLEW
  • GLM
  • ImGui
  • Stb Image
  • Tinygltf
  • Tinyobj loader
  • nlohmann-json

Reference

About

A wavefornt path tracer from scratch in C++ & CUDA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published