clipspace: add struct API implementations

This commit is contained in:
Tai Chi Minh Ralph Eastwood
2021-05-22 22:41:03 +02:00
parent 8ddb5d5740
commit 7f7e9f69da
13 changed files with 2397 additions and 62 deletions

View File

@@ -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 */