use super::*;
#[derive(Clone, Copy, Data, Debug, New, PartialEq)]
pub struct RayTraceSettings {
#[get(type(copy))]
pub samples_per_axis: u32,
#[get(type(copy))]
pub max_bounces: u32,
}
#[derive(Clone, Copy, Debug, Getter)]
pub struct RayTraceFrame<'a> {
#[get(type(copy))]
pub camera: &'a Camera3D,
#[get(type(copy))]
pub lights: &'a LightingUniforms,
#[get(type(copy))]
pub settings: &'a RayTraceSettings,
#[get(type(copy))]
pub width: u32,
#[get(type(copy))]
pub height: u32,
}
#[derive(Clone, Copy, Data, Debug, PartialEq)]
pub(crate) struct FrameBasis {
#[get(pub(crate), type(copy))]
pub(crate) eye: Vector3D,
#[get(pub(crate), type(copy))]
pub(crate) forward: Vector3D,
#[get(pub(crate), type(copy))]
pub(crate) right: Vector3D,
#[get(pub(crate), type(copy))]
pub(crate) up: Vector3D,
#[get(pub(crate), type(copy))]
pub(crate) tan_half_fov: f64,
#[get(pub(crate), type(copy))]
pub(crate) aspect: f64,
#[get(pub(crate), type(copy))]
pub(crate) width: u32,
#[get(pub(crate), type(copy))]
pub(crate) height: u32,
#[get(pub(crate), type(copy))]
pub(crate) near_t: f64,
#[get(pub(crate), type(copy))]
pub(crate) far_t: f64,
}