dsfb-computer-graphics 0.1.0

Minimal DSFB-for-computer-graphics research artifact for temporal accumulation supervision
Documentation
use serde::{Deserialize, Serialize};

use crate::parameters::{
    baseline_parameters, host_realistic_parameters, AlphaRange, BaselineParameters,
};

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct SceneConfig {
    pub width: usize,
    pub height: usize,
    pub frame_count: usize,
    pub object_width: usize,
    pub object_height: usize,
    pub object_start_x: i32,
    pub object_stop_x: i32,
    pub object_top_y: i32,
    pub move_frames: usize,
    pub thin_vertical_x: i32,
}

impl Default for SceneConfig {
    fn default() -> Self {
        Self {
            width: 160,
            height: 96,
            frame_count: 18,
            object_width: 38,
            object_height: 44,
            object_start_x: 24,
            object_stop_x: 58,
            object_top_y: 26,
            move_frames: 6,
            thin_vertical_x: 54,
        }
    }
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct DemoConfig {
    pub scene: SceneConfig,
    pub baseline: BaselineParameters,
    pub dsfb_alpha_range: AlphaRange,
    pub trust_map_frame_offset: usize,
    pub comparison_frame_offset: usize,
    pub demo_b_reference_spp: usize,
    pub demo_b_uniform_spp: usize,
    pub demo_b_min_spp: usize,
    pub demo_b_max_spp: usize,
}

impl Default for DemoConfig {
    fn default() -> Self {
        let host = host_realistic_parameters();
        Self {
            scene: SceneConfig::default(),
            baseline: baseline_parameters(),
            dsfb_alpha_range: host.alpha_range,
            trust_map_frame_offset: 0,
            comparison_frame_offset: 2,
            demo_b_reference_spp: 64,
            demo_b_uniform_spp: 2,
            demo_b_min_spp: 1,
            demo_b_max_spp: 12,
        }
    }
}