pub fn sample_li<'a, 'b>(
        &'b self,
        iref: &'a InteractionCommon,
        light_intr: &'b mut InteractionCommon,
        u: Point2f,
        wi: &mut Vector3f,
        pdf: &mut Float,
        vis: &mut VisibilityTester<'a, 'b>,
    ) -> Spectrum {
        match self {
            Light::DiffuseArea(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Distant(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::GonioPhotometric(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::InfiniteArea(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Point(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Projection(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Spot(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
        }
    }
/// Returns the radiance arriving at a point at a certain time due
/// to the light, assuming there are no occluding objects between
/// them.
Returns the radiance arriving at a point at a certain time due
to the light, assuming there are no occluding objects between
them.
Returns the radiance arriving at a point at a certain time due to the light assuming there are no occluding objects between them .
pub fn sample_li<'a, 'b>(
        &'b self,
        iref: &'a InteractionCommon,
        light_intr: &'b mut InteractionCommon,
        u: Point2f,
        wi: &mut Vector3f,
        pdf: &mut Float,
        vis: &mut VisibilityTester<'a, 'b>,
    ) -> Spectrum {
        match self {
            Light::DiffuseArea(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Distant(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::GonioPhotometric(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::InfiniteArea(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Point(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Projection(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
            Light::Spot(light) => light.sample_li(iref, light_intr, u, wi, pdf, vis),
        }
    }
pub fn sample_li < ' a , ' b > ( & ' b self , iref : & ' a InteractionCommon , light_intr : & ' b mut InteractionCommon , u : Point2f , wi : & mut Vector3f , pdf : & mut Float , vis : & mut VisibilityTester < ' a , ' b > , ) -> Spectrum { match self { Light :: DiffuseArea ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: Distant ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: GonioPhotometric ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: InfiniteArea ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: Point ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: Projection ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , Light :: Spot ( light ) => light . sample_li ( iref , light_intr , u , wi , pdf , vis ) , } }
Returns the radiance arriving at a point at a certain time due
to the light, assuming there are no occluding objects between
them.
Returns the radiance arriving at a point at a certain time due to the light assuming there are no occluding objects between them .
&'b self
iref
&'a InteractionCommon
light_intr
&'b mut InteractionCommon
u
Point2f
wi
&mut Vector3f
pdf
&mut Float
vis
&mut VisibilityTester<'a, 'b>