use crate::vrm::gltf::materials::VrmcMaterialsExtensitions;
use bevy::prelude::*;
#[derive(Debug, Clone, Copy, PartialEq, Reflect)]
#[reflect(Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", reflect(Serialize, Deserialize))]
pub struct RimLighting {
pub color: LinearRgba,
pub fresnel_power: f32,
pub lift_factor: f32,
pub mat_cap_color: LinearRgba,
pub mix_factor: f32,
}
impl From<&VrmcMaterialsExtensitions> for RimLighting {
fn from(extension: &VrmcMaterialsExtensitions) -> Self {
Self {
color: extension.parametric_rim_color(),
mat_cap_color: extension.matcap_color(),
lift_factor: extension.parametric_rim_lift_factor,
fresnel_power: extension.parametric_rim_fresnel_power,
mix_factor: extension.rim_lighting_mix_factor,
}
}
}
impl Default for RimLighting {
fn default() -> Self {
Self {
color: LinearRgba::BLACK,
fresnel_power: 5.0,
lift_factor: 0.0,
mat_cap_color: LinearRgba::WHITE,
mix_factor: 1.0,
}
}
}