#include <speculartransmission.h>
Public Member Functions | |
SpecularTransmission (const SWCSpectrum &t, Fresnel *fr, bool disp, bool archi=false) | |
virtual | ~SpecularTransmission () |
virtual void | f (const TsPack *tspack, const Vector &wo, const Vector &wi, SWCSpectrum *const f) const |
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 float | Weight (const TsPack *tspack, const Vector &wo) const |
virtual float | Pdf (const TsPack *tspack, const Vector &wo, const Vector &wi) const |
Private Attributes | |
SWCSpectrum | T |
bool | dispersive |
bool | architectural |
Fresnel * | fresnel |
Definition at line 34 of file speculartransmission.h.
lux::SpecularTransmission::SpecularTransmission | ( | const SWCSpectrum & | t, | |
Fresnel * | fr, | |||
bool | disp, | |||
bool | archi = false | |||
) | [inline] |
Definition at line 37 of file speculartransmission.h.
virtual lux::SpecularTransmission::~SpecularTransmission | ( | ) | [inline, virtual] |
Definition at line 41 of file speculartransmission.h.
void SpecularTransmission::f | ( | const TsPack * | tspack, | |
const Vector & | wo, | |||
const Vector & | wi, | |||
SWCSpectrum *const | f | |||
) | const [virtual] |
Evaluates the BxDF. Accumulates the result in the f parameter.
Implements lux::BxDF.
Definition at line 94 of file speculartransmission.cpp.
References lux::SWCSpectrum::AddWeighted(), architectural, lux::CosTheta(), dispersive, lux::Dot(), lux::MachineEpsilon::E(), lux::Fresnel::Evaluate(), fresnel, lux::Fresnel::Index(), lux::SpectrumWavelengths::SampleSingle(), lux::SinTheta2(), lux::TsPack::swl, and T.
Referenced by Pdf(), Sample_f(), and Weight().
virtual float lux::SpecularTransmission::Pdf | ( | const TsPack * | tspack, | |
const Vector & | wo, | |||
const Vector & | wi | |||
) | const [inline, virtual] |
Reimplemented from lux::BxDF.
Definition at line 46 of file speculartransmission.h.
References architectural, lux::Dot(), lux::MachineEpsilon::E(), and f().
bool SpecularTransmission::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 from lux::BxDF.
Definition at line 30 of file speculartransmission.cpp.
References architectural, lux::CosTheta(), dispersive, lux::Fresnel::Evaluate(), f(), fresnel, lux::Fresnel::Index(), cimg_library::cimg::max(), lux::SpectrumWavelengths::SampleSingle(), lux::SinTheta2(), lux::TsPack::swl, T, lux::Vector::x, and lux::Vector::y.
Reimplemented from lux::BxDF.
Definition at line 86 of file speculartransmission.cpp.
References architectural, lux::CosTheta(), lux::Fresnel::Evaluate(), f(), lux::SWCSpectrum::Filter(), and fresnel.
bool lux::SpecularTransmission::architectural [private] |
Definition at line 52 of file speculartransmission.h.
Referenced by f(), Pdf(), Sample_f(), and Weight().
bool lux::SpecularTransmission::dispersive [private] |
Definition at line 52 of file speculartransmission.h.
Referenced by f(), and Sample_f().
Fresnel* lux::SpecularTransmission::fresnel [private] |
Definition at line 53 of file speculartransmission.h.
Referenced by f(), Sample_f(), and Weight().
SWCSpectrum lux::SpecularTransmission::T [private] |
Definition at line 51 of file speculartransmission.h.
Referenced by f(), and Sample_f().