pbrt_r3/core/api/scene_context/
render_options.rs1use crate::core::base::*;
2use crate::core::light::*;
3use crate::core::medium::*;
4use crate::core::param_set::*;
5use crate::core::primitive::*;
6
7use std::collections::HashMap;
8use std::sync::Arc;
9
10type PrimitivesMap = HashMap<String, Vec<Arc<dyn Primitive>>>;
34type NamedMediumMap = HashMap<String, Arc<dyn Medium>>;
35
36pub struct RenderOptions {
37 pub transform_start_time: Float,
38 pub transform_end_time: Float,
39 pub filter_name: String,
40 pub filter_params: ParamSet,
41 pub film_name: String,
42 pub film_params: ParamSet,
43 pub sampler_name: String,
44 pub sampler_params: ParamSet,
45 pub accelerator_name: String,
46 pub accelerator_params: ParamSet,
47 pub integrator_name: String,
48 pub integrator_params: ParamSet,
49 pub camera_name: String,
50 pub camera_params: ParamSet,
51 pub named_media: NamedMediumMap,
53 pub lights: Vec<Arc<dyn Light>>,
54 pub primitives: Vec<Arc<dyn Primitive>>,
55 pub instances: PrimitivesMap,
56 pub current_instance_name: Option<String>,
57 pub have_scattering_media: bool,
58}
59
60impl RenderOptions {
61 pub fn new() -> Self {
62 let accelerator_name =
63 std::env::var("PBRT_ACCELERATOR").unwrap_or_else(|_| "bvh".to_string());
64 RenderOptions {
65 transform_start_time: 0.0,
66 transform_end_time: 1.0,
67 filter_name: String::from("box"),
68 filter_params: ParamSet::new(),
69 film_name: String::from("image"),
70 film_params: ParamSet::new(),
71 sampler_name: String::from("halton"),
72 sampler_params: ParamSet::new(),
73 accelerator_name: accelerator_name,
74 accelerator_params: ParamSet::new(),
75 integrator_name: String::from("path"),
76 integrator_params: ParamSet::new(),
77 camera_name: String::from("perspective"),
78 camera_params: ParamSet::new(),
79 named_media: NamedMediumMap::new(),
81 lights: Vec::new(),
82 primitives: Vec::new(),
83 instances: PrimitivesMap::new(),
84 current_instance_name: None,
85 have_scattering_media: false,
86 }
87 }
88}