An offline physically-based ray-tracing renderer, based on my old project Crystal Engine. The architecture of this project is largely based on PBRT-v3, but specific implementations are done by myself. The goal of this project is to build a physically-based renderer from scratch, learn and practice various global illumination algorithms, and can even be used as pre-processing tool for real-time rendering.
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./Crystal2 <config file> <scene file>
- Integrators
- Path Tracing
- Path Tracing + MIS Lighting
- Photon Mapping
- Bidirectional Path Tracing
- Materials
- Diffuse Material
- Mirror Material
- Glass Material
- Microfacet Glass Material
- Microfacet Material (GGX)
- Microfacet Material (Anisotrophic)
- Phong Material
- Samplers
- Random Sampler
- Stratified Sampler
- Halton Sampler
- Textures
- 2D Texture
- Skybox Texture
- 3D Texture
- Binlinear Interpolation
- Mipmap
- Geometry
- Sphere
- Triangle Mesh
- Triangle
- Disk
- Acceleators
- Brute force
- BVH with SAH
- K-D Tree
- ?
- Lights
- Point Light
- Area Light
- Volume Scattering
- Volume Path Tracer
- Scene Loader
- JSON Loader







