The Last Time
A physically-based photorealistic global illumination renderer

Overview
This Offline Renderer is a physically-based photorealistic 3D renderer I am writing from scratch in C++. Rainbow is built from the ground up as a global illumination renderer supporting global illumination through light transport algorithms, including volumetric unidirectional pathtracing with multiple importance sampling. The renderer is still a work in progress.
Features
- Advanced Global illumination
    
- Volumetric unidirectional path tracing
 - Volumetric probabilistic progressive photon mapping(Point estimation and Beam estimation)
 - Primary sample space metroplis light transport (Kelemen-style MLT)(WIP)
 - Path Guider (WIP)
 
 - Geometry
    
- Triangle and quad meshes
 
 - Lights
    
- Point light
 - Spot light
 - Directional light
 - Area light
 
 - Materials and BSDFs
    
- Thin-film iridescence
 - Rough conductor and dielectric using microfacet models (GGX)
 - Smooth conductor and dielectric
 - Transparent BSDF
 - Blend BSDF
 - Support alpha texture
 
 - Media
    
- Homogeneous medium
 - Heterogeneous medium (OpenVDB file)
 
 - Acceleration Structure System
    
- SAH-BVH acceleration
 - Embree3
 
 - Render Mode
    
- Adaptive mode
 - Progressive mode
 - Final mode
 
 
Select Images









 

The second image is from SPPM, initial radius = 0.08, $\alpha$ = 0.5, # of delta photon = 1M, iteration = 1K, 8m48s








The images below are from my old renderer Rainbow.





Rendered using volumetric unidirectional pathtracing.
Resources
Physically Based Rendering: The go-to reference book for rendering, by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
Monte Carlo Methods for Physically Based Volume Rendering: A good note for nearly all researches about volume render.