Trait ray_tracing_core::material::Material[][src]

pub trait Material: Sync + Send {
    fn get_id(&self) -> usize;
fn scatter(
        &self,
        self_material: Arc<dyn Material>,
        ray_in: &Ray,
        hit_record: &HitRecord
    ) -> Option<ScatterRecord>;
fn scattering_pdf(
        &self,
        ray_in: &Ray,
        hit_record: &HitRecord,
        scattered: &Ray
    ) -> FSize;
fn has_alpha(&self) -> bool;
fn emitted(&self, ray_in: &Ray, hit_record: &HitRecord) -> ColorRGB;
fn accept(&self, visitor: &mut dyn Visitor) -> Result<(), Box<dyn Error>>; }

Required methods

fn get_id(&self) -> usize[src]

fn scatter(
    &self,
    self_material: Arc<dyn Material>,
    ray_in: &Ray,
    hit_record: &HitRecord
) -> Option<ScatterRecord>
[src]

Scatter a ray at a point on the material. Returns a tuple with the color attenuation and outgoing ray and

fn scattering_pdf(
    &self,
    ray_in: &Ray,
    hit_record: &HitRecord,
    scattered: &Ray
) -> FSize
[src]

fn has_alpha(&self) -> bool[src]

fn emitted(&self, ray_in: &Ray, hit_record: &HitRecord) -> ColorRGB[src]

Get emitted material color

fn accept(&self, visitor: &mut dyn Visitor) -> Result<(), Box<dyn Error>>[src]

Loading content...

Implementors

impl Material for Dielectric[src]

impl Material for DiffuseLight[src]

impl Material for Isotropic[src]

impl Material for Lambertian[src]

impl Material for MaterialBlend[src]

impl Material for Metal[src]

impl Material for NoMaterial[src]

Loading content...