From 780179ff0d5796690a3ae84c2160e4cd5e4de22c Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 8 Mar 2018 22:29:10 +0300 Subject: [PATCH] fix unproject --- include/cglm/call/project.h | 2 +- include/cglm/project.h | 5 ++++- src/project.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/cglm/call/project.h b/include/cglm/call/project.h index 1120b21..c60b9b3 100644 --- a/include/cglm/call/project.h +++ b/include/cglm/call/project.h @@ -19,7 +19,7 @@ glmc_unprojecti(mat4 invMat, vec4 vp, vec3 coord, vec3 dest); CGLM_EXPORT void -glmc_unproject(mat4 m, vec2 vp, vec3 coord, vec3 dest); +glmc_unproject(mat4 m, vec4 vp, vec3 coord, vec3 dest); #ifdef __cplusplus } diff --git a/include/cglm/project.h b/include/cglm/project.h index 911a69b..8a53577 100644 --- a/include/cglm/project.h +++ b/include/cglm/project.h @@ -9,6 +9,8 @@ #define cglm_project_h #include "mat4.h" +#include "vec3.h" +#include "vec4.h" /*! * @brief maps the specified viewport coordinates into specified space [1] @@ -46,7 +48,8 @@ glm_unprojecti(mat4 invMat, vec4 vp, vec3 coord, vec4 dest) { v[2] = 2.0f * coord[2] - 1.0f; v[3] = 1.0f; - glm_mat4_mulv(invMat, v, dest); + glm_mat4_mulv(invMat, v, v); + glm_vec4_scale(v, 1.0f / v[3], dest); } /*! diff --git a/src/project.c b/src/project.c index 80e0b44..16209e7 100644 --- a/src/project.c +++ b/src/project.c @@ -16,6 +16,6 @@ glmc_unprojecti(mat4 invMat, vec4 vp, vec3 coord, vec3 dest) { CGLM_EXPORT void -glmc_unproject(mat4 m, vec2 vp, vec3 coord, vec3 dest) { +glmc_unproject(mat4 m, vec4 vp, vec3 coord, vec3 dest) { glm_unproject(m, vp, coord, dest); }