diff --git a/src/main.rs b/src/main.rs index 9733ce1..39563cb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,8 +22,10 @@ use std::time::Duration; use stereokit::input::Handed; use stereokit::lifecycle::DisplayMode; use stereokit::lifecycle::{DepthMode, LogFilter}; +use stereokit::material::Material; use stereokit::render::SphericalHarmonics; use stereokit::render::StereoKitRender; +use stereokit::shader::Shader; use stereokit::texture::Texture; use stereokit::time::StereoKitTime; use tokio::{runtime::Handle, sync::oneshot}; @@ -93,6 +95,9 @@ fn main() -> Result<()> { .expect("StereoKit failed to initialize"); info!("Init StereoKit"); + Material::find(&stereokit, "default/material_pbr")? + .set_shader(Shader::from_name(&stereokit, "default/shader_pbr_clip")?); + // Skytex/light stuff { if let Some((tex, light)) = project_dirs diff --git a/src/nodes/drawable/model.rs b/src/nodes/drawable/model.rs index cf2b7c6..7aefbbf 100644 --- a/src/nodes/drawable/model.rs +++ b/src/nodes/drawable/model.rs @@ -194,13 +194,7 @@ impl Model { .sk_model .get_or_try_init(|| -> color_eyre::eyre::Result> { let pending_model_path = self.pending_model_path.get().ok_or(Error)?; - let model = SKModel::from_file( - sk, - pending_model_path.as_path(), - Shader::from_file(sk, "default/shader_pbr_clip") - .ok() - .as_ref(), - )?; + let model = SKModel::from_file(sk, pending_model_path.as_path(), None)?; Ok(SendWrapper::new(model.clone())) }) @@ -210,7 +204,9 @@ impl Model { { let mut material_replacements = self.pending_material_replacements.lock(); for (material_idx, replacement_material) in material_replacements.iter() { - sk_model.set_material(sk, *material_idx as i32, replacement_material); + if sk_model.get_material(sk, *material_idx as i32).is_some() { + sk_model.set_material(sk, *material_idx as i32, replacement_material); + } } material_replacements.clear(); }