#include <bxdf.h>
Public Member Functions | |
virtual | ~BxDF () |
BxDF (BxDFType t) | |
bool | MatchesFlags (BxDFType flags) const |
virtual void | f (const TsPack *tspack, const Vector &wo, const Vector &wi, SWCSpectrum *const f) const =0 |
virtual bool | Sample_f (const TsPack *tspack, const Vector &wo, Vector *wi, float u1, float u2, SWCSpectrum *const f, float *pdf, float *pdfBack=NULL, bool reverse=false) const |
virtual SWCSpectrum | rho (const TsPack *tspack, const Vector &wo, int nSamples=16, float *samples=NULL) const |
virtual SWCSpectrum | rho (const TsPack *tspack, int nSamples=16, float *samples=NULL) const |
virtual float | Weight (const TsPack *tspack, const Vector &wo) const |
virtual float | Pdf (const TsPack *tspack, const Vector &wi, const Vector &wo) const |
Public Attributes | |
const BxDFType | type |
Definition at line 235 of file bxdf.h.
virtual void lux::BxDF::f | ( | const TsPack * | tspack, | |
const Vector & | wo, | |||
const Vector & | wi, | |||
SWCSpectrum *const | f | |||
) | const [pure virtual] |
Evaluates the BxDF. Accumulates the result in the f parameter.
Implemented in EnvironmentBxDF, PerspectiveBxDF, lux::CookTorrance, lux::FresnelBlend, lux::Lafortune, lux::Lambertian, lux::Microfacet, lux::NullTransmission, lux::OrenNayar, lux::SpecularReflection, lux::SpecularTransmission, lux::BRDFToBTDF, GonioAreaBxDF, InfiniteBxDF, InfinitePortalBxDF, GonioBxDF, SkyBxDF, SkyPortalBxDF, SpotBxDF, and SunBxDF.
Referenced by lux::MultiBSDF::f(), lux::SingleBSDF::f(), lux::BRDFToBTDF::f(), rho(), lux::MultiBSDF::Sample_f(), and Sample_f().
bool lux::BxDF::MatchesFlags | ( | BxDFType | flags | ) | const [inline] |
Definition at line 240 of file bxdf.h.
References type.
Referenced by lux::SingleBSDF::f(), lux::SingleBSDF::NumComponents(), lux::SingleBSDF::Pdf(), lux::SingleBSDF::rho(), lux::MultiBSDF::Sample_f(), and lux::SingleBSDF::Sample_f().
Reimplemented in PerspectiveBxDF, lux::CookTorrance, lux::FresnelBlend, lux::Lafortune, lux::Microfacet, lux::NullTransmission, lux::SpecularReflection, lux::SpecularTransmission, lux::BRDFToBTDF, InfinitePortalBxDF, SkyPortalBxDF, SpotBxDF, and SunBxDF.
Definition at line 141 of file bxdf.cpp.
References INV_PI, lux::SameHemisphere(), and lux::Vector::z.
Referenced by lux::MultiBSDF::Pdf(), lux::SingleBSDF::Pdf(), lux::BRDFToBTDF::Pdf(), lux::MultiBSDF::Sample_f(), and Sample_f().
SWCSpectrum BxDF::rho | ( | const TsPack * | tspack, | |
int | nSamples = 16 , |
|||
float * | samples = NULL | |||
) | const [virtual] |
Reimplemented in lux::Lambertian, and lux::BRDFToBTDF.
Definition at line 190 of file bxdf.cpp.
References lux::SWCSpectrum::AddWeighted(), f(), INV_TWOPI, lux::LatinHypercube(), M_PI, lux::r, Sample_f(), lux::UniformSampleHemisphere(), and lux::Vector::z.
SWCSpectrum BxDF::rho | ( | const TsPack * | tspack, | |
const Vector & | wo, | |||
int | nSamples = 16 , |
|||
float * | samples = NULL | |||
) | const [virtual] |
Reimplemented in lux::Lambertian, and lux::BRDFToBTDF.
Definition at line 172 of file bxdf.cpp.
References lux::SWCSpectrum::AddWeighted(), f(), lux::LatinHypercube(), lux::r, Sample_f(), and lux::Vector::z.
Referenced by lux::BRDFToBTDF::rho(), lux::MultiBSDF::rho(), and lux::SingleBSDF::rho().
bool BxDF::Sample_f | ( | const TsPack * | tspack, | |
const Vector & | wo, | |||
Vector * | wi, | |||
float | u1, | |||
float | u2, | |||
SWCSpectrum *const | f, | |||
float * | pdf, | |||
float * | pdfBack = NULL , |
|||
bool | reverse = false | |||
) | const [virtual] |
Samples the BxDF. Returns the result of the BxDF for the sampled direction in f.
Reimplemented in PerspectiveBxDF, lux::CookTorrance, lux::FresnelBlend, lux::Lafortune, lux::Microfacet, lux::NullTransmission, lux::SpecularReflection, lux::ArchitecturalReflection, lux::SpecularTransmission, lux::BRDFToBTDF, InfinitePortalBxDF, SkyPortalBxDF, SpotBxDF, and SunBxDF.
Definition at line 119 of file bxdf.cpp.
References lux::CosineSampleHemisphere(), f(), Pdf(), lux::SameHemisphere(), and lux::Vector::z.
Referenced by rho(), lux::MultiBSDF::Sample_f(), lux::SingleBSDF::Sample_f(), and lux::BRDFToBTDF::Sample_f().
Reimplemented in lux::SpecularReflection, lux::ArchitecturalReflection, lux::SpecularTransmission, and lux::BRDFToBTDF.
Definition at line 208 of file bxdf.cpp.
Referenced by lux::MultiBSDF::Pdf(), lux::MultiBSDF::Sample_f(), and lux::BRDFToBTDF::Weight().
const BxDFType lux::BxDF::type |
Definition at line 264 of file bxdf.h.
Referenced by MatchesFlags(), lux::MultiBSDF::Sample_f(), and lux::SingleBSDF::Sample_f().