mirror of
https://github.com/recp/cglm.git
synced 2026-02-17 03:39:05 +00:00
clipspace: add struct API implementations
This commit is contained in:
@@ -51,6 +51,39 @@
|
||||
#include "../plane.h"
|
||||
#include "../cam.h"
|
||||
|
||||
#ifndef CGLM_CLIPSPACE_INCLUDE_ALL
|
||||
# if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
# include "clipspace/ortho_lh_zo.h"
|
||||
# include "clipspace/persp_lh_zo.h"
|
||||
# include "clipspace/view_lh_zo.h"
|
||||
# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
# include "clipspace/ortho_lh_no.h"
|
||||
# include "clipspace/persp_lh_no.h"
|
||||
# include "clipspace/view_lh_no.h"
|
||||
# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
# include "clipspace/ortho_rh_zo.h"
|
||||
# include "clipspace/persp_rh_zo.h"
|
||||
# include "clipspace/view_rh_zo.h"
|
||||
# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
# include "clipspace/ortho_rh_no.h"
|
||||
# include "clipspace/persp_rh_no.h"
|
||||
# include "clipspace/view_rh_no.h"
|
||||
# endif
|
||||
#else
|
||||
# include "clipspace/ortho_lh_zo.h"
|
||||
# include "clipspace/persp_lh_zo.h"
|
||||
# include "clipspace/ortho_lh_no.h"
|
||||
# include "clipspace/persp_lh_no.h"
|
||||
# include "clipspace/ortho_rh_zo.h"
|
||||
# include "clipspace/persp_rh_zo.h"
|
||||
# include "clipspace/ortho_rh_no.h"
|
||||
# include "clipspace/persp_rh_no.h"
|
||||
# include "clipspace/view_lh_zo.h"
|
||||
# include "clipspace/view_lh_no.h"
|
||||
# include "clipspace/view_rh_zo.h"
|
||||
# include "clipspace/view_rh_no.h"
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @brief set up perspective peprojection matrix
|
||||
*
|
||||
@@ -67,9 +100,15 @@ mat4s
|
||||
glms_frustum(float left, float right,
|
||||
float bottom, float top,
|
||||
float nearZ, float farZ) {
|
||||
mat4s dest;
|
||||
glm_frustum(left, right, bottom, top, nearZ, farZ, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_frustum_lh_zo(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_frustum_lh_no(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_frustum_rh_zo(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_frustum_rh_no(left, right, bottom, top, nearZ, farZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -88,9 +127,15 @@ mat4s
|
||||
glms_ortho(float left, float right,
|
||||
float bottom, float top,
|
||||
float nearZ, float farZ) {
|
||||
mat4s dest;
|
||||
glm_ortho(left, right, bottom, top, nearZ, farZ, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_lh_zo(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_lh_no(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_rh_zo(left, right, bottom, top, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_rh_no(left, right, bottom, top, nearZ, farZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -104,13 +149,15 @@ glms_ortho(float left, float right,
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_ortho_aabb(vec3s box[2]) {
|
||||
mat4s dest;
|
||||
vec3 rawBox[2];
|
||||
|
||||
glms_vec3_unpack(rawBox, box, 2);
|
||||
glm_ortho_aabb(rawBox, dest.raw);
|
||||
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_aabb_lh_zo(box);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_aabb_lh_no(box);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_aabb_rh_zo(box);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_aabb_rh_no(box);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -125,13 +172,15 @@ glms_ortho_aabb(vec3s box[2]) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_ortho_aabb_p(vec3s box[2], float padding) {
|
||||
mat4s dest;
|
||||
vec3 rawBox[2];
|
||||
|
||||
glms_vec3_unpack(rawBox, box, 2);
|
||||
glm_ortho_aabb_p(rawBox, padding, dest.raw);
|
||||
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_aabb_p_lh_zo(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_aabb_p_lh_no(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_aabb_p_rh_zo(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_aabb_p_rh_no(box, padding);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -146,13 +195,15 @@ glms_ortho_aabb_p(vec3s box[2], float padding) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_ortho_aabb_pz(vec3s box[2], float padding) {
|
||||
mat4s dest;
|
||||
vec3 rawBox[2];
|
||||
|
||||
glms_vec3_unpack(rawBox, box, 2);
|
||||
glm_ortho_aabb_pz(rawBox, padding, dest.raw);
|
||||
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_aabb_pz_lh_zo(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_aabb_pz_lh_no(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_aabb_pz_rh_zo(box, padding);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_aabb_pz_rh_no(box, padding);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -164,9 +215,15 @@ glms_ortho_aabb_pz(vec3s box[2], float padding) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_ortho_default(float aspect) {
|
||||
mat4s dest;
|
||||
glm_ortho_default(aspect, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_default_lh_zo(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_default_lh_no(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_default_rh_zo(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_default_rh_no(aspect);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -179,9 +236,15 @@ glms_ortho_default(float aspect) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_ortho_default_s(float aspect, float size) {
|
||||
mat4s dest;
|
||||
glm_ortho_default_s(aspect, size, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_ortho_default_s_lh_zo(aspect, size);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_ortho_default_s_lh_no(aspect, size);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_ortho_default_s_rh_zo(aspect, size);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_ortho_default_s_rh_no(aspect, size);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -196,9 +259,15 @@ glms_ortho_default_s(float aspect, float size) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_perspective(float fovy, float aspect, float nearZ, float farZ) {
|
||||
mat4s dest;
|
||||
glm_perspective(fovy, aspect, nearZ, farZ, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_perspective_lh_zo(fovy, aspect, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_perspective_lh_no(fovy, aspect, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_perspective_rh_zo(fovy, aspect, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_perspective_rh_no(fovy, aspect, nearZ, farZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -212,7 +281,15 @@ glms_perspective(float fovy, float aspect, float nearZ, float farZ) {
|
||||
CGLM_INLINE
|
||||
void
|
||||
glms_persp_move_far(mat4s proj, float deltaFar) {
|
||||
glm_persp_move_far(proj.raw, deltaFar);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_move_far_lh_zo(proj, deltaFar);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_move_far_lh_no(proj, deltaFar);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_move_far_rh_zo(proj, deltaFar);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_move_far_rh_no(proj, deltaFar);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -225,9 +302,15 @@ glms_persp_move_far(mat4s proj, float deltaFar) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_perspective_default(float aspect) {
|
||||
mat4s dest;
|
||||
glm_perspective_default(aspect, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_perspective_default_lh_zo(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_perspective_default_lh_no(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_perspective_default_rh_zo(aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_perspective_default_rh_no(aspect);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -241,7 +324,15 @@ glms_perspective_default(float aspect) {
|
||||
CGLM_INLINE
|
||||
void
|
||||
glms_perspective_resize(mat4s proj, float aspect) {
|
||||
glm_perspective_resize(aspect, proj.raw);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_perspective_resize_lh_zo(proj, aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_perspective_resize_lh_no(proj, aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_perspective_resize_rh_zo(proj, aspect);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_perspective_resize_rh_no(proj, aspect);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -258,9 +349,15 @@ glms_perspective_resize(mat4s proj, float aspect) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_lookat(vec3s eye, vec3s center, vec3s up) {
|
||||
mat4s dest;
|
||||
glm_lookat(eye.raw, center.raw, up.raw, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_lookat_lh_zo(eye, center, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_lookat_lh_no(eye, center, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_lookat_rh_zo(eye, center, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_lookat_rh_no(eye, center, up);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -280,9 +377,15 @@ glms_lookat(vec3s eye, vec3s center, vec3s up) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_look(vec3s eye, vec3s dir, vec3s up) {
|
||||
mat4s dest;
|
||||
glm_look(eye.raw, dir.raw, up.raw, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_look_lh_zo(eye, dir, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_look_lh_no(eye, dir, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_look_rh_zo(eye, dir, up);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_look_rh_no(eye, dir, up);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -298,9 +401,15 @@ glms_look(vec3s eye, vec3s dir, vec3s up) {
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_look_anyup(vec3s eye, vec3s dir) {
|
||||
mat4s dest;
|
||||
glm_look_anyup(eye.raw, dir.raw, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_look_anyup_lh_zo(eye, dir);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_look_anyup_lh_no(eye, dir);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_look_anyup_rh_zo(eye, dir);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_look_anyup_rh_no(eye, dir);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -320,7 +429,15 @@ glms_persp_decomp(mat4s proj,
|
||||
float * __restrict nearZ, float * __restrict farZ,
|
||||
float * __restrict top, float * __restrict bottom,
|
||||
float * __restrict left, float * __restrict right) {
|
||||
glm_persp_decomp(proj.raw, nearZ, farZ, top, bottom, left, right);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decomp_lh_zo(proj, nearZ, farZ, top, bottom, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decomp_lh_no(proj, nearZ, farZ, top, bottom, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decomp_rh_zo(proj, nearZ, farZ, top, bottom, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decomp_rh_no(proj, nearZ, farZ, top, bottom, left, right);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -333,7 +450,15 @@ glms_persp_decomp(mat4s proj,
|
||||
CGLM_INLINE
|
||||
void
|
||||
glms_persp_decompv(mat4s proj, float dest[6]) {
|
||||
glm_persp_decompv(proj.raw, dest);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decompv_lh_zo(proj, dest);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decompv_lh_no(proj, dest);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decompv_rh_zo(proj, dest);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decompv_rh_no(proj, dest);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -349,7 +474,15 @@ void
|
||||
glms_persp_decomp_x(mat4s proj,
|
||||
float * __restrict left,
|
||||
float * __restrict right) {
|
||||
glm_persp_decomp_x(proj.raw, left, right);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decomp_x_lh_zo(proj, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decomp_x_lh_no(proj, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decomp_x_rh_zo(proj, left, right);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decomp_x_rh_no(proj, left, right);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -365,7 +498,15 @@ void
|
||||
glms_persp_decomp_y(mat4s proj,
|
||||
float * __restrict top,
|
||||
float * __restrict bottom) {
|
||||
glm_persp_decomp_y(proj.raw, top, bottom);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_persp_decomp_y_lh_zo(proj, top, bottom);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_persp_decomp_y_lh_no(proj, top, bottom);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_persp_decomp_y_rh_zo(proj, top, bottom);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_persp_decomp_y_rh_no(proj, top, bottom);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -381,7 +522,15 @@ void
|
||||
glms_persp_decomp_z(mat4s proj,
|
||||
float * __restrict nearZ,
|
||||
float * __restrict farZ) {
|
||||
glm_persp_decomp_z(proj.raw, nearZ, farZ);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decomp_z_lh_zo(proj, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decomp_z_lh_no(proj, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decomp_z_rh_zo(proj, nearZ, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decomp_z_rh_no(proj, nearZ, farZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -393,7 +542,15 @@ glms_persp_decomp_z(mat4s proj,
|
||||
CGLM_INLINE
|
||||
void
|
||||
glms_persp_decomp_far(mat4s proj, float * __restrict farZ) {
|
||||
glm_persp_decomp_far(proj.raw, farZ);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decomp_far_lh_zo(proj, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decomp_far_lh_no(proj, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decomp_far_rh_zo(proj, farZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decomp_far_rh_no(proj, farZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -405,7 +562,15 @@ glms_persp_decomp_far(mat4s proj, float * __restrict farZ) {
|
||||
CGLM_INLINE
|
||||
void
|
||||
glms_persp_decomp_near(mat4s proj, float * __restrict nearZ) {
|
||||
glm_persp_decomp_near(proj.raw, nearZ);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
glms_persp_decomp_near_lh_zo(proj, nearZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
glms_persp_decomp_near_lh_no(proj, nearZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
glms_persp_decomp_near_rh_zo(proj, nearZ);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
glms_persp_decomp_near_rh_no(proj, nearZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -419,7 +584,15 @@ glms_persp_decomp_near(mat4s proj, float * __restrict nearZ) {
|
||||
CGLM_INLINE
|
||||
float
|
||||
glms_persp_fovy(mat4s proj) {
|
||||
return glm_persp_fovy(proj.raw);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_persp_fovy_lh_zo(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_persp_fovy_lh_no(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_persp_fovy_rh_zo(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_persp_fovy_rh_no(proj);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -430,7 +603,15 @@ glms_persp_fovy(mat4s proj) {
|
||||
CGLM_INLINE
|
||||
float
|
||||
glms_persp_aspect(mat4s proj) {
|
||||
return glm_persp_aspect(proj.raw);
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_persp_aspect_lh_zo(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_persp_aspect_lh_no(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_persp_aspect_rh_zo(proj);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_persp_aspect_rh_no(proj);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -443,9 +624,15 @@ glms_persp_aspect(mat4s proj) {
|
||||
CGLM_INLINE
|
||||
vec4s
|
||||
glms_persp_sizes(mat4s proj, float fovy) {
|
||||
vec4s dest;
|
||||
glm_persp_sizes(proj.raw, fovy, dest.raw);
|
||||
return dest;
|
||||
#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO
|
||||
return glms_persp_sizes_lh_zo(proj, fovy);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO
|
||||
return glms_persp_sizes_lh_no(proj, fovy);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO
|
||||
return glms_persp_sizes_rh_zo(proj, fovy);
|
||||
#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO
|
||||
return glms_persp_sizes_rh_no(proj, fovy);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* cglms_cam_h */
|
||||
|
||||
Reference in New Issue
Block a user