This is a path space differentiable renderer (psdr-cuda) with bssrdf support which forked from psdr-cuda. The derivation and experimental detail can be found in paper.
To build the code, please follow this process of compiling psdr-cuda
The material we use in reconstructing is HeterSub
, the definition and implementation can be found in hetersub.h
and hetersub.cpp
, currently, it is using dipole model, one can switch to better diphole in the future. The expression of diphole model and better diphole model can be found in this report.
Here are several integrators implemented in this framework, the one we used for reconstruction is the DirectIntegrator
, it is a direct light integrator with point light assumption, support gradient estimation of geometry with bssrdf material (both primary and secondary discontintuity). The OldDirectIntegrator
correspond to the DirectIntegrator
in the original psdr-cuda codebase; and the ColocateIntegrator
is integrator with the "point light locates at the same place as camera" assumpition. To validate the implementation of BSSRDF we used the LaserIntegrator
, where a directional coherent light is pointing down to a plane, it is deprecated now.
To do: adding sythetic examples ...
The latest optimizing code is in "examples/python/learn_real_data.py"
.
To set the ROOT_DIR
, SCENE_DIR
, etc... go to "examples/python/constants.py"
.
To optimize homogeneous value of alebdo
and sigma_t
, set args.sigma_texture = 0
.
To optimize albedo
and sigma_t
as texture, set args.sigma_texture = 512
and args.albedo_texture = 512
.
Find real data here Soap and Kiwi.