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.