diff --git a/demo/common/src/camera.rs b/demo/common/src/camera.rs index 5533f215..59d57e5c 100644 --- a/demo/common/src/camera.rs +++ b/demo/common/src/camera.rs @@ -155,13 +155,10 @@ impl CameraTransform3D { pub fn to_transform(&self) -> Transform4F { let mut transform = Transform4F::from_rotation(self.yaw, self.pitch, 0.0); transform *= Transform4F::from_uniform_scale(2.0 * self.scale); - transform *= - Transform4F::from_translation(self.position * Vector4F::new(-1.0, -1.0, -1.0, 1.0)); - // Flip Y. - transform *= Transform4F::from_scale(Vector4F::new(1.0, -1.0, 1.0, 1.0)); - - transform + // Flip Y, and translate. + let offset = self.position * Vector4F::new(-1.0, -1.0, -1.0, 1.0); + transform * Transform4F::from_scale(Vector4F::new(1.0, -1.0, 1.0, 1.0)).translate(offset) } } diff --git a/geometry/src/transform3d.rs b/geometry/src/transform3d.rs index c7f5363d..9533a6ab 100644 --- a/geometry/src/transform3d.rs +++ b/geometry/src/transform3d.rs @@ -220,6 +220,11 @@ impl Transform4F { } } + #[inline] + pub fn translate(&self, translation: Vector4F) -> Transform4F { + Transform4F::from_translation(translation) * *self + } + #[inline] pub fn transform_point(&self, point: Vector4F) -> Vector4F { let term0 = self.c0 * F32x4::splat(point.x()); diff --git a/renderer/src/gpu/renderer.rs b/renderer/src/gpu/renderer.rs index c93d7c95..f9ccf27f 100644 --- a/renderer/src/gpu/renderer.rs +++ b/renderer/src/gpu/renderer.rs @@ -471,11 +471,8 @@ where fn tile_transform(&self) -> Transform4F { let draw_viewport = self.draw_viewport().size().to_f32(); let scale = F32x2::new(2.0 / draw_viewport.x(), -2.0 / draw_viewport.y()); - let transform = Transform4F::from_scale(Vector4F::new(2.0 / draw_viewport.x(), - -2.0 / draw_viewport.y(), - 1.0, - 1.0)); - Transform4F::from_translation(Vector4F::new(-1.0, 1.0, 0.0, 1.0)) * transform + let scale = Vector4F::new(2.0 / draw_viewport.x(), -2.0 / draw_viewport.y(), 1.0, 1.0); + Transform4F::from_scale(scale).translate(Vector4F::new(-1.0, 1.0, 0.0, 1.0)) } fn draw_alpha_tiles(&mut self, count: u32) {