Skip to main content

dsfb_computer_graphics/
config.rs

1use serde::{Deserialize, Serialize};
2
3use crate::parameters::{
4    baseline_parameters, host_realistic_parameters, AlphaRange, BaselineParameters,
5};
6
7#[derive(Clone, Debug, Serialize, Deserialize)]
8pub struct SceneConfig {
9    pub width: usize,
10    pub height: usize,
11    pub frame_count: usize,
12    pub object_width: usize,
13    pub object_height: usize,
14    pub object_start_x: i32,
15    pub object_stop_x: i32,
16    pub object_top_y: i32,
17    pub move_frames: usize,
18    pub thin_vertical_x: i32,
19}
20
21impl Default for SceneConfig {
22    fn default() -> Self {
23        Self {
24            width: 160,
25            height: 96,
26            frame_count: 18,
27            object_width: 38,
28            object_height: 44,
29            object_start_x: 24,
30            object_stop_x: 58,
31            object_top_y: 26,
32            move_frames: 6,
33            thin_vertical_x: 54,
34        }
35    }
36}
37
38#[derive(Clone, Debug, Serialize, Deserialize)]
39pub struct DemoConfig {
40    pub scene: SceneConfig,
41    pub baseline: BaselineParameters,
42    pub dsfb_alpha_range: AlphaRange,
43    pub trust_map_frame_offset: usize,
44    pub comparison_frame_offset: usize,
45    pub demo_b_reference_spp: usize,
46    pub demo_b_uniform_spp: usize,
47    pub demo_b_min_spp: usize,
48    pub demo_b_max_spp: usize,
49}
50
51impl Default for DemoConfig {
52    fn default() -> Self {
53        let host = host_realistic_parameters();
54        Self {
55            scene: SceneConfig::default(),
56            baseline: baseline_parameters(),
57            dsfb_alpha_range: host.alpha_range,
58            trust_map_frame_offset: 0,
59            comparison_frame_offset: 2,
60            demo_b_reference_spp: 64,
61            demo_b_uniform_spp: 2,
62            demo_b_min_spp: 1,
63            demo_b_max_spp: 12,
64        }
65    }
66}