pub fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float {
        match self {
            Bxdf::Empty(_bxdf) => 0.0 as Float,
            Bxdf::SpecRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::SpecTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::FresnelSpec(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::LambertianRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::LambertianTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::OrenNayarRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::MicrofacetRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::MicrofacetTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::FresnelBlnd(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Fourier(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Bssrdf(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisDiff(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisSS(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisRetro(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisSheen(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisClearCoat(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Hair(bxdf) => bxdf.pdf(wo, wi),
        }
    }
/// Evaluate the PDF for the given outgoing and incoming directions.
///
/// Note: this method needs to be consistent with ```Bxdf::sample_f()```.
Evaluate the PDF for the given outgoing and incoming directions.
Evaluate the PDF for the given outgoing and incoming directions .
pub fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float {
        match self {
            Bxdf::Empty(_bxdf) => 0.0 as Float,
            Bxdf::SpecRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::SpecTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::FresnelSpec(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::LambertianRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::LambertianTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::OrenNayarRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::MicrofacetRefl(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::MicrofacetTrans(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::FresnelBlnd(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Fourier(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Bssrdf(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisDiff(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisSS(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisRetro(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisSheen(_bxdf) => self.default_pdf(wo, wi),
            Bxdf::DisClearCoat(bxdf) => bxdf.pdf(wo, wi),
            Bxdf::Hair(bxdf) => bxdf.pdf(wo, wi),
        }
    }
pub fn pdf ( & self , wo : & Vector3f , wi : & Vector3f ) -> Float { match self { Bxdf :: Empty ( _bxdf ) => 0.0 as Float , Bxdf :: SpecRefl ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: SpecTrans ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: FresnelSpec ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: LambertianRefl ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: LambertianTrans ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: OrenNayarRefl ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: MicrofacetRefl ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: MicrofacetTrans ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: FresnelBlnd ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: Fourier ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: Bssrdf ( _bxdf ) => self . default_pdf ( wo , wi ) , Bxdf :: DisDiff ( _bxdf ) => self . default_pdf ( wo , wi ) , Bxdf :: DisSS ( _bxdf ) => self . default_pdf ( wo , wi ) , Bxdf :: DisRetro ( _bxdf ) => self . default_pdf ( wo , wi ) , Bxdf :: DisSheen ( _bxdf ) => self . default_pdf ( wo , wi ) , Bxdf :: DisClearCoat ( bxdf ) => bxdf . pdf ( wo , wi ) , Bxdf :: Hair ( bxdf ) => bxdf . pdf ( wo , wi ) , } }
Evaluate the PDF for the given outgoing and incoming directions.
Evaluate the PDF for the given outgoing and incoming directions .
&self
wo
&Vector3f
wi
&Vector3f