oxihuman-viewer 0.2.1

wgpu/WebGPU rendering adapter for OxiHuman
Documentation
#![allow(dead_code)]

#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum FogMode { Linear, Exponential, ExponentialSquared }

#[allow(dead_code)]
#[derive(Debug, Clone)]
pub struct SceneFog {
    mode: FogMode,
    density: f32,
    color: [f32; 3],
    start: f32,
    end: f32,
    enabled: bool,
}

#[allow(dead_code)]
pub fn new_scene_fog() -> SceneFog {
    SceneFog { mode: FogMode::Linear, density: 0.01, color: [0.7, 0.7, 0.8], start: 10.0, end: 100.0, enabled: true }
}

#[allow(dead_code)]
pub fn set_fog_mode(fog: &mut SceneFog, mode: FogMode) { fog.mode = mode; }

#[allow(dead_code)]
pub fn fog_density(fog: &SceneFog) -> f32 { fog.density }

#[allow(dead_code)]
pub fn fog_color_sf(fog: &SceneFog) -> [f32; 3] { fog.color }

#[allow(dead_code)]
pub fn fog_start(fog: &SceneFog) -> f32 { fog.start }

#[allow(dead_code)]
pub fn fog_end(fog: &SceneFog) -> f32 { fog.end }

#[allow(dead_code)]
pub fn fog_to_json(fog: &SceneFog) -> String {
    format!("{{\"density\":{:.4},\"start\":{:.2},\"end\":{:.2},\"enabled\":{}}}", fog.density, fog.start, fog.end, fog.enabled)
}

#[allow(dead_code)]
pub fn fog_is_enabled(fog: &SceneFog) -> bool { fog.enabled }

#[cfg(test)]
mod tests {
    use super::*;
    #[test] fn test_new() { let f = new_scene_fog(); assert!(fog_is_enabled(&f)); }
    #[test] fn test_mode() { let mut f = new_scene_fog(); set_fog_mode(&mut f, FogMode::Exponential); assert_eq!(f.mode, FogMode::Exponential); }
    #[test] fn test_density() { let f = new_scene_fog(); assert!((fog_density(&f) - 0.01).abs() < 1e-6); }
    #[test] fn test_color() { let f = new_scene_fog(); assert!((fog_color_sf(&f)[0] - 0.7).abs() < 1e-6); }
    #[test] fn test_start() { let f = new_scene_fog(); assert!((fog_start(&f) - 10.0).abs() < 1e-6); }
    #[test] fn test_end() { let f = new_scene_fog(); assert!((fog_end(&f) - 100.0).abs() < 1e-6); }
    #[test] fn test_json() { let f = new_scene_fog(); assert!(fog_to_json(&f).contains("density")); }
    #[test] fn test_enabled() { let f = new_scene_fog(); assert!(fog_is_enabled(&f)); }
    #[test] fn test_exp_sq() { let mut f = new_scene_fog(); set_fog_mode(&mut f, FogMode::ExponentialSquared); assert_eq!(f.mode, FogMode::ExponentialSquared); }
    #[test] fn test_linear() { let f = new_scene_fog(); assert_eq!(f.mode, FogMode::Linear); }
}