diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-24 21:18:55 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-24 21:18:55 +0100 |
commit | 006ad7ce6d30d764411dcf8c2527f2c80e722491 (patch) | |
tree | 957b60eec535ddcea4f842919a99f806b6d55217 /client/src/render/scene/draw.rs | |
parent | b4aaaae52b3b746a5e1ef8a98151c627f2787e38 (diff) | |
download | weareserver-006ad7ce6d30d764411dcf8c2527f2c80e722491.tar weareserver-006ad7ce6d30d764411dcf8c2527f2c80e722491.tar.bz2 weareserver-006ad7ce6d30d764411dcf8c2527f2c80e722491.tar.zst |
minimal progress but diffuse lighting works again
Diffstat (limited to 'client/src/render/scene/draw.rs')
-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(..)); |