summaryrefslogtreecommitdiff
path: root/world/src/mesh.rs
diff options
context:
space:
mode:
Diffstat (limited to 'world/src/mesh.rs')
-rw-r--r--world/src/mesh.rs33
1 files changed, 23 insertions, 10 deletions
diff --git a/world/src/mesh.rs b/world/src/mesh.rs
index a38980e..c5bbb7f 100644
--- a/world/src/mesh.rs
+++ b/world/src/mesh.rs
@@ -237,31 +237,31 @@ pub fn import_mesh(
let g_albedo = if base_color[0] != 1. || base_color[1] != 1. || base_color[2] != 1. {
info!(
- "global albedo is r={},g={},b={}",
+ "albedo is r={},g={},b={}",
base_color[0], base_color[1], base_color[2]
);
Some(Vec3A::new(base_color[0], base_color[1], base_color[2]))
} else {
- debug!("global albedo pruned");
+ debug!("albedo pruned");
None
};
let g_alpha = if base_color[3] != 1. {
- info!("global alpha is {}", base_color[3]);
+ info!("alpha is {}", base_color[3]);
Some(base_color[3])
} else {
- debug!("global alpha pruned");
+ debug!("alpha pruned");
None
};
let emission = p.material().emissive_factor();
let g_emission = if emission[0] != 0. || emission[1] != 0. || emission[2] != 0. {
info!(
- "global emission is r={},g={},b={}",
+ "emission is r={},g={},b={}",
base_color[0], base_color[1], base_color[2]
);
Some(Vec3A::new(emission[0], emission[1], emission[2]))
} else {
- debug!("global emission pruned");
+ debug!("emission pruned");
None
};
@@ -272,13 +272,27 @@ pub fn import_mesh(
.unwrap_or(0.);
let g_transmission = if transmission != 0. {
- info!("global transmission is {transmission}");
+ info!("transmission is {transmission}");
Some(transmission)
} else {
- debug!("global transmission pruned");
+ debug!("transmission pruned");
None
};
+ let g_dispersion = p
+ .material()
+ .extensions()
+ .map(|e| e.get("KHR_materials_dispersion"))
+ .flatten()
+ .map(|e| e.get("dispersion"))
+ .flatten()
+ .map(|e| e.as_f64())
+ .flatten()
+ .map(|e| e as f32);
+ if let Some(d) = g_dispersion {
+ info!("dispersion is {d}");
+ }
+
let g_attenuation = p.material().volume().map(|v| {
let ref_dist = v.attenuation_distance();
Vec3A::from_array(v.attenuation_color().map(
@@ -300,6 +314,7 @@ pub fn import_mesh(
g_attenuation,
g_thickness,
g_refractive_index,
+ g_dispersion,
va_position,
va_normal,
va_texcoord,
@@ -313,8 +328,6 @@ pub fn import_mesh(
tex_emission,
tex_transmission,
tex_thickness,
- // not yet implemented
- g_dispersion: None,
// not supported by gltf
va_transmission: None,
va_emission: None,