BBM: A BRDF Benchmark
BBM is a C++20 based BRDF Benchmark that aims to provide:
Reference implementations of BSDF models
Support and integrating reading measured BSDFs
Support BSDF parameter fitting with different fitting methods and metrics
Easy integration of published fitted BSDF parameters
Integration in existing Rendering engines
Bindings to Python
Support different backbone engines (e.g., enoki, drjit, etc.)
BBM is a templated based library written in C++20 relying on features such
as concepts. It has been tested on recent versions of GCC and
Clang. BBM uses cmake for makefile generation and sphinx+doxygen
for documentation generation.
BBM is still under development. BBM currently (version 0.5.1, August 2023) supports:
34 BSDF and variants reference implementations (evaluation and importance sampling)
support for reading the MIT-MERL measured BSDFs
python bindings for BSDF models
a plugin for Mitsuba 1 (RGB and homogeneous BSDFs only)
6 different fitting metrics and BSDF fitting support (beta)
a native backbone implementation that does not rely on external libraries (no autodiff or packet support)
support for the Enoki backbone
fully supported: scalar and packet types
experimental: CPU-based autodiff
not supported: GPU types
support for the DrJIT backbone
fully supported: scalar and LLVM DrJit backbone for non-differentiable types
experimental: CPU and LLVM based autodiff
partial: DrJIT python bindings (currently requires manually importing the corresponding drjit.<scalar/llvm> python library)
not yet supported
DrJIT CUDA backbone
packet types
The development of BBM was in part supported by a National Science Foundation grant: CNS-1823154.