#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ShaderPass {
Depth,
Color,
Shadow,
Thermal,
}
pub struct ShaderConfig {
pub id: &'static str,
pub has_atmosphere: bool,
pub has_ocean: bool,
pub has_clouds: bool,
pub thermal_overlay: bool,
pub normal_mapping: bool,
}
impl ShaderConfig {
pub fn mercury_surface() -> Self {
Self {
id: "mercury_surface",
has_atmosphere: false,
has_ocean: false,
has_clouds: false,
thermal_overlay: true,
normal_mapping: true,
}
}
pub fn mercury_nightside() -> Self {
Self {
id: "mercury_nightside",
has_atmosphere: false,
has_ocean: false,
has_clouds: false,
thermal_overlay: true,
normal_mapping: false,
}
}
pub fn active_features(&self) -> Vec<&'static str> {
let mut f = vec!["pbr_base"];
if self.normal_mapping {
f.push("normal_map");
}
if self.thermal_overlay {
f.push("thermal_ir");
}
f
}
}
pub fn shader_id() -> &'static str {
"mercury_default"
}