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.rs38
1 files changed, 34 insertions, 4 deletions
diff --git a/world/src/mesh.rs b/world/src/mesh.rs
index 6a295c7..3190c28 100644
--- a/world/src/mesh.rs
+++ b/world/src/mesh.rs
@@ -179,6 +179,22 @@ pub fn import_mesh(
webp,
)?);
}
+ let mut tex_transmission = None;
+ if let Some(tex) = p
+ .material()
+ .transmission()
+ .map(|t| t.transmission_texture())
+ .flatten()
+ {
+ tex_transmission = Some(load_texture(
+ "transmission",
+ &store,
+ path_base,
+ &buffers,
+ &tex.texture().source().source(),
+ webp,
+ )?);
+ }
let mut tex_roughness = None;
let mut tex_metallic = None;
if let Some(tex) = p
@@ -214,10 +230,10 @@ pub fn import_mesh(
None
};
let g_alpha = if base_color[3] != 1. {
- info!("global transmission is {}", base_color[3]);
+ info!("global alpha is {}", base_color[3]);
Some(base_color[3])
} else {
- debug!("global transmission pruned");
+ debug!("global alpha pruned");
None
};
@@ -233,12 +249,27 @@ pub fn import_mesh(
None
};
+ let transmission = p
+ .material()
+ .transmission()
+ .map(|t| t.transmission_factor())
+ .unwrap_or(0.);
+
+ let g_transmission = if transmission != 0. {
+ info!("global transmission is {transmission}");
+ Some(transmission)
+ } else {
+ debug!("global transmission pruned");
+ None
+ };
+
let mesh = store.set(&MeshPart {
g_albedo,
g_alpha,
g_metallic,
g_roughness,
g_emission,
+ g_transmission,
va_position,
va_normal,
va_texcoord,
@@ -250,9 +281,8 @@ pub fn import_mesh(
tex_metallic,
tex_alpha,
tex_emission,
+ tex_transmission,
index,
- g_transmission: None,
- tex_transmission: None,
va_transmission: None,
va_emission: None, // not supported by gltf
va_metallic: None, // not supported by gltf