Fumeng is a hobby project which implements a monte-carlo path tracer from scratch. Fumeng means illusory dream in English.
- Pin-hole camera
- Thin-lens camera (with depth of field)
- Sphere
- Rectangle
- Triangle
- OBJ mesh
- Lambert diffuse
- Specular reflection
- Specular transmission
- Disney BSDF
- Subsurface scatering
- Volumetric media
- Directional light
- Area light
- Image-based light (HDR)
- Built-in BVH
- Embree BVH (opitional, but highly recommended)
- Basic monte-carlo path tracer
- Bidirectional path tracer
- Multiple importance sampling
- OIDN denoise (opitional, but highly recommended)
- Tonemapping
- Image texture
- Constant texture
- Checkerboard
- Custom description using json
git clone --recursive https://github.com/hietwll/Fumeng.git
Both Embree and OIDN are optional for Fumeng, but it's strongly recommended to use them. You can just download the pre-built packages from their websites, and extract the packages.
cd /path/to/fumeng
cmake -B build -DCMAKE_BUILD_TYPE=Release -DUSE_FLOAT=TRUE -DUSE_EMBREE=TRUE -DUSE_OIDN=TRUE -Dembree_DIR=/path/to/embree/lib/cmake/embree-x.x.x -DOpenImageDenoise_DIR=/path/to/oidn/lib/cmake/OpenImageDenoise-x.x.x
- -DUSE_FLOAT: use single precision if TRUE, use double precision if FALSE
- -Dembree_DIR: directory of embree cmake config file
- -DOpenImageDenoise_DIR: directory of embree cmake config file
cmake --build build --parallel 4 --target CMD_EXE
Supported complier:
- VS 2017/2019 for windows
- gcc and clang for linux
cd /path/to/fumeng/scenes
../build/src/cmd/CMD_EXE DamagedHelmet/DamagedHelmet.json
result can be found in the same directory of the scene file.