This repository contains a self-contained implementation of evaluation and sampling code for the paper
An Adaptive Parameterization for Efficient Material Acquisition and Rendering
by Jonathan Dupuy and Wenzel Jakob
A Mitsuba plugin and Python routines for plotting are also provided.
A header file implementation of the model can be found in powitacq.h
/
powitacq.inl
(for spectral files) and powitacq_rgb.h
/
powitacq_rgb.inl
(for RGB files) Note that only the interface part is
enabled by default; to also compile the implementation, specify
#define POWITACQ_IMPLEMENTATION 1
before including this the corersponding .h
file. The namespace
powitacq
refers to the internal name of the project ("acquisition
using power iterations).
This proof-of-concept implementation involves some inefficiencies that should be removed in a "production" setting.
-
The spectral verision returns captured spectrum using a
std::valarray
, which causes dynamic memory allocation at every BRDF evaluation.In practice, the rendering system may only want to evaluate a fixed subset of the wavelengths, which could furthermore be stored on the stack.
-
The implementation doesn't rely on vectorization to accelerate simultaneous evaluation at multiple wavelengths.
The python
directory contains functionality to load and save .bsdf
files via Python/NumPy. The file visualize.py
loads an RGB material file,
plots the VNDF and slice data, and then writes it back.