pub enum Bxdf {
Show 18 variants
Empty(NoBxdf),
SpecRefl(SpecularReflection),
SpecTrans(SpecularTransmission),
FresnelSpec(FresnelSpecular),
LambertianRefl(LambertianReflection),
LambertianTrans(LambertianTransmission),
OrenNayarRefl(OrenNayar),
MicrofacetRefl(MicrofacetReflection),
MicrofacetTrans(MicrofacetTransmission),
FresnelBlnd(FresnelBlend),
Fourier(FourierBSDF),
Bssrdf(SeparableBssrdfAdapter),
DisDiff(DisneyDiffuse),
DisSS(DisneyFakeSS),
DisRetro(DisneyRetro),
DisSheen(DisneySheen),
DisClearCoat(DisneyClearCoat),
Hair(HairBSDF),
}
Variants
Empty(NoBxdf)
SpecRefl(SpecularReflection)
SpecTrans(SpecularTransmission)
FresnelSpec(FresnelSpecular)
LambertianRefl(LambertianReflection)
LambertianTrans(LambertianTransmission)
OrenNayarRefl(OrenNayar)
MicrofacetRefl(MicrofacetReflection)
MicrofacetTrans(MicrofacetTransmission)
FresnelBlnd(FresnelBlend)
Fourier(FourierBSDF)
Bssrdf(SeparableBssrdfAdapter)
DisDiff(DisneyDiffuse)
DisSS(DisneyFakeSS)
DisRetro(DisneyRetro)
DisSheen(DisneySheen)
DisClearCoat(DisneyClearCoat)
Hair(HairBSDF)
Implementations
sourceimpl Bxdf
impl Bxdf
pub fn matches_flags(&self, t: u8) -> bool
pub fn f(&self, wo: &Vector3f, wi: &Vector3f) -> Spectrum
sourcepub fn sample_f(
&self,
wo: &Vector3f,
wi: &mut Vector3f,
u: &Point2f,
pdf: &mut Float,
sampled_type: &mut u8
) -> Spectrum
pub fn sample_f(
&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.
sourcepub fn pdf(&self, wo: &Vector3f, wi: &Vector3f) -> Float
pub 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()
.
pub fn get_type(&self) -> u8
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Bxdf
impl Send for Bxdf
impl Sync for Bxdf
impl Unpin for Bxdf
impl !UnwindSafe for Bxdf
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more