Fermat
|
A bsdf inverter
#include <path_inversion.h>
Public Methods | |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE void | setup (ComponentSelectionStrategy _strategy, const Bsdf &bsdf, const VertexGeometry &geom, const cugar::Vector3f &in, const cugar::Vector3f &out, const bool _RR=false) |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE Bsdf::ComponentType | sample_component (const float v) const |
template<typename TRandomGenerator > | |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | invert (const Bsdf &bsdf, const VertexGeometry &geom, const cugar::Vector3f &in, const cugar::Vector3f &out, TRandomGenerator &random, cugar::Vector3f &z, BsdfInverse::PdfType pdf_type=BsdfInverse::kDirectTransformPdf, float *p=NULL, float *p_proj=NULL) |
template<typename TRandomGenerator > | |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | invert_component (const Bsdf &bsdf, const VertexGeometry &geom, const cugar::Vector3f &in, const cugar::Vector3f &out, const Bsdf::ComponentType out_comp, TRandomGenerator &random, cugar::Vector3f &z, const bool output_global_coordinates=true) |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE float | pdf (const Bsdf::ComponentType out_comp, cugar::SphericalMeasure measure=cugar::kProjectedSolidAngle, const bool weighted=false) const |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE float | pdf_comp (const Bsdf::ComponentType out_comp) const |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE float | weight (const Bsdf::ComponentType out_comp) const |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | precompute_component_selection_coefficients () |
Public Members | |
ComponentSelectionStrategy | strategy |
float | w [4] |
float | p_comp [4] |
float | p_comp_proj [4] |
float | p_sel [4] |
cugar::Vector3f | f_comp [4] |
bool | RR |