diff options
Diffstat (limited to 'client/src/render/scene')
-rw-r--r-- | client/src/render/scene/draw.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/client/src/render/scene/draw.rs b/client/src/render/scene/draw.rs index bdbcb50..9efa561 100644 --- a/client/src/render/scene/draw.rs +++ b/client/src/render/scene/draw.rs @@ -63,8 +63,7 @@ impl ScenePipeline { }); for ob in scene.objects.values() { - let prefab_modelview = view - * Mat4::from_translation(ob.pos.into()) + let prefab_model = Mat4::from_translation(ob.pos.into()) * Mat4::from_mat3(Mat3::from_euler( EulerRot::YXZ, ob.rot.x, @@ -73,22 +72,22 @@ impl ScenePipeline { )); if let Some(prefab) = prefabs.try_get(ob.res.clone()) { for (affine, part) in &prefab.0 { - let modelview = prefab_modelview + let model = prefab_model * Mat4::from_translation(affine.translation.into()) * Mat4::from_mat3a(affine.matrix3); - let modelviewp = project * modelview; + let modelviewp = project * view * model; // let light = modelview * vec4(5., 5., 5., 1.); // let light = light.to_array().map(|v| v.to_le_bytes()); - let modelview = modelview.to_cols_array().map(|v| v.to_le_bytes()); - let modelviewp = modelviewp.to_cols_array().map(|v| v.to_le_bytes()); + let m = model.to_cols_array().map(|v| v.to_le_bytes()); + let mvp = modelviewp.to_cols_array().map(|v| v.to_le_bytes()); rpass.set_pipeline(&part.pipeline); rpass.set_bind_group(0, &*part.tex_albedo, &[]); rpass.set_bind_group(1, &*part.tex_normal, &[]); rpass.set_bind_group(2, &*part.material, &[]); - rpass.set_push_constants(ShaderStages::VERTEX, 0, modelviewp.as_flattened()); - rpass.set_push_constants(ShaderStages::VERTEX, 64, modelview.as_flattened()); + rpass.set_push_constants(ShaderStages::VERTEX, 0, mvp.as_flattened()); + rpass.set_push_constants(ShaderStages::VERTEX, 64, m.as_flattened()); // rpass.set_push_constants(ShaderStages::FRAGMENT, 128, light.as_flattened()); rpass.set_index_buffer(part.index.slice(..), IndexFormat::Uint32); rpass.set_vertex_buffer(0, part.va_position.slice(..)); |