[−][src]Trait pbrt::core::reflection::Bxdf   
            Required Methods
Provided Methods
fn matches_flags(&self, t: u8) -> bool
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum
&self,
wo: &Vector3f,
wi: &mut Vector3f,
u: &Point2f,
pdf: &mut Float,
_sampled_type: &mut u8
) -> Spectrum
Sample the BxDF for the given outgoing direction, using the given pair of uniform samples.
The default implementation uses importance sampling by using a cosine-weighted distribution.
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
Evaluate the PDF for the given outgoing and incoming directions.
Note: this method needs to be consistent with Bxdf::sample_f().
Implementors
impl Bxdf for FourierBSDF[src] 
impl Bxdf for FourierBSDFfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for FresnelBlend[src] 
impl Bxdf for FresnelBlendfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for FresnelSpecular[src] 
impl Bxdf for FresnelSpecularfn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum[src] 
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for LambertianReflection[src] 
impl Bxdf for LambertianReflectionfn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum[src] 
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for LambertianTransmission[src] 
impl Bxdf for LambertianTransmissionfn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum[src] 
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrumfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatimpl Bxdf for MicrofacetReflection[src] 
impl Bxdf for MicrofacetReflectionfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for MicrofacetTransmission[src] 
impl Bxdf for MicrofacetTransmissionfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> SpectrumOverride sample_f() to use a better importance sampling method than weighted cosine based on the microface distribution
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for OrenNayar[src] 
impl Bxdf for OrenNayarfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    u: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for ScaledBxDF[src] 
impl Bxdf for ScaledBxDFfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for SpecularReflection[src] 
impl Bxdf for SpecularReflectionfn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum[src] 
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    _sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    _sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, _wo: &Vector3f, _wi: &Vector3f) -> Float[src] 
fn pdf(&self, _wo: &Vector3f, _wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for SpecularTransmission[src] 
impl Bxdf for SpecularTransmissionfn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum[src] 
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    _sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    _sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> boolimpl Bxdf for HairBSDF[src] 
impl Bxdf for HairBSDFfn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum[src] 
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrumfn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrum[src] 
fn sample_f(
    &self, 
    wo: &Vector3f, 
    wi: &mut Vector3f, 
    sample: &Point2f, 
    pdf: &mut Float, 
    _sampled_type: &mut u8
) -> Spectrumfn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float[src] 
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Floatfn get_type(&self) -> u8[src] 
fn get_type(&self) -> u8fn matches_flags(&self, t: u8) -> bool[src] 
fn matches_flags(&self, t: u8) -> bool