pathtracer/src/light/mod.rs
2020-03-23 12:41:39 +01:00

29 lines
760 B
Rust

//! Various light implementations
use super::core::LinearColor;
use super::{Point, Vector};
/// Represent a light in the scene being rendered.
pub trait Light: std::fmt::Debug {
/// Get the illumination of that light on that point.
fn illumination(&self, point: &Point) -> LinearColor;
}
/// Represent a light which has an abstract position in the scene being rendered.
pub trait SpatialLight: Light {
/// Get a unit vector from the origin to the position of the light, and its distance
fn to_source(&self, origin: &Point) -> (Vector, f32);
}
pub mod ambient_light;
pub use ambient_light::*;
pub mod directional_light;
pub use directional_light::*;
pub mod point_light;
pub use point_light::*;
pub mod spot_light;
pub use spot_light::*;