#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SatelliteMaterial {
pub albedo: [f32; 3],
pub roughness: f32,
pub metallic: f32,
pub emissive: [f32; 3],
}
impl SatelliteMaterial {
pub fn rocky_regolith(albedo: [f32; 3]) -> Self {
Self {
albedo,
roughness: 0.85,
metallic: 0.0,
emissive: [0.0; 3],
}
}
pub fn icy_surface(albedo: [f32; 3]) -> Self {
Self {
albedo,
roughness: 0.15,
metallic: 0.01,
emissive: [0.0; 3],
}
}
pub fn volcanic(albedo: [f32; 3], glow: [f32; 3]) -> Self {
Self {
albedo,
roughness: 0.9,
metallic: 0.02,
emissive: glow,
}
}
pub fn captured_asteroid(albedo: [f32; 3]) -> Self {
Self {
albedo,
roughness: 0.95,
metallic: 0.05,
emissive: [0.0; 3],
}
}
}