From 37defcbc331e227e00512c22eb6cea67b04cf9a8 Mon Sep 17 00:00:00 2001 From: EvilSpirit Date: Sat, 19 Nov 2016 13:50:38 +0700 Subject: [PATCH] Unbreak Camera::UnProjectPoint3. The handedness was wrong, and this resulted in weird glitches while drawing anything that depends on AlignToPixelGrid, like normals. --- src/render/render.cpp | 2 +- test/constraint/pt_on_face/normal.png | Bin 4660 -> 4663 bytes test/group/translate_asy/normal.png | Bin 8317 -> 8508 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/render.cpp b/src/render/render.cpp index 3beb83d1..b3327ec0 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -56,7 +56,7 @@ Vector Camera::UnProjectPoint3(Vector p) const { Vector orig = offset.ScaledBy(-1); orig = orig.Plus(projRight.ScaledBy(p.x)).Plus( projUp. ScaledBy(p.y).Plus( - projRight.Cross(projUp). ScaledBy(p.z))); + projUp.Cross(projRight). ScaledBy(p.z))); return orig; } diff --git a/test/constraint/pt_on_face/normal.png b/test/constraint/pt_on_face/normal.png index 1258dcadf56be35d7ef04aed56b5f612af44bf55..62080a07651cc77d4d7dfc6672d0cb4587a35618 100644 GIT binary patch delta 2311 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 diff --git a/test/group/translate_asy/normal.png b/test/group/translate_asy/normal.png index c889c07e9fdde7e067f470600ca68c3be1421d82..c9b4e4ec831e041d2e339d3a4d1cc6de6951bde5 100644 GIT binary patch literal 8508 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 literal 8317 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