#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct ShadowsConfig {
#[serde(default = "default_sscs_enabled")]
pub sscs_enabled: bool,
#[serde(default = "default_sscs_step_count")]
pub sscs_step_count: u32,
#[serde(default = "default_atlas_size")]
pub atlas_size: u32,
#[serde(default = "default_evsm_atlas_size")]
pub evsm_atlas_size: u32,
#[serde(default = "default_evsm_exponent")]
pub evsm_exponent: f32,
#[serde(default = "default_evsm_blur_radius")]
pub evsm_blur_radius: u32,
#[serde(default = "default_max_point_shadows")]
pub max_point_shadows: u32,
#[serde(default = "default_point_shadow_resolution")]
pub point_shadow_resolution: u32,
#[serde(default)]
pub debug_cascade_colors: bool,
}
impl Default for ShadowsConfig {
fn default() -> Self {
Self {
sscs_enabled: default_sscs_enabled(),
sscs_step_count: default_sscs_step_count(),
atlas_size: default_atlas_size(),
evsm_atlas_size: default_evsm_atlas_size(),
evsm_exponent: default_evsm_exponent(),
evsm_blur_radius: default_evsm_blur_radius(),
max_point_shadows: default_max_point_shadows(),
point_shadow_resolution: default_point_shadow_resolution(),
debug_cascade_colors: false,
}
}
}
fn default_sscs_enabled() -> bool {
false
}
fn default_sscs_step_count() -> u32 {
16
}
fn default_atlas_size() -> u32 {
4096
}
fn default_evsm_atlas_size() -> u32 {
2048
}
fn default_evsm_exponent() -> f32 {
10.0
}
fn default_evsm_blur_radius() -> u32 {
6
}
fn default_max_point_shadows() -> u32 {
8
}
fn default_point_shadow_resolution() -> u32 {
1024
}