Skip to content

Greketrotny/RayZath

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

480 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RayZath

RayZath is a 3D Monte Carlo path tracing renderer written in C++ and CUDA. It's a learning project involving topics like: graphics rendering, radiosity, light transport, rendering equation, linear algebra, GPGPU programming, micro optimization, asynchronous execution and efficient memory management.

living_room_ui

bugatti teapot normal per vertex 7k spp
multiple lights 13k billiard

For more renders and progress click here.

Features

Engine core

  • Renderable objects: Triangle based meshes
  • Lights: Direct lights, Spot lights
  • Materials: Mirror, Glossy, Diffuse, Refractive, Scattering, Transparent, Emissive
  • Camera: Field of view, Depth of view, Aperture, Exposure time
  • Mapping: textures, normals, metalness, roughness, emission
  • Acceleration structure: oct-tree bounding volume hierarchy
  • Rendering:
    • asynchronous GPU/CPU rendering
    • cumulative sampling
    • progressive rendering
    • next event estimation (NEE)
    • multiple importance sampling (MIS)
  • System of handles and smart pointers
  • Resource sharing and mesh instantiation
  • Loading/saving .obj, .mtl files and .json scene description

GUI

  • Real time render viewport preview
  • Multiple viewports (resizing, panning, zooming, object selection)
  • Editing properties of all components
  • Live attaching/detaching maps to/from materials
  • Mesh instancing manipulation
  • Object groupping
  • Loading/Saving maps, materials, meshes, models and scenes
  • Common mesh generation (cube, uv sphere, plane, cone, cylinder, torus)
  • Common material generation (metals, plastics, translusives, ...)

Libraries and dependences

  • CUDA - gpu rendering
  • Vulkan + GLFW - backend for GUI
  • ImGui - immediate user interface
  • json library - loading/saving json files
  • stb image - loading/saving textures and images
  • Math - tiny math library

About

3D path tracing renderer written in C++ and Nvidia CUDA.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors