diff options
-rw-r--r-- | world/src/mesh.rs | 38 |
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 |