#[derive(Debug, Clone, Copy, PartialEq)]
pub struct PlanetShaderData {
pub has_atmosphere: bool,
pub has_rings: bool,
pub has_clouds: bool,
pub has_ocean: bool,
pub oblateness: f32,
pub axial_tilt_rad: f32,
}
impl PlanetShaderData {
pub fn terrestrial() -> Self {
Self {
has_atmosphere: true,
has_rings: false,
has_clouds: true,
has_ocean: true,
oblateness: 0.003,
axial_tilt_rad: 0.41,
}
}
pub fn gas_giant_ringed() -> Self {
Self {
has_atmosphere: true,
has_rings: true,
has_clouds: true,
has_ocean: false,
oblateness: 0.065,
axial_tilt_rad: 0.47,
}
}
pub fn ice_giant() -> Self {
Self {
has_atmosphere: true,
has_rings: true,
has_clouds: false,
has_ocean: false,
oblateness: 0.023,
axial_tilt_rad: 1.71,
}
}
pub fn airless() -> Self {
Self {
has_atmosphere: false,
has_rings: false,
has_clouds: false,
has_ocean: false,
oblateness: 0.0,
axial_tilt_rad: 0.0,
}
}
}