]> git.tdb.fi Git - libs/gl.git/blobdiff - source/camera.cpp
Fix Camera::unproject
[libs/gl.git] / source / camera.cpp
index ba8ff718d136744dbff8261d73b887a21258ef76..ae35f632438df2d9a7a8a416f838deabde6b8320 100644 (file)
@@ -99,10 +99,15 @@ Vector3 Camera::project(const Vector3 &p) const
 Vector4 Camera::unproject(const Vector4 &p) const
 {
        Vector4 r = invert(proj_matrix)*Vector4(p.x, p.y, p.z, 1.0f);
-       r = object_matrix*Vector4(r.x, r.y, r.z, p.w);
+       r = object_matrix*Vector4(r.x/r.w, r.y/r.w, r.z/r.w, p.w);
        return r;
 }
 
+Vector3 Camera::unproject(const Vector3 &p) const
+{
+       return unproject(Vector4(p.x, p.y, p.z, 1.0f)).slice<3>(0);
+}
+
 void Camera::apply() const
 {
        MatrixStack::projection() = proj_matrix;