pub struct InfiniteAreaLight {
    pub lmap: Arc<MipMap<Spectrum>>,
    pub world_center: RwLock<Point3f>,
    pub world_radius: RwLock<Float>,
    pub distribution: Arc<Distribution2D>,
    pub flags: u8,
    pub n_samples: i32,
    pub medium_interface: MediumInterface,
    pub light_to_world: Transform,
    pub world_to_light: Transform,
}

Fields§

§lmap: Arc<MipMap<Spectrum>>§world_center: RwLock<Point3f>§world_radius: RwLock<Float>§distribution: Arc<Distribution2D>§flags: u8§n_samples: i32§medium_interface: MediumInterface§light_to_world: Transform§world_to_light: Transform

Implementations§

source§

impl InfiniteAreaLight

source

pub fn new( light_to_world: &Transform, l: &Spectrum, n_samples: i32, texmap: String ) -> Self

source

pub fn new_hdr( light_to_world: &Transform, l: &Spectrum, n_samples: i32, texmap: String ) -> Self

source

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

source

pub fn power(&self) -> Spectrum

Like directional lights, the total power from the infinite area light is related to the surface area of the scene. Like many other lights the power computed here is approximate.

source

pub fn preprocess(&self, scene: &Scene)

Like DistanceLights, InfiniteAreaLights also need the scene bounds; here again, the preprocess() method finds the scene bounds after all of the scene geometry has been created.

source

pub fn le(&self, ray: &Ray) -> Spectrum

Because infinte area lights need to be able to contribute radiance to rays that don’t hit any geometry in the scene, we’ll add a method to the base Light class that returns emitted radiance due to that light along a ray that escapes the scene bounds. It’s the responsibility of the integrators to call this method for these rays.

source

pub fn pdf_li(&self, _iref: &dyn Interaction, w: &Vector3f) -> Float

source

pub fn sample_le( &self, u1: Point2f, u2: Point2f, time: Float, ray: &mut Ray, n_light: &mut Normal3f, pdf_pos: &mut Float, pdf_dir: &mut Float ) -> Spectrum

source

pub fn pdf_le( &self, ray: &Ray, _n_light: &Normal3f, pdf_pos: &mut Float, pdf_dir: &mut Float )

source

pub fn get_flags(&self) -> u8

source

pub fn get_n_samples(&self) -> i32

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.