fere 0.0.0

A 3D rendering engine focused on simple use and realtime global illumination.
Documentation
use super::*;
use fere_resources::surface;
use fere_resources::Mesh;

#[derive(Debug)]
pub(crate) struct ChamberShadowObject {
    pub mesh: Arc<Mesh>,
    pub trans: Mat4,
}

pub(crate) struct ChamberEmissiveStaticObject {
    pub mesh: Arc<Mesh>,
    pub trans: Mat4,
    pub surface: surface::EmissiveStaticI,
}

pub(crate) struct ChamberContext {
    pub chamber: Chamber,

    pub major_lights: Vec<AddMajorLight>,
    pub ambient_lights: Vec<AddAmbientLight>,
    pub point_lights: Vec<AddPointLight>,

    pub shadow_objects: Vec<ChamberShadowObject>,
    pub emissive_static_objects: Vec<ChamberEmissiveStaticObject>,

    pub billboards: Vec<DrawBillboard>,

    pub shade_with_iv: Option<ShadeWithIv>,
}

impl ChamberContext {
    pub fn new(chamber: Chamber) -> Self {
        Self {
            chamber,
            major_lights: Default::default(),
            ambient_lights: Default::default(),
            point_lights: Default::default(),
            shadow_objects: Default::default(),
            emissive_static_objects: Default::default(),
            billboards: Default::default(),
            shade_with_iv: Default::default(),
        }
    }
}