[−][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 FourierBSDF
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for FresnelBlend
[src]
impl Bxdf for FresnelBlend
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for FresnelSpecular
[src]
impl Bxdf for FresnelSpecular
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
[src]
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for LambertianReflection
[src]
impl Bxdf for LambertianReflection
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
[src]
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for LambertianTransmission
[src]
impl Bxdf for LambertianTransmission
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
[src]
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
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
[src]
fn sample_f(
&self,
wo: &Vector3f,
wi: &mut Vector3f,
u: &Point2f,
pdf: &mut Float,
_sampled_type: &mut u8
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
impl Bxdf for MicrofacetReflection
[src]
impl Bxdf for MicrofacetReflection
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for MicrofacetTransmission
[src]
impl Bxdf for MicrofacetTransmission
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn 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
) -> Spectrum
Override 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) -> Float
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for OrenNayar
[src]
impl Bxdf for OrenNayar
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for ScaledBxDF
[src]
impl Bxdf for ScaledBxDF
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for SpecularReflection
[src]
impl Bxdf for SpecularReflection
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
[src]
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, _wo: &Vector3f, _wi: &Vector3f) -> Float
[src]
fn pdf(&self, _wo: &Vector3f, _wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for SpecularTransmission
[src]
impl Bxdf for SpecularTransmission
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
[src]
fn f(&self, _wo: &Vector3f, _wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool
impl Bxdf for HairBSDF
[src]
impl Bxdf for HairBSDF
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
[src]
fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
fn 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
) -> Spectrum
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
[src]
fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
fn get_type(&self) -> u8
[src]
fn get_type(&self) -> u8
fn matches_flags(&self, t: u8) -> bool
[src]
fn matches_flags(&self, t: u8) -> bool