summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge <[email protected]>2020-04-19 15:45:25 +0200
committerTyge <[email protected]>2020-04-19 15:45:25 +0200
commit46c0760e960a19cd776c252d26cd51962d32e722 (patch)
tree4ce2f32f89ae630dc9020d9a8d508316c2da3367
parent57815b8d1be5668a40254fd2b12fd1d6ecf9da37 (diff)
downloadSTC-modified-46c0760e960a19cd776c252d26cd51962d32e722.tar.gz
STC-modified-46c0760e960a19cd776c252d26cd51962d32e722.zip
Changed vec_unit() to vec_normalize(), replaced tabs in quat.h
-rw-r--r--glm/quat.h6
-rw-r--r--glm/transform.h286
-rw-r--r--glm/vec3.h2
-rw-r--r--glm/vec4.h2
4 files changed, 151 insertions, 145 deletions
diff --git a/glm/quat.h b/glm/quat.h
index 40124eff..98afb5d5 100644
--- a/glm/quat.h
+++ b/glm/quat.h
@@ -36,7 +36,7 @@
glm_quat##tag##_init(T x, T y, T z, T w) { return (glm_quat##tag) {x, y, z, w}; } \
\
static inline glm_quat##tag \
- glm_quat##tag##_unit(glm_quat##tag q) { \
+ glm_quat##tag##_normalize(glm_quat##tag q) { \
T dot = _glm_vec4_DOT(q, q); \
if (dot <= 0.0f) return glm_quat##tag##_identity; \
return glm_vec4##tag##_mult(q, 1.0f / glm_sqrt_##tag(dot)); \
@@ -45,7 +45,7 @@
static inline glm_quat##tag \
glm_quat##tag##_fromAxis(T angle, glm_vec3##tag axis) { \
T a = angle * 0.5f, c = glm_cos_##tag(a), s = glm_sin_##tag(a); \
- glm_vec3##tag u = glm_vec3##tag##_unit(axis); \
+ glm_vec3##tag u = glm_vec3##tag##_normalize(axis); \
return (glm_quat##tag) {s * u.x, s * u.y, s * u.z, c}; \
} \
\
@@ -62,7 +62,7 @@
} else /* Build quaternion the standard way.*/ \
t = _glm_vec3_CROSS(u, v); \
glm_quat##tag q = (glm_quat##tag) {t.x, t.y, t.z, real_part}; \
- return glm_quat##tag##_unit(q); \
+ return glm_quat##tag##_normalize(q); \
} \
\
static inline glm_quat##tag \
diff --git a/glm/transform.h b/glm/transform.h
index a301b4f8..53c5b219 100644
--- a/glm/transform.h
+++ b/glm/transform.h
@@ -3,146 +3,152 @@
#define declare_mat4_transform(tag, T) \
/* right handed, opengl spec functions */ \
\
- static inline glm_mat4##tag glm_mat4##tag_##ortho(T left, T right, T bottom, T top, T zNear, T zFar) \
- { \
- glm_mat4##tag dst = glm_mat4##tag##_identity; \
- dst.m[0][0] = 2.0f / (right - left); \
- dst.m[1][1] = 2.0f / (top - bottom); \
- dst.m[2][2] = - 2.0f / (zFar - zNear); \
- dst.m[3][0] = - (right + left) / (right - left); \
- dst.m[3][1] = - (top + bottom) / (top - bottom); \
- dst.m[3][2] = - (zFar + zNear) / (zFar - zNear); \
- return dst; \
- } \
- \
- static inline glm_mat4##tag glm_mat4##tag_##frustum(T left, T right, T bottom, T top, T nearVal, T farVal) \
- { \
- glm_mat4##tag dst = glm_mat4##tag##_zero; \
- dst.m[0][0] = (2.0f * nearVal) / (right - left); \
- dst.m[1][1] = (2.0f * nearVal) / (top - bottom); \
- dst.m[2][0] = (right + left) / (right - left); \
- dst.m[2][1] = (top + bottom) / (top - bottom); \
- dst.m[2][2] = - (farVal + nearVal) / (farVal - nearVal); \
- dst.m[2][3] = - 1.0f; \
- dst.m[3][2] = - (2.0f * farVal * nearVal) / (farVal - nearVal); \
- return dst; \
- } \
+ static inline glm_mat4##tag glm_mat4##tag_##ortho(T left, T right, T bottom, T top, T zNear, T zFar) \
+ { \
+ glm_mat4##tag dst = glm_mat4##tag##_identity; \
+ dst.m[0][0] = 2.0f / (right - left); \
+ dst.m[1][1] = 2.0f / (top - bottom); \
+ dst.m[2][2] = - 2.0f / (zFar - zNear); \
+ dst.m[3][0] = - (right + left) / (right - left); \
+ dst.m[3][1] = - (top + bottom) / (top - bottom); \
+ dst.m[3][2] = - (zFar + zNear) / (zFar - zNear); \
+ return dst; \
+ } \
+ \
+ static inline glm_mat4##tag glm_mat4##tag_##frustum(T left, T right, T bottom, T top, T nearVal, T farVal) \
+ { \
+ glm_mat4##tag dst = glm_mat4##tag##_zero; \
+ dst.m[0][0] = (2.0f * nearVal) / (right - left); \
+ dst.m[1][1] = (2.0f * nearVal) / (top - bottom); \
+ dst.m[2][0] = (right + left) / (right - left); \
+ dst.m[2][1] = (top + bottom) / (top - bottom); \
+ dst.m[2][2] = - (farVal + nearVal) / (farVal - nearVal); \
+ dst.m[2][3] = - 1.0f; \
+ dst.m[3][2] = - (2.0f * farVal * nearVal) / (farVal - nearVal); \
+ return dst; \
+ } \
\
- static inline glm_mat4##tag glm_mat4##tag##_perspective(T fovy, T aspect, T zNear, T zFar) \
- { \
- const T tanHalfFovy = glm_tan_##tag(fovy / 2.0f); \
- \
- glm_mat4##tag dst = glm_mat4##tag##_zero; \
- dst.m[0][0] = 1.0f / (aspect * tanHalfFovy); \
- dst.m[1][1] = 1.0f / (tanHalfFovy); \
- dst.m[2][2] = - (zFar + zNear) / (zFar - zNear); \
- dst.m[2][3] = - 1.0f; \
- dst.m[3][2] = - (2.0f * zFar * zNear) / (zFar - zNear); \
- return dst; \
- } \
+ static inline glm_mat4##tag glm_mat4##tag##_perspective(T fovy, T aspect, T zNear, T zFar) \
+ { \
+ const T tanHalfFovy = glm_tan_##tag(fovy / 2.0f); \
+ \
+ glm_mat4##tag dst = glm_mat4##tag##_zero; \
+ dst.m[0][0] = 1.0f / (aspect * tanHalfFovy); \
+ dst.m[1][1] = 1.0f / (tanHalfFovy); \
+ dst.m[2][2] = - (zFar + zNear) / (zFar - zNear); \
+ dst.m[2][3] = - 1.0f; \
+ dst.m[3][2] = - (2.0f * zFar * zNear) / (zFar - zNear); \
+ return dst; \
+ } \
\
- static inline glm_mat4##tag glm_mat4##tag_##perspectiveFov(T fov, T width, T height, T zNear, T zFar) \
- { \
- const T rad = fov; \
- const T h = glm_cos_##tag(0.5f * rad) / glm_sin_##tag(0.5f * rad); \
- const T w = h * height / width; /* todo max(width , Height) / min(width , Height)? */ \
- \
- glm_mat4##tag dst = glm_mat4##tag##_zero; \
- dst.m[0][0] = w; \
- dst.m[1][1] = h; \
- dst.m[2][2] = - (zFar + zNear) / (zFar - zNear); \
- dst.m[2][3] = - 1.0f; \
- dst.m[3][2] = - (2.0f * zFar * zNear) / (zFar - zNear); \
- return dst; \
- } \
+ static inline glm_mat4##tag glm_mat4##tag_##perspectiveFov(T fov, T width, T height, T zNear, T zFar) \
+ { \
+ const T rad = fov; \
+ const T h = glm_cos_##tag(0.5f * rad) / glm_sin_##tag(0.5f * rad); \
+ const T w = h * height / width; /* todo max(width , Height) / min(width , Height)? */ \
+ \
+ glm_mat4##tag dst = glm_mat4##tag##_zero; \
+ dst.m[0][0] = w; \
+ dst.m[1][1] = h; \
+ dst.m[2][2] = - (zFar + zNear) / (zFar - zNear); \
+ dst.m[2][3] = - 1.0f; \
+ dst.m[3][2] = - (2.0f * zFar * zNear) / (zFar - zNear); \
+ return dst; \
+ } \
\
- static inline glm_mat4##tag glm_mat4##tag_##infinitePerspective(T fovy, T aspect, T zNear) \
- { \
- const T range = glm_tan_##tag(fovy / 2.0f) * zNear; \
- const T left = -range * aspect; \
- const T right = range * aspect; \
- const T bottom = -range; \
- const T top = range; \
- \
- glm_mat4##tag dst = glm_mat4##tag##_zero; \
- dst.m[0][0] = (2.0f * zNear) / (right - left); \
- dst.m[1][1] = (2.0f * zNear) / (top - bottom); \
- dst.m[2][2] = - 1.0f; \
- dst.m[2][3] = - 1.0f; \
- dst.m[3][2] = - 2.0f * zNear; \
- return dst; \
- }
-
-// ------------
-
- static inline glm_mat4##tag translate(const glm_mat4##tag##m m, glm_vec3##tag v)
- {
- glm_mat4##tag dst = *(const glm_mat4##tag *) m;
- dst.m[3] = m[0] * v[0] + m[1] * v.y + m[2] * v.z + m[3];
- return dst;
- }
-
- static inline glm_mat4##tag rotate(glm_mat4##tag##m m, T angle, glm_vec3##tag v)
- {
- const T a = angle;
- const T c = cos(a);
- const T s = sin(a);
-
- glm_vec3##tag axis(normalize(v));
- glm_vec3##tag temp((T(1) - c) * axis);
-
- glm_mat4##tag rot;
- rot.m[0][0] = c + temp[0] * axis[0];
- rot.m[0][1] = temp[0] * axis[1] + s * axis[2];
- rot.m[0][2] = temp[0] * axis[2] - s * axis[1];
-
- rot.m[1][0] = temp[1] * axis[0] - s * axis[2];
- rot.m[1][1] = c + temp[1] * axis[1];
- rot.m[1][2] = temp[1] * axis[2] + s * axis[0];
-
- rot.m[2][0] = temp[2] * axis[0] + s * axis[1];
- rot.m[2][1] = temp[2] * axis[1] - s * axis[0];
- rot.m[2][2] = c + temp[2] * axis[2];
-
- glm_mat4##tag dst;
- dst.m[0] = m[0] * rot.m[0][0] + m[1] * rot.m[0][1] + m[2] * rot.m[0][2];
- dst.m[1] = m[0] * rot.m[1][0] + m[1] * rot.m[1][1] + m[2] * rot.m[1][2];
- dst.m[2] = m[0] * rot.m[2][0] + m[1] * rot.m[2][1] + m[2] * rot.m[2][2];
- dst.m[3] = m[3];
- return dst;
- }
-
-
- static inline glm_mat4##tag scale(glm_mat4##tag##m m, glm_vec3##tag v)
- {
- glm_mat4##tag dst;
- dst.m[0] = m[0] * v[0];
- dst.m[1] = m[1] * v[1];
- dst.m[2] = m[2] * v[2];
- dst.m[3] = m[3];
- return dst;
- }
-
- static inline glm_mat4##tag lookAtRH(glm_vec3##tag eye, glm_vec3##tag center, glm_vec3##tag up)
- {
- const glm_vec3##tag f(normalize(center - eye));
- const glm_vec3##tag s(normalize(cross(f, up)));
- const glm_vec3##tag u(cross(s, f));
-
- glm_mat4##tag dst(1);
- dst.m[0][0] = s.x;
- dst.m[1][0] = s.y;
- dst.m[2][0] = s.z;
- dst.m[0][1] = u.x;
- dst.m[1][1] = u.y;
- dst.m[2][1] = u.z;
- dst.m[0][2] =-f.x;
- dst.m[1][2] =-f.y;
- dst.m[2][2] =-f.z;
- dst.m[3][0] =-dot(s, eye);
- dst.m[3][1] =-dot(u, eye);
- dst.m[3][2] = dot(f, eye);
- return dst;
- }
-
-}//namespace glm
+ static inline glm_mat4##tag glm_mat4##tag_##infinitePerspective(T fovy, T aspect, T zNear) \
+ { \
+ const T range = glm_tan_##tag(fovy / 2.0f) * zNear; \
+ const T left = -range * aspect; \
+ const T right = range * aspect; \
+ const T bottom = -range; \
+ const T top = range; \
+ \
+ glm_mat4##tag dst = glm_mat4##tag##_zero; \
+ dst.m[0][0] = (2.0f * zNear) / (right - left); \
+ dst.m[1][1] = (2.0f * zNear) / (top - bottom); \
+ dst.m[2][2] = - 1.0f; \
+ dst.m[2][3] = - 1.0f; \
+ dst.m[3][2] = - 2.0f * zNear; \
+ return dst; \
+ } \
+ \
+ static inline glm_mat4##tag translate(const glm_mat4##tag##m m, glm_vec3##tag v) \
+ { \
+ glm_mat4##tag dst = *(const glm_mat4##tag *) m; \
+ glm_vec4##tag##_add(&dst.v[3], glm_vec4##tag##_mult(dst.v[0], v.x) \
+ + glm_vec4##tag##_mult(dst.v[1], v.y) \
+ + glm_vec4##tag##_mult(dst.v[2], v.z); \
+ return dst; \
+ } \
+ \
+ \
+ static inline glm_mat4##tag rotate(glm_mat4##tag##m m, T angle, glm_vec3##tag v) \
+ { \
+ const T a = angle; \
+ const T c = glm_cos_##tag(a); \
+ const T s = glm_sin_##tag(a); \
+ \
+ glm_vec3##tag axis = glm_vec3##tag##_normalize(v); \
+ glm_vec3##tag temp = glm_vec3##tag##_mult(axis, 1.0f - c); \
+ \
+ glm_mat4##tag rot; \
+ rot.m[0][0] = c + temp.x * axis.x; \
+ rot.m[0][1] = temp.x * axis.y + s * axis.z; \
+ rot.m[0][2] = temp.x * axis.z - s * axis.y; \
+ \
+ rot.m[1][0] = temp.y * axis.x - s * axis.z; \
+ rot.m[1][1] = c + temp.y * axis.y; \
+ rot.m[1][2] = temp.y * axis.z + s * axis.x; \
+ \
+ rot.m[2][0] = temp.z * axis.x + s * axis.y; \
+ rot.m[2][1] = temp.z * axis.y - s * axis.x; \
+ rot.m[2][2] = c + temp.z * axis.z; \
+ \
+ glm_mat4##tag dst; \
+ const glm_vec4##tag* mv = (const glm_vec4##tag *) m; \
+ dst.m[0] = glm_vec4##tag##_mult(mv[0], rot.m[0][0]) \
+ + glm_vec4##tag##_mult(mv[1], rot.m[0][1]) \
+ + glm_vec4##tag##_mult(mv[2], rot.m[0][2]); \
+ dst.m[1] = glm_vec4##tag##_mult(mv[0], rot.m[1][0]) \
+ + glm_vec4##tag##_mult(mv[1], rot.m[1][1]) \
+ + glm_vec4##tag##_mult(mv[2], rot.m[1][2]); \
+ dst.m[2] = glm_vec4##tag##_mult(mv[0], rot.m[2][0]) \
+ + glm_vec4##tag##_mult(mv[1], rot.m[2][1]) \
+ + glm_vec4##tag##_mult(mv[2], rot.m[2][2]); \
+ dst.m[3] = mv[3]; \
+ return dst; \
+ } \
+ \
+ \
+ static inline glm_mat4##tag scale(glm_mat4##tag##m m, glm_vec3##tag v) \
+ { \
+ glm_mat4##tag dst; \
+ dst.m[0] = m[0] * v[0]; \
+ dst.m[1] = m[1] * v[1]; \
+ dst.m[2] = m[2] * v[2]; \
+ dst.m[3] = m[3]; \
+ return dst; \
+ } \
+ \
+ static inline glm_mat4##tag lookAtRH(glm_vec3##tag eye, glm_vec3##tag center, glm_vec3##tag up) \
+ { \
+ const glm_vec3##tag f(normalize(center - eye)); \
+ const glm_vec3##tag s(normalize(cross(f, up))); \
+ const glm_vec3##tag u(cross(s, f)); \
+ \
+ glm_mat4##tag dst(1); \
+ dst.m[0][0] = s.x; \
+ dst.m[1][0] = s.y; \
+ dst.m[2][0] = s.z; \
+ dst.m[0][1] = u.x; \
+ dst.m[1][1] = u.y; \
+ dst.m[2][1] = u.z; \
+ dst.m[0][2] =-f.x; \
+ dst.m[1][2] =-f.y; \
+ dst.m[2][2] =-f.z; \
+ dst.m[3][0] =-dot(s, eye); \
+ dst.m[3][1] =-dot(u, eye); \
+ dst.m[3][2] = dot(f, eye); \
+ return dst; \
+ }
diff --git a/glm/vec3.h b/glm/vec3.h
index fb66ce42..d741d9ce 100644
--- a/glm/vec3.h
+++ b/glm/vec3.h
@@ -101,7 +101,7 @@
v.x = -v.x, v.y = -v.y, v.z = -v.z; return v; \
} \
static inline glm_vec3##tag \
- glm_vec3##tag##_unit(glm_vec3##tag v) { \
+ glm_vec3##tag##_normalize(glm_vec3##tag v) { \
T s = 1.0f / glm_sqrt_##tag(_glm_vec3_DOT(v, v)); \
s; v.x *= s, v.y *= s, v.z *= s; \
return v; \
diff --git a/glm/vec4.h b/glm/vec4.h
index 2ef0d2ea..ac7a1e4f 100644
--- a/glm/vec4.h
+++ b/glm/vec4.h
@@ -94,7 +94,7 @@
v.x = -v.x, v.y = -v.y, v.z = -v.z, v.w = -v.w; return v; \
} \
static inline glm_vec4##tag \
- glm_vec4##tag##_unit(glm_vec4##tag v) { \
+ glm_vec4##tag##_normalize(glm_vec4##tag v) { \
T s = glm_sqrt_##tag(_glm_vec4_DOT(v, v)); \
if (s < 1e-8) return glm_vec4##tag##_zero; \
s = 1.0f / s; v.x *= s, v.y *= s, v.z *= s, v.w *= s; \