use crate::{Arena, FileLoc, ParameterDictionary};
use anyhow::Result;
use shared::Float;
use shared::core::camera::CameraTransform;
use shared::core::film::Film;
use shared::core::filter::Filter;

pub mod gbuffer;
pub mod rgb;
pub mod spectral;

pub use gbuffer::*;
pub use rgb::*;
pub use spectral::*;

pub trait CreateFilm {
    fn create(
        params: &ParameterDictionary,
        exposure_time: Float,
        filter: Filter,
        camera_transform: Option<CameraTransform>,
        loc: &FileLoc,
        arena: &Arena,
    ) -> Result<Film>;
}
