joeylitalien / rayone

A comprehensive global illumination renderer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rayone 💡

Description

Rayone (from French "Rayon") is a simple global illumination renderer that uses Monte Carlo techniques such as importance sampling, rejection sampling, and variance reduction to render simple scenes (e.g. Cornell Box). This path tracer is being developed using David Beason's smallpt as a starting point while remotely following the course ECSE 689 Realistic Image Synthesis by D. Nowrouzezahrai (McGill University, Fall 2016) and reading Physically Based Rendering by M. Pharr and G. Humphreys.

Features

  • Global illumination via unbiased Monte Carlo path tracing
  • Modular code
  • Multithreading using OpenMP
  • Soft shadows from diffuse luminaire
  • Diffuse and specular BRDFs
  • Antialiasing
  • Ray-sphere intersection
  • Cosine-weighted hemispherical importance sampling for diffuse reflection
  • Phong cosine-power hemispherical importance sampling for specular reflection
  • Russian roulette for path termination

Future Implementations

  • Refractive BRDF
  • Ray-triangle intersection
  • Motion blur
  • Volumetric single scattering
  • Environment map importance sampling
  • Photon mapping

Current Known Issues

  • Cannot retrieve radius of Sphere for ray hit since the scene is a Shape vector

About

A comprehensive global illumination renderer


Languages

Language:C++ 91.4%Language:Makefile 4.6%Language:C 2.3%Language:Shell 1.8%