mirror of
https://github.com/recp/cglm.git
synced 2025-10-03 16:51:35 +00:00
struct: add missing glms_project_z()
This commit is contained in:
@@ -15,6 +15,17 @@
|
|||||||
#include "vec4.h"
|
#include "vec4.h"
|
||||||
#include "mat4.h"
|
#include "mat4.h"
|
||||||
|
|
||||||
|
#ifndef CGLM_CLIPSPACE_INCLUDE_ALL
|
||||||
|
# if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT
|
||||||
|
# include "clipspace/project_zo.h"
|
||||||
|
# elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT
|
||||||
|
# include "clipspace/project_no.h"
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# include "clipspace/project_zo.h"
|
||||||
|
# include "clipspace/project_no.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief maps the specified viewport coordinates into specified space [1]
|
* @brief maps the specified viewport coordinates into specified space [1]
|
||||||
* the matrix should contain projection matrix.
|
* the matrix should contain projection matrix.
|
||||||
@@ -68,6 +79,9 @@ glms_unprojecti(vec3s pos, mat4s invMat, vec4s vp) {
|
|||||||
* glm_mat4_mul(proj, view, viewProj);
|
* glm_mat4_mul(proj, view, viewProj);
|
||||||
* glm_mat4_mul(viewProj, model, MVP);
|
* glm_mat4_mul(viewProj, model, MVP);
|
||||||
*
|
*
|
||||||
|
* or in struct api:
|
||||||
|
* MVP = mat4_mul(mat4_mul(proj, view), model)
|
||||||
|
*
|
||||||
* @param[in] pos point/position in viewport coordinates
|
* @param[in] pos point/position in viewport coordinates
|
||||||
* @param[in] m matrix (see brief)
|
* @param[in] m matrix (see brief)
|
||||||
* @param[in] vp viewport as [x, y, width, height]
|
* @param[in] vp viewport as [x, y, width, height]
|
||||||
@@ -88,6 +102,9 @@ glms_unproject(vec3s pos, mat4s m, vec4s vp) {
|
|||||||
* glm_mat4_mul(proj, view, viewProj);
|
* glm_mat4_mul(proj, view, viewProj);
|
||||||
* glm_mat4_mul(viewProj, model, MVP);
|
* glm_mat4_mul(viewProj, model, MVP);
|
||||||
*
|
*
|
||||||
|
* or in struct api:
|
||||||
|
* MVP = mat4_mul(mat4_mul(proj, view), model)
|
||||||
|
*
|
||||||
* @param[in] pos object coordinates
|
* @param[in] pos object coordinates
|
||||||
* @param[in] m MVP matrix
|
* @param[in] m MVP matrix
|
||||||
* @param[in] vp viewport as [x, y, width, height]
|
* @param[in] vp viewport as [x, y, width, height]
|
||||||
@@ -101,6 +118,32 @@ glms_project(vec3s pos, mat4s m, vec4s vp) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief map object's z coordinate to window coordinates
|
||||||
|
*
|
||||||
|
* Computing MVP:
|
||||||
|
* glm_mat4_mul(proj, view, viewProj);
|
||||||
|
* glm_mat4_mul(viewProj, model, MVP);
|
||||||
|
*
|
||||||
|
* or in struct api:
|
||||||
|
* MVP = mat4_mul(mat4_mul(proj, view), model)
|
||||||
|
*
|
||||||
|
* @param[in] v object coordinates
|
||||||
|
* @param[in] m MVP matrix
|
||||||
|
*
|
||||||
|
* @returns projected z coordinate
|
||||||
|
*/
|
||||||
|
CGLM_INLINE
|
||||||
|
float
|
||||||
|
glms_project_z(vec3s v, mat4s m) {
|
||||||
|
return glm_project_z(v.raw, m.raw);
|
||||||
|
#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT
|
||||||
|
return glms_project_z_zo(v, m);
|
||||||
|
#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT
|
||||||
|
return glms_project_z_no(v, m);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief define a picking region
|
* @brief define a picking region
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user