51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
|
use crate::{Texture, ResHandle};
|
||
|
|
||
|
/// PBR metallic roughness
|
||
|
#[derive(Clone, Debug, Default)]
|
||
|
pub struct PbrRoughness {
|
||
|
/// The rgba base color of the PBR material
|
||
|
pub base_color: [f32; 4],
|
||
|
/// The metalness of the material
|
||
|
/// From 0.0 (non-metal) to 1.0 (metal)
|
||
|
pub metallic: f32,
|
||
|
/// The roughness of the material
|
||
|
/// From 0.0 (smooth) to 1.0 (rough)
|
||
|
pub roughness: f32,
|
||
|
// TODO: base_color_texture and metallic_roughness_texture
|
||
|
}
|
||
|
|
||
|
impl From<gltf::material::PbrMetallicRoughness<'_>> for PbrRoughness {
|
||
|
fn from(value: gltf::material::PbrMetallicRoughness) -> Self {
|
||
|
PbrRoughness {
|
||
|
base_color: value.base_color_factor(),
|
||
|
metallic: value.metallic_factor(),
|
||
|
roughness: value.roughness_factor(),
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Debug, Default)]
|
||
|
pub struct PbrGlossiness {
|
||
|
/// The rgba diffuse color of the material
|
||
|
pub diffuse_color: [f32; 4],
|
||
|
// The base color texture
|
||
|
// pub diffuse_texture // TODO
|
||
|
pub specular: [f32; 3],
|
||
|
/// The glossiness factor of the material.
|
||
|
/// From 0.0 (no glossiness) to 1.0 (full glossiness)
|
||
|
pub glossiness: f32,
|
||
|
// pub glossiness_texture // TODO
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Default)]
|
||
|
pub struct Material {
|
||
|
pub shader_uuid: Option<u64>,
|
||
|
pub name: Option<String>,
|
||
|
pub double_sided: bool,
|
||
|
pub pbr_roughness: PbrRoughness,
|
||
|
pub pbr_glossiness: Option<PbrGlossiness>,
|
||
|
pub alpha_cutoff: Option<f32>,
|
||
|
pub alpha_mode: gltf::material::AlphaMode,
|
||
|
|
||
|
pub texture: Option<ResHandle<Texture>>,
|
||
|
}
|