diff --git a/crates/bevy_pbr/src/render/mesh_view_bind_group.wgsl b/crates/bevy_pbr/src/render/mesh_view_bind_group.wgsl index 6106212a58..fe8be1b0e4 100644 --- a/crates/bevy_pbr/src/render/mesh_view_bind_group.wgsl +++ b/crates/bevy_pbr/src/render/mesh_view_bind_group.wgsl @@ -1,5 +1,6 @@ struct View { view_proj: mat4x4; + view: mat4x4; inverse_view: mat4x4; projection: mat4x4; world_position: vec3; diff --git a/crates/bevy_render/src/view/mod.rs b/crates/bevy_render/src/view/mod.rs index 40e5dbb335..abee8bd1ae 100644 --- a/crates/bevy_render/src/view/mod.rs +++ b/crates/bevy_render/src/view/mod.rs @@ -86,6 +86,7 @@ pub struct ExtractedView { #[derive(Clone, AsStd140)] pub struct ViewUniform { view_proj: Mat4, + view: Mat4, inverse_view: Mat4, projection: Mat4, world_position: Vec3, @@ -145,10 +146,12 @@ fn prepare_view_uniforms( view_uniforms.uniforms.clear(); for (entity, camera) in views.iter() { let projection = camera.projection; - let inverse_view = camera.transform.compute_matrix().inverse(); + let view = camera.transform.compute_matrix(); + let inverse_view = view.inverse(); let view_uniforms = ViewUniformOffset { offset: view_uniforms.uniforms.push(ViewUniform { view_proj: projection * inverse_view, + view, inverse_view, projection, world_position: camera.transform.translation, diff --git a/crates/bevy_sprite/src/mesh2d/mesh2d_view_bind_group.wgsl b/crates/bevy_sprite/src/mesh2d/mesh2d_view_bind_group.wgsl index 976df7b9c0..d613ea04cc 100644 --- a/crates/bevy_sprite/src/mesh2d/mesh2d_view_bind_group.wgsl +++ b/crates/bevy_sprite/src/mesh2d/mesh2d_view_bind_group.wgsl @@ -1,5 +1,6 @@ struct View { view_proj: mat4x4; + view: mat4x4; inverse_view: mat4x4; projection: mat4x4; world_position: vec3;