mirror of
https://github.com/recp/cglm.git
synced 2025-12-25 04:44:58 +00:00
re-organise files, remove cglm prefix from file to make them more clean
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#ifndef cglm_h
|
||||
#define cglm_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "cglm-vec.h"
|
||||
#include "cglm-mat.h"
|
||||
#include "cglm-mat3.h"
|
||||
#include "cglm-affine.h"
|
||||
#include "cglm-cam.h"
|
||||
#include "cglm-quat.h"
|
||||
#include "cglm-euler.h"
|
||||
#include "cglm-util.h"
|
||||
#include "cglm-io.h"
|
||||
|
||||
#endif /* cglm_h */
|
||||
@@ -14,11 +14,16 @@
|
||||
#ifndef cglm_affine_mat_h
|
||||
#define cglm_affine_mat_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "cglm-mat.h"
|
||||
#include "cglm-mat3.h"
|
||||
#include "arch/simd/cglm-affine-mat-sse2.h"
|
||||
#include "arch/simd/cglm-affine-mat-avx.h"
|
||||
#include "common.h"
|
||||
#include "mat4.h"
|
||||
|
||||
#ifdef CGLM_SSE_FP
|
||||
# include "simd/sse2/affine.h"
|
||||
#endif
|
||||
|
||||
#ifdef CGLM_AVX_FP
|
||||
# include "simd/avx/affine.h"
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
#ifndef cglm_affine_h
|
||||
#define cglm_affine_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "cglm-vec.h"
|
||||
#include "cglm-affine-mat.h"
|
||||
#include "cglm-util.h"
|
||||
#include "common.h"
|
||||
#include "vec4.h"
|
||||
#include "affine-mat.h"
|
||||
#include "util.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -12,14 +12,15 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include "cglm.h"
|
||||
#include "call/cglmc-vec.h"
|
||||
#include "call/cglmc-mat.h"
|
||||
#include "call/cglmc-mat3.h"
|
||||
#include "call/cglmc-affine.h"
|
||||
#include "call/cglmc-cam.h"
|
||||
#include "call/cglmc-quat.h"
|
||||
#include "call/cglmc-euler.h"
|
||||
#include "call/cglmc-io.h"
|
||||
#include "call/vec3.h"
|
||||
#include "call/vec4.h"
|
||||
#include "call/mat4.h"
|
||||
#include "call/mat3.h"
|
||||
#include "call/affine.h"
|
||||
#include "call/cam.h"
|
||||
#include "call/quat.h"
|
||||
#include "call/euler.h"
|
||||
#include "call/io.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#ifndef cglmc_vec_h
|
||||
#define cglmc_vec_h
|
||||
#ifndef cglmc_vec3_h
|
||||
#define cglmc_vec3_h
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -14,30 +14,16 @@ extern "C" {
|
||||
#include "../cglm.h"
|
||||
|
||||
/* DEPRECATED! use _copy, _ucopy versions */
|
||||
#define glmc_vec_dup(v, dest) glmc_vec_copy(v, dest)
|
||||
#define glmc_vec4_dup3(v, dest) glmc_vec4_copy3(v, dest)
|
||||
#define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest)
|
||||
#define glmc_vec_dup(v, dest) glmc_vec_copy(v, dest)
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_copy(vec3 a, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy3(vec4 a, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy(vec4 v, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_dot(vec3 a, vec3 b);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_dot(vec4 a, vec4 b);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_cross(vec3 a, vec3 b, vec3 d);
|
||||
@@ -46,74 +32,38 @@ CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_norm(vec3 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm(vec4 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_norm2(vec3 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm2(vec4 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_normalize_to(vec3 vec, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize_to(vec4 vec, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_normalize(vec3 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize(vec4 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_add(vec3 v1, vec3 v2, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_sub(vec3 v1, vec3 v2, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_scale(vec3 v, float s, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale(vec4 v, float s, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_scale_as(vec3 v, float s, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale_as(vec3 v, float s, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_flipsign(vec3 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_angle(vec3 v1, vec3 v2);
|
||||
@@ -138,11 +88,7 @@ CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_distance(vec3 v1, vec3 v2);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_distance(vec4 v1, vec4 v2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* cglmc_vec_h */
|
||||
#endif /* cglmc_vec3_h */
|
||||
76
include/cglm/call/vec4.h
Normal file
76
include/cglm/call/vec4.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#ifndef cglmc_vec4_h
|
||||
#define cglmc_vec4_h
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "../cglm.h"
|
||||
|
||||
/* DEPRECATED! use _copy, _ucopy versions */
|
||||
#define glmc_vec4_dup3(v, dest) glmc_vec4_copy3(v, dest)
|
||||
#define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest)
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy3(vec4 a, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy(vec4 v, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_dot(vec4 a, vec4 b);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm(vec4 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm2(vec4 vec);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize_to(vec4 vec, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize(vec4 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale(vec4 v, float s, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale_as(vec3 v, float s, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v);
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_distance(vec4 v1, vec4 v2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* cglmc_vec4_h */
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#ifndef cglm_vcam_h
|
||||
#define cglm_vcam_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "common.h"
|
||||
|
||||
/*!
|
||||
* @brief set up perspective peprojection matrix
|
||||
23
include/cglm/cglm.h
Normal file
23
include/cglm/cglm.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#ifndef cglm_h
|
||||
#define cglm_h
|
||||
|
||||
#include "common.h"
|
||||
#include "vec3.h"
|
||||
#include "vec4.h"
|
||||
#include "mat4.h"
|
||||
#include "mat3.h"
|
||||
#include "affine.h"
|
||||
#include "cam.h"
|
||||
#include "quat.h"
|
||||
#include "euler.h"
|
||||
#include "util.h"
|
||||
#include "io.h"
|
||||
|
||||
#endif /* cglm_h */
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
#define glm__memzero(type, dest, size) glm__memset(type, dest, size, 0)
|
||||
|
||||
#include "cglm-types.h"
|
||||
#include "arch/simd/cglm-intrin.h"
|
||||
#include "types.h"
|
||||
#include "simd/intrin.h"
|
||||
|
||||
#endif /* cglm_common_h */
|
||||
@@ -26,7 +26,7 @@
|
||||
#ifndef cglm_euler_h
|
||||
#define cglm_euler_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "common.h"
|
||||
|
||||
/*!
|
||||
* if you have axis order like vec3 orderVec = [0, 1, 2] or [0, 2, 1]...
|
||||
@@ -18,7 +18,7 @@
|
||||
#ifndef cglm_io_h
|
||||
#define cglm_io_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "common.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -30,8 +30,11 @@
|
||||
#ifndef cglm_mat3_h
|
||||
#define cglm_mat3_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "arch/simd/cglm-mat3-simd-sse2.h"
|
||||
#include "common.h"
|
||||
|
||||
#ifdef CGLM_SSE_FP
|
||||
# include "simd/sse2/mat3.h"
|
||||
#endif
|
||||
|
||||
#define GLM_MAT3_IDENTITY_INIT {{1.0f, 0.0f, 0.0f}, \
|
||||
{0.0f, 1.0f, 0.0f}, \
|
||||
@@ -44,18 +44,18 @@
|
||||
#ifndef cglm_mat_h
|
||||
#define cglm_mat_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "common.h"
|
||||
|
||||
#ifdef CGLM_SSE_FP
|
||||
# include "arch/simd/cglm-mat-simd-sse2.h"
|
||||
# include "simd/sse2/mat4.h"
|
||||
#endif
|
||||
|
||||
#ifdef CGLM_AVX_FP
|
||||
# include "arch/simd/cglm-mat-simd-avx.h"
|
||||
# include "simd/avx/mat4.h"
|
||||
#endif
|
||||
|
||||
#ifdef CGLM_NEON_FP
|
||||
# include "arch/simd/neon/mat4.h"
|
||||
# include "simd/neon/mat4.h"
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
@@ -25,10 +25,12 @@
|
||||
#ifndef cglm_quat_h
|
||||
#define cglm_quat_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "cglm-vec.h"
|
||||
#include "arch/simd/cglm-intrin.h"
|
||||
#include "arch/simd/cglm-quat-simd.h"
|
||||
#include "common.h"
|
||||
#include "vec4.h"
|
||||
|
||||
#ifdef CGLM_SSE_FP
|
||||
# include "simd/sse2/quat.h"
|
||||
#endif
|
||||
|
||||
#define GLM_QUAT_IDENTITY_INIT {0.0f, 0.0f, 0.0f, 1.0f}
|
||||
#define GLM_QUAT_IDENTITY (versor){0.0f, 0.0f, 0.0f, 1.0f}
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_affine_mat_avx_h
|
||||
#ifdef __AVX__
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_mat_simd_avx_h
|
||||
#ifdef __AVX__
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
|
||||
/* ARM Neon */
|
||||
#if defined(__ARM_NEON) && defined(__ARM_NEON_FP)
|
||||
# include <arm_neon.h>
|
||||
# define CGLM_NEON_FP 1
|
||||
#else
|
||||
# undef CGLM_NEON_FP
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_mat4_neon_h
|
||||
#if defined(__ARM_NEON_FP)
|
||||
|
||||
#include "../../../cglm-common.h"
|
||||
#include <arm_neon.h>
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_affine_mat_sse2_h
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_mat3_sse_h
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_mat_sse_h
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -9,8 +9,8 @@
|
||||
#define cglm_quat_simd_h
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
|
||||
#include "../../cglm-common.h"
|
||||
#include "cglm-intrin.h"
|
||||
#include "../../common.h"
|
||||
#include "../intrin.h"
|
||||
|
||||
CGLM_INLINE
|
||||
void
|
||||
@@ -18,7 +18,7 @@
|
||||
#ifndef cglm_util_h
|
||||
#define cglm_util_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "common.h"
|
||||
|
||||
/*!
|
||||
* @brief get sign of 32 bit integer as +1 or -1
|
||||
163
include/cglm/vec3-ext.h
Normal file
163
include/cglm/vec3-ext.h
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @brief SIMD like functions
|
||||
*/
|
||||
|
||||
/*
|
||||
Functions:
|
||||
CGLM_INLINE void glm_vec_mulv(vec3 a, vec3 b, vec3 d);
|
||||
CGLM_INLINE void glm_vec_broadcast(float val, vec3 d);
|
||||
CGLM_INLINE bool glm_vec_eq(vec3 v, float val);
|
||||
CGLM_INLINE bool glm_vec_eq_eps(vec4 v, float val);
|
||||
CGLM_INLINE bool glm_vec_eq_all(vec3 v);
|
||||
CGLM_INLINE bool glm_vec_eqv(vec3 v1, vec3 v2);
|
||||
CGLM_INLINE bool glm_vec_eqv_eps(vec3 v1, vec3 v2);
|
||||
CGLM_INLINE float glm_vec_max(vec3 v);
|
||||
CGLM_INLINE float glm_vec_min(vec3 v);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec3_ext_h
|
||||
#define cglm_vec3_ext_h
|
||||
|
||||
#include "common.h"
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
|
||||
/*!
|
||||
* @brief multiplies individual items, just for convenient like SIMD
|
||||
*
|
||||
* @param a vec1
|
||||
* @param b vec2
|
||||
* @param d vec3 = (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2])
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_mulv(vec3 a, vec3 b, vec3 d) {
|
||||
d[0] = a[0] * b[0];
|
||||
d[1] = a[1] * b[1];
|
||||
d[2] = a[2] * b[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief fill a vector with specified value
|
||||
*
|
||||
* @param val value
|
||||
* @param d dest
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_broadcast(float val, vec3 d) {
|
||||
d[0] = d[1] = d[2] = val;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to value (without epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
* @param val value
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq(vec3 v, float val) {
|
||||
return v[0] == val && v[0] == v[1] && v[0] == v[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to value (with epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
* @param val value
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq_eps(vec4 v, float val) {
|
||||
return fabsf(v[0] - val) <= FLT_EPSILON
|
||||
&& fabsf(v[1] - val) <= FLT_EPSILON
|
||||
&& fabsf(v[2] - val) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vectors members are equal (without epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq_all(vec3 v) {
|
||||
return v[0] == v[1] && v[0] == v[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to another (without epsilon)
|
||||
*
|
||||
* @param v1 vector
|
||||
* @param v2 vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eqv(vec3 v1, vec3 v2) {
|
||||
return v1[0] == v2[0]
|
||||
&& v1[1] == v2[1]
|
||||
&& v1[2] == v2[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to another (with epsilon)
|
||||
*
|
||||
* @param v1 vector
|
||||
* @param v2 vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eqv_eps(vec3 v1, vec3 v2) {
|
||||
return fabsf(v1[0] - v2[0]) <= FLT_EPSILON
|
||||
&& fabsf(v1[1] - v2[1]) <= FLT_EPSILON
|
||||
&& fabsf(v1[2] - v2[2]) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief max value of vector
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec_max(vec3 v) {
|
||||
float max;
|
||||
|
||||
max = v[0];
|
||||
if (v[1] > max)
|
||||
max = v[1];
|
||||
if (v[2] > max)
|
||||
max = v[2];
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief min value of vector
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec_min(vec3 v) {
|
||||
float min;
|
||||
|
||||
min = v[0];
|
||||
if (v[1] < min)
|
||||
min = v[1];
|
||||
if (v[2] < min)
|
||||
min = v[2];
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
#endif /* cglm_vec3_ext_h */
|
||||
@@ -13,11 +13,8 @@
|
||||
/*
|
||||
Macros:
|
||||
glm_vec_dup(v, dest)
|
||||
glm_vec4_dup3(v, dest)
|
||||
glm_vec4_dup(v, dest)
|
||||
|
||||
Functions:
|
||||
vec3:
|
||||
CGLM_INLINE void glm_vec_copy(vec3 a, vec3 dest);
|
||||
CGLM_INLINE float glm_vec_dot(vec3 a, vec3 b);
|
||||
CGLM_INLINE void glm_vec_cross(vec3 a, vec3 b, vec3 d);
|
||||
@@ -36,35 +33,17 @@
|
||||
CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_proj(vec3 a, vec3 b, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_center(vec3 v1, vec3 v2, vec3 dest);
|
||||
|
||||
vec4:
|
||||
CGLM_INLINE void glm_vec4_copy3(vec4 a, vec3 dest);
|
||||
CGLM_INLINE void glm_vec4_copy(vec4 v, vec4 dest);
|
||||
CGLM_INLINE float glm_vec4_dot(vec4 a, vec4 b);
|
||||
CGLM_INLINE float glm_vec4_norm2(vec4 v);
|
||||
CGLM_INLINE float glm_vec4_norm(vec4 vec);
|
||||
CGLM_INLINE void glm_vec4_add(vec4 v1, vec4 v2, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_sub(vec4 v1, vec4 v2, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_scale(vec4 v, float s, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_scale_as(vec4 v, float s, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_flipsign(vec4 v);
|
||||
CGLM_INLINE void glm_vec4_normalize(vec4 v);
|
||||
CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest);
|
||||
CGLM_INLINE float glm_vec4_distance(vec4 v1, vec4 v2);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec_h
|
||||
#define cglm_vec_h
|
||||
#ifndef cglm_vec3_h
|
||||
#define cglm_vec3_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "cglm-vec-ext.h"
|
||||
#include "arch/simd/cglm-intrin.h"
|
||||
#include "cglm-util.h"
|
||||
#include "common.h"
|
||||
#include "vec3-ext.h"
|
||||
#include "util.h"
|
||||
|
||||
/* DEPRECATED! use _copy, _ucopy versions */
|
||||
#define glm_vec_dup(v, dest) glm_vec_copy(v, dest)
|
||||
#define glm_vec4_dup3(v, dest) glm_vec4_copy3(v, dest)
|
||||
#define glm_vec4_dup(v, dest) glm_vec4_copy(v, dest)
|
||||
#define glm_vec_dup(v, dest) glm_vec_copy(v, dest)
|
||||
|
||||
/*!
|
||||
* @brief copy all members of [a] to [dest]
|
||||
@@ -80,39 +59,6 @@ glm_vec_copy(vec3 a, vec3 dest) {
|
||||
dest[2] = a[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief copy first 3 members of [a] to [dest]
|
||||
*
|
||||
* @param[in] a source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_copy3(vec4 a, vec3 dest) {
|
||||
dest[0] = a[0];
|
||||
dest[1] = a[1];
|
||||
dest[2] = a[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief copy all members of [a] to [dest]
|
||||
*
|
||||
* @param[in] v source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_copy(vec4 v, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest, _mm_load_ps(v));
|
||||
#else
|
||||
dest[0] = v[0];
|
||||
dest[1] = v[1];
|
||||
dest[2] = v[2];
|
||||
dest[3] = v[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief vec3 dot product
|
||||
*
|
||||
@@ -127,20 +73,6 @@ glm_vec_dot(vec3 a, vec3 b) {
|
||||
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief vec4 dot product
|
||||
*
|
||||
* @param[in] a vector1
|
||||
* @param[in] b vector2
|
||||
*
|
||||
* @return dot product
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_dot(vec4 a, vec4 b) {
|
||||
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief vec3 cross product
|
||||
*
|
||||
@@ -187,36 +119,6 @@ glm_vec_norm(vec3 vec) {
|
||||
return sqrtf(glm_vec_norm2(vec));
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief norm * norm (magnitude) of vec
|
||||
*
|
||||
* we can use this func instead of calling norm * norm, because it would call
|
||||
* sqrtf fuction twice but with this func we can avoid func call, maybe this is
|
||||
* not good name for this func
|
||||
*
|
||||
* @param[in] v vec4
|
||||
*
|
||||
* @return norm * norm
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_norm2(vec4 v) {
|
||||
return v[0] * v[0] + v[1] * v[1] + v[2] * v[2] + v[3] * v[3];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief norm (magnitude) of vec4
|
||||
*
|
||||
* @param[in] vec vector
|
||||
*
|
||||
* @return norm
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_norm(vec4 vec) {
|
||||
return sqrtf(glm_vec4_norm2(vec));
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief add v2 vector to v1 vector store result in dest
|
||||
*
|
||||
@@ -232,28 +134,6 @@ glm_vec_add(vec3 v1, vec3 v2, vec3 dest) {
|
||||
dest[2] = v1[2] + v2[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief add v2 vector to v1 vector store result in dest
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_add(vec4 v1, vec4 v2, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_add_ps(_mm_load_ps(v1),
|
||||
_mm_load_ps(v2)));
|
||||
#else
|
||||
dest[0] = v1[0] + v2[0];
|
||||
dest[1] = v1[1] + v2[1];
|
||||
dest[2] = v1[2] + v2[2];
|
||||
dest[3] = v1[3] + v2[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief subtract v2 vector from v1 vector store result in dest
|
||||
*
|
||||
@@ -269,28 +149,6 @@ glm_vec_sub(vec3 v1, vec3 v2, vec3 dest) {
|
||||
dest[2] = v1[2] - v2[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief subtract v2 vector from v1 vector store result in dest
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_sub(vec4 v1, vec4 v2, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_sub_ps(_mm_load_ps(v1),
|
||||
_mm_load_ps(v2)));
|
||||
#else
|
||||
dest[0] = v1[0] - v2[0];
|
||||
dest[1] = v1[1] - v2[1];
|
||||
dest[2] = v1[2] - v2[2];
|
||||
dest[3] = v1[3] - v2[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief multiply/scale vec3 vector with scalar: result = v * s
|
||||
*
|
||||
@@ -306,28 +164,6 @@ glm_vec_scale(vec3 v, float s, vec3 dest) {
|
||||
dest[2] = v[2] * s;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief multiply/scale vec4 vector with scalar: result = v * s
|
||||
*
|
||||
* @param[in] v vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_scale(vec4 v, float s, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_mul_ps(_mm_load_ps(v),
|
||||
_mm_set1_ps(s)));
|
||||
#else
|
||||
dest[0] = v[0] * s;
|
||||
dest[1] = v[1] * s;
|
||||
dest[2] = v[2] * s;
|
||||
dest[3] = v[3] * s;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief make vec3 vector scale as specified: result = unit(v) * s
|
||||
*
|
||||
@@ -349,27 +185,6 @@ glm_vec_scale_as(vec3 v, float s, vec3 dest) {
|
||||
glm_vec_scale(v, s / norm, dest);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief make vec4 vector scale as specified: result = unit(v) * s
|
||||
*
|
||||
* @param[in] v vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_scale_as(vec4 v, float s, vec4 dest) {
|
||||
float norm;
|
||||
norm = glm_vec4_norm(v);
|
||||
|
||||
if (norm == 0) {
|
||||
glm_vec4_copy(v, dest);
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(v, s / norm, dest);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief flip sign of all vec3 members
|
||||
*
|
||||
@@ -383,25 +198,6 @@ glm_vec_flipsign(vec3 v) {
|
||||
v[2] = -v[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief flip sign of all vec4 members
|
||||
*
|
||||
* @param[in, out] v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_flipsign(vec4 v) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(v, _mm_xor_ps(_mm_load_ps(v),
|
||||
_mm_set1_ps(-0.0f)));
|
||||
#else
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
v[2] = -v[2];
|
||||
v[3] = -v[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec3 and store result in same vec
|
||||
*
|
||||
@@ -422,26 +218,6 @@ glm_vec_normalize(vec3 v) {
|
||||
glm_vec_scale(v, 1.0f / norm, v);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec4 and store result in same vec
|
||||
*
|
||||
* @param[in, out] v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_normalize(vec4 v) {
|
||||
float norm;
|
||||
|
||||
norm = glm_vec4_norm(v);
|
||||
|
||||
if (norm == 0.0f) {
|
||||
v[0] = v[1] = v[2] = v[3] = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(v, 1.0f / norm, v);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec3 to dest
|
||||
*
|
||||
@@ -463,27 +239,6 @@ glm_vec_normalize_to(vec3 vec, vec3 dest) {
|
||||
glm_vec_scale(vec, 1.0f / norm, dest);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec4 to dest
|
||||
*
|
||||
* @param[in] vec source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_normalize_to(vec4 vec, vec4 dest) {
|
||||
float norm;
|
||||
|
||||
norm = glm_vec4_norm(vec);
|
||||
|
||||
if (norm == 0.0f) {
|
||||
dest[0] = dest[1] = dest[2] = dest[3] = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(vec, 1.0f / norm, dest);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief angle betwen two vector
|
||||
*
|
||||
@@ -609,20 +364,4 @@ glm_vec_distance(vec3 v1, vec3 v2) {
|
||||
+ glm_pow2(v2[2] - v1[2]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief distance between two vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @return returns distance
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_distance(vec4 v1, vec4 v2) {
|
||||
return sqrtf(glm_pow2(v2[0] - v1[0])
|
||||
+ glm_pow2(v2[1] - v1[1])
|
||||
+ glm_pow2(v2[2] - v1[2])
|
||||
+ glm_pow2(v2[3] - v1[3]));
|
||||
}
|
||||
|
||||
#endif /* cglm_vec_h */
|
||||
#endif /* cglm_vec3_h */
|
||||
@@ -11,18 +11,6 @@
|
||||
|
||||
/*
|
||||
Functions:
|
||||
vec3:
|
||||
CGLM_INLINE void glm_vec_mulv(vec3 a, vec3 b, vec3 d);
|
||||
CGLM_INLINE void glm_vec_broadcast(float val, vec3 d);
|
||||
CGLM_INLINE bool glm_vec_eq(vec3 v, float val);
|
||||
CGLM_INLINE bool glm_vec_eq_eps(vec4 v, float val);
|
||||
CGLM_INLINE bool glm_vec_eq_all(vec3 v);
|
||||
CGLM_INLINE bool glm_vec_eqv(vec3 v1, vec3 v2);
|
||||
CGLM_INLINE bool glm_vec_eqv_eps(vec3 v1, vec3 v2);
|
||||
CGLM_INLINE float glm_vec_max(vec3 v);
|
||||
CGLM_INLINE float glm_vec_min(vec3 v);
|
||||
|
||||
vec4:
|
||||
CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d);
|
||||
CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d);
|
||||
CGLM_INLINE bool glm_vec4_eq(vec4 v, float val);
|
||||
@@ -34,30 +22,14 @@
|
||||
CGLM_INLINE float glm_vec4_min(vec4 v);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec_ext_h
|
||||
#define cglm_vec_ext_h
|
||||
#ifndef cglm_vec4_ext_h
|
||||
#define cglm_vec4_ext_h
|
||||
|
||||
#include "cglm-common.h"
|
||||
#include "arch/simd/cglm-intrin.h"
|
||||
#include "common.h"
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
|
||||
/*!
|
||||
* @brief multiplies individual items, just for convenient like SIMD
|
||||
*
|
||||
* @param a vec1
|
||||
* @param b vec2
|
||||
* @param d vec3 = (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2])
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_mulv(vec3 a, vec3 b, vec3 d) {
|
||||
d[0] = a[0] * b[0];
|
||||
d[1] = a[1] * b[1];
|
||||
d[2] = a[2] * b[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief multiplies individual items, just for convenient like SIMD
|
||||
*
|
||||
@@ -78,18 +50,6 @@ glm_vec4_mulv(vec4 a, vec4 b, vec4 d) {
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief fill a vector with specified value
|
||||
*
|
||||
* @param val value
|
||||
* @param d dest
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_broadcast(float val, vec3 d) {
|
||||
d[0] = d[1] = d[2] = val;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief fill a vector with specified value
|
||||
*
|
||||
@@ -106,71 +66,6 @@ glm_vec4_broadcast(float val, vec4 d) {
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to value (without epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
* @param val value
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq(vec3 v, float val) {
|
||||
return v[0] == val && v[0] == v[1] && v[0] == v[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to value (with epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
* @param val value
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq_eps(vec4 v, float val) {
|
||||
return fabsf(v[0] - val) <= FLT_EPSILON
|
||||
&& fabsf(v[1] - val) <= FLT_EPSILON
|
||||
&& fabsf(v[2] - val) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vectors members are equal (without epsilon)
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eq_all(vec3 v) {
|
||||
return v[0] == v[1] && v[0] == v[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to another (without epsilon)
|
||||
*
|
||||
* @param v1 vector
|
||||
* @param v2 vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eqv(vec3 v1, vec3 v2) {
|
||||
return v1[0] == v2[0]
|
||||
&& v1[1] == v2[1]
|
||||
&& v1[2] == v2[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to another (with epsilon)
|
||||
*
|
||||
* @param v1 vector
|
||||
* @param v2 vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
bool
|
||||
glm_vec_eqv_eps(vec3 v1, vec3 v2) {
|
||||
return fabsf(v1[0] - v2[0]) <= FLT_EPSILON
|
||||
&& fabsf(v1[1] - v2[1]) <= FLT_EPSILON
|
||||
&& fabsf(v1[2] - v2[2]) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief check if vector is equal to value (without epsilon)
|
||||
*
|
||||
@@ -244,44 +139,6 @@ glm_vec4_eqv_eps(vec3 v1, vec3 v2) {
|
||||
&& fabsf(v1[3] - v2[3]) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief max value of vector
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec_max(vec3 v) {
|
||||
float max;
|
||||
|
||||
max = v[0];
|
||||
if (v[1] > max)
|
||||
max = v[1];
|
||||
if (v[2] > max)
|
||||
max = v[2];
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief min value of vector
|
||||
*
|
||||
* @param v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec_min(vec3 v) {
|
||||
float min;
|
||||
|
||||
min = v[0];
|
||||
if (v[1] < min)
|
||||
min = v[1];
|
||||
if (v[2] < min)
|
||||
min = v[2];
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief max value of vector
|
||||
*
|
||||
@@ -316,4 +173,5 @@ glm_vec4_min(vec4 v) {
|
||||
return min;
|
||||
}
|
||||
|
||||
#endif /* cglm_vec_ext_h */
|
||||
#endif /* cglm_vec4_ext_h */
|
||||
|
||||
285
include/cglm/vec4.h
Normal file
285
include/cglm/vec4.h
Normal file
@@ -0,0 +1,285 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vec3 functions dont have suffix e.g glm_vec_dot (not glm_vec3_dot)
|
||||
* all functions without suffix are vec3 functions
|
||||
*/
|
||||
|
||||
/*
|
||||
Macros:
|
||||
glm_vec4_dup3(v, dest)
|
||||
glm_vec4_dup(v, dest)
|
||||
|
||||
Functions:
|
||||
CGLM_INLINE void glm_vec4_copy3(vec4 a, vec3 dest);
|
||||
CGLM_INLINE void glm_vec4_copy(vec4 v, vec4 dest);
|
||||
CGLM_INLINE float glm_vec4_dot(vec4 a, vec4 b);
|
||||
CGLM_INLINE float glm_vec4_norm2(vec4 v);
|
||||
CGLM_INLINE float glm_vec4_norm(vec4 vec);
|
||||
CGLM_INLINE void glm_vec4_add(vec4 v1, vec4 v2, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_sub(vec4 v1, vec4 v2, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_scale(vec4 v, float s, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_scale_as(vec4 v, float s, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_flipsign(vec4 v);
|
||||
CGLM_INLINE void glm_vec4_normalize(vec4 v);
|
||||
CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest);
|
||||
CGLM_INLINE float glm_vec4_distance(vec4 v1, vec4 v2);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec4_h
|
||||
#define cglm_vec4_h
|
||||
|
||||
#include "common.h"
|
||||
#include "vec4-ext.h"
|
||||
#include "util.h"
|
||||
|
||||
/* DEPRECATED! use _copy, _ucopy versions */
|
||||
#define glm_vec4_dup3(v, dest) glm_vec4_copy3(v, dest)
|
||||
#define glm_vec4_dup(v, dest) glm_vec4_copy(v, dest)
|
||||
|
||||
/*!
|
||||
* @brief copy first 3 members of [a] to [dest]
|
||||
*
|
||||
* @param[in] a source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_copy3(vec4 a, vec3 dest) {
|
||||
dest[0] = a[0];
|
||||
dest[1] = a[1];
|
||||
dest[2] = a[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief copy all members of [a] to [dest]
|
||||
*
|
||||
* @param[in] v source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_copy(vec4 v, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest, _mm_load_ps(v));
|
||||
#else
|
||||
dest[0] = v[0];
|
||||
dest[1] = v[1];
|
||||
dest[2] = v[2];
|
||||
dest[3] = v[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief vec4 dot product
|
||||
*
|
||||
* @param[in] a vector1
|
||||
* @param[in] b vector2
|
||||
*
|
||||
* @return dot product
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_dot(vec4 a, vec4 b) {
|
||||
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief norm * norm (magnitude) of vec
|
||||
*
|
||||
* we can use this func instead of calling norm * norm, because it would call
|
||||
* sqrtf fuction twice but with this func we can avoid func call, maybe this is
|
||||
* not good name for this func
|
||||
*
|
||||
* @param[in] v vec4
|
||||
*
|
||||
* @return norm * norm
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_norm2(vec4 v) {
|
||||
return v[0] * v[0] + v[1] * v[1] + v[2] * v[2] + v[3] * v[3];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief norm (magnitude) of vec4
|
||||
*
|
||||
* @param[in] vec vector
|
||||
*
|
||||
* @return norm
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_norm(vec4 vec) {
|
||||
return sqrtf(glm_vec4_norm2(vec));
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief add v2 vector to v1 vector store result in dest
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_add(vec4 v1, vec4 v2, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_add_ps(_mm_load_ps(v1),
|
||||
_mm_load_ps(v2)));
|
||||
#else
|
||||
dest[0] = v1[0] + v2[0];
|
||||
dest[1] = v1[1] + v2[1];
|
||||
dest[2] = v1[2] + v2[2];
|
||||
dest[3] = v1[3] + v2[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief subtract v2 vector from v1 vector store result in dest
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_sub(vec4 v1, vec4 v2, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_sub_ps(_mm_load_ps(v1),
|
||||
_mm_load_ps(v2)));
|
||||
#else
|
||||
dest[0] = v1[0] - v2[0];
|
||||
dest[1] = v1[1] - v2[1];
|
||||
dest[2] = v1[2] - v2[2];
|
||||
dest[3] = v1[3] - v2[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief multiply/scale vec4 vector with scalar: result = v * s
|
||||
*
|
||||
* @param[in] v vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_scale(vec4 v, float s, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest,
|
||||
_mm_mul_ps(_mm_load_ps(v),
|
||||
_mm_set1_ps(s)));
|
||||
#else
|
||||
dest[0] = v[0] * s;
|
||||
dest[1] = v[1] * s;
|
||||
dest[2] = v[2] * s;
|
||||
dest[3] = v[3] * s;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief make vec4 vector scale as specified: result = unit(v) * s
|
||||
*
|
||||
* @param[in] v vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest destination vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_scale_as(vec4 v, float s, vec4 dest) {
|
||||
float norm;
|
||||
norm = glm_vec4_norm(v);
|
||||
|
||||
if (norm == 0) {
|
||||
glm_vec4_copy(v, dest);
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(v, s / norm, dest);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief flip sign of all vec4 members
|
||||
*
|
||||
* @param[in, out] v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_flipsign(vec4 v) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(v, _mm_xor_ps(_mm_load_ps(v),
|
||||
_mm_set1_ps(-0.0f)));
|
||||
#else
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
v[2] = -v[2];
|
||||
v[3] = -v[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec4 and store result in same vec
|
||||
*
|
||||
* @param[in, out] v vector
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_normalize(vec4 v) {
|
||||
float norm;
|
||||
|
||||
norm = glm_vec4_norm(v);
|
||||
|
||||
if (norm == 0.0f) {
|
||||
v[0] = v[1] = v[2] = v[3] = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(v, 1.0f / norm, v);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief normalize vec4 to dest
|
||||
*
|
||||
* @param[in] vec source
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_normalize_to(vec4 vec, vec4 dest) {
|
||||
float norm;
|
||||
|
||||
norm = glm_vec4_norm(vec);
|
||||
|
||||
if (norm == 0.0f) {
|
||||
dest[0] = dest[1] = dest[2] = dest[3] = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
glm_vec4_scale(vec, 1.0f / norm, dest);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief distance between two vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @return returns distance
|
||||
*/
|
||||
CGLM_INLINE
|
||||
float
|
||||
glm_vec4_distance(vec4 v1, vec4 v2) {
|
||||
return sqrtf(glm_pow2(v2[0] - v1[0])
|
||||
+ glm_pow2(v2[1] - v1[1])
|
||||
+ glm_pow2(v2[2] - v1[2])
|
||||
+ glm_pow2(v2[3] - v1[3]));
|
||||
}
|
||||
|
||||
#endif /* cglm_vec4_h */
|
||||
92
makefile.am
92
makefile.am
@@ -33,50 +33,62 @@ test_tests_LDFLAGS = $(checkLDFLAGS)
|
||||
test_tests_CFLAGS = $(checkCFLAGS)
|
||||
|
||||
cglmdir=$(includedir)/cglm
|
||||
cglm_HEADERS = include/cglm-version.h \
|
||||
include/cglm.h \
|
||||
include/cglm-call.h \
|
||||
include/cglm-cam.h \
|
||||
include/cglm-io.h \
|
||||
include/cglm-mat3.h \
|
||||
include/cglm-types.h \
|
||||
include/cglm-common.h \
|
||||
include/cglm-affine.h \
|
||||
include/cglm-vec.h \
|
||||
include/cglm-euler.h \
|
||||
include/cglm-util.h \
|
||||
include/cglm-quat.h \
|
||||
include/cglm-mat.h \
|
||||
include/cglm-affine-mat.h
|
||||
|
||||
cglm_arch_simddir=$(includedir)/cglm/arch/simd/
|
||||
cglm_arch_simd_HEADERS = include/arch/simd/cglm-mat-simd-avx.h \
|
||||
include/arch/simd/cglm-affine-mat-avx.h \
|
||||
include/arch/simd/cglm-quat-simd.h \
|
||||
include/arch/simd/cglm-affine-mat-sse2.h \
|
||||
include/arch/simd/cglm-mat3-simd-sse2.h \
|
||||
include/arch/simd/cglm-mat-simd-sse2.h \
|
||||
include/arch/simd/cglm-intrin.h
|
||||
cglm_HEADERS = include/cglm/version.h \
|
||||
include/cglm/cglm.h \
|
||||
include/cglm/call.h \
|
||||
include/cglm/cam.h \
|
||||
include/cglm/io.h \
|
||||
include/cglm/mat4.h \
|
||||
include/cglm/mat3.h \
|
||||
include/cglm/types.h \
|
||||
include/cglm/common.h \
|
||||
include/cglm/affine.h \
|
||||
include/cglm/vec3.h \
|
||||
include/cglm/vec3-ext.h \
|
||||
include/cglm/vec4.h \
|
||||
include/cglm/vec4-ext.h \
|
||||
include/cglm/euler.h \
|
||||
include/cglm/util.h \
|
||||
include/cglm/quat.h \
|
||||
include/cglm/affine-mat.h
|
||||
|
||||
cglm_calldir=$(includedir)/cglm/call
|
||||
cglm_call_HEADERS = include/call/cglmc-euler.h \
|
||||
include/call/cglmc-quat.h \
|
||||
include/call/cglmc-cam.h \
|
||||
include/call/cglmc-io.h \
|
||||
include/call/cglmc-affine.h \
|
||||
include/call/cglmc-vec.h \
|
||||
include/call/cglmc-mat3.h \
|
||||
include/call/cglmc-mat.h
|
||||
cglm_call_HEADERS = include/cglm/call/mat4.h \
|
||||
include/cglm/call/mat3.h \
|
||||
include/cglm/call/vec3.h \
|
||||
include/cglm/call/vec4.h \
|
||||
include/cglm/call/affine.h \
|
||||
include/cglm/call/io.h \
|
||||
include/cglm/call/cam.h \
|
||||
include/cglm/call/quat.h \
|
||||
include/cglm/call/euler.h
|
||||
|
||||
cglm_simddir=$(includedir)/cglm/simd
|
||||
cglm_simd_HEADERS = include/cglm/simd/intrin.h
|
||||
|
||||
cglm_simd_sse2dir=$(includedir)/cglm/simd/sse2
|
||||
cglm_simd_sse2_HEADERS = include/cglm/simd/sse2/affine.h \
|
||||
include/cglm/simd/sse2/mat4.h \
|
||||
include/cglm/simd/sse2/mat3.h \
|
||||
include/cglm/simd/sse2/quat.h
|
||||
|
||||
cglm_simd_avxdir=$(includedir)/cglm/simd/avx
|
||||
cglm_simd_avx_HEADERS = include/cglm/simd/avx/mat4.h \
|
||||
include/cglm/simd/avx/affine.h
|
||||
|
||||
cglm_simd_neondir=$(includedir)/cglm/simd/neon
|
||||
cglm_simd_neon_HEADERS = include/cglm/simd/neon/mat4.h
|
||||
|
||||
libcglm_la_SOURCES=\
|
||||
src/cglm-euler.c \
|
||||
src/clgm-affine.c \
|
||||
src/cglm-io.c \
|
||||
src/cglm-quat.c \
|
||||
src/cglm-cam.c \
|
||||
src/cglm-vec.c \
|
||||
src/cglm-mat3.c \
|
||||
src/cglm-mat.c
|
||||
src/euler.c \
|
||||
src/affine.c \
|
||||
src/io.c \
|
||||
src/quat.c \
|
||||
src/cam.c \
|
||||
src/vec3.c \
|
||||
src/vec4.c \
|
||||
src/mat3.c \
|
||||
src/mat4.c
|
||||
|
||||
test_tests_SOURCES=\
|
||||
test/src/test_common.c \
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -5,8 +5,8 @@
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm.h"
|
||||
#include "../include/cglm-call.h"
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
@@ -14,30 +14,12 @@ glmc_vec_copy(vec3 a, vec3 dest) {
|
||||
glm_vec_copy(a, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy3(vec4 a, vec3 dest) {
|
||||
glm_vec4_copy3(a, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy(vec4 v, vec4 dest) {
|
||||
glm_vec4_copy(v, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_dot(vec3 a, vec3 b) {
|
||||
return glm_vec_dot(a, b);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_dot(vec4 a, vec4 b) {
|
||||
return glm_vec4_dot(a, b);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_cross(vec3 a, vec3 b, vec3 d) {
|
||||
@@ -50,108 +32,54 @@ glmc_vec_norm(vec3 vec) {
|
||||
return glm_vec_norm(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm(vec4 vec) {
|
||||
return glm_vec4_norm(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_normalize_to(vec3 vec, vec3 dest) {
|
||||
glm_vec_normalize_to(vec, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize_to(vec4 vec, vec4 dest) {
|
||||
glm_vec4_normalize_to(vec, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_normalize(vec3 v) {
|
||||
glm_vec_normalize(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize(vec4 v) {
|
||||
glm_vec4_normalize(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_norm2(vec3 vec) {
|
||||
return glm_vec_norm2(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm2(vec4 vec) {
|
||||
return glm_vec4_norm2(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_add(vec3 v1, vec3 v2, vec3 dest) {
|
||||
glm_vec_add(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest) {
|
||||
glm_vec4_add(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_sub(vec3 v1, vec3 v2, vec3 dest) {
|
||||
glm_vec_sub(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest) {
|
||||
glm_vec4_sub(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_scale(vec3 v, float s, vec3 dest) {
|
||||
glm_vec_scale(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale(vec4 v, float s, vec4 dest) {
|
||||
glm_vec4_scale(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_scale_as(vec3 v, float s, vec3 dest) {
|
||||
glm_vec_scale_as(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale_as(vec3 v, float s, vec3 dest) {
|
||||
glm_vec4_scale_as(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_flipsign(vec3 v) {
|
||||
glm_vec_flipsign(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v) {
|
||||
glm_vec4_flipsign(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_angle(vec3 v1, vec3 v2) {
|
||||
@@ -187,9 +115,3 @@ float
|
||||
glmc_vec_distance(vec3 v1, vec3 v2) {
|
||||
return glm_vec_distance(v1, v2);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_distance(vec4 v1, vec4 v2) {
|
||||
return glm_vec4_distance(v1, v2);
|
||||
}
|
||||
87
src/vec4.c
Normal file
87
src/vec4.c
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
#include "../include/cglm/cglm.h"
|
||||
#include "../include/cglm/call.h"
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy3(vec4 a, vec3 dest) {
|
||||
glm_vec4_copy3(a, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_copy(vec4 v, vec4 dest) {
|
||||
glm_vec4_copy(v, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_dot(vec4 a, vec4 b) {
|
||||
return glm_vec4_dot(a, b);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm(vec4 vec) {
|
||||
return glm_vec4_norm(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize_to(vec4 vec, vec4 dest) {
|
||||
glm_vec4_normalize_to(vec, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_normalize(vec4 v) {
|
||||
glm_vec4_normalize(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_norm2(vec4 vec) {
|
||||
return glm_vec4_norm2(vec);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest) {
|
||||
glm_vec4_add(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest) {
|
||||
glm_vec4_sub(v1, v2, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale(vec4 v, float s, vec4 dest) {
|
||||
glm_vec4_scale(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_scale_as(vec3 v, float s, vec3 dest) {
|
||||
glm_vec4_scale_as(v, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v) {
|
||||
glm_vec4_flipsign(v);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_distance(vec4 v1, vec4 v2) {
|
||||
return glm_vec4_distance(v1, v2);
|
||||
}
|
||||
@@ -19,8 +19,8 @@
|
||||
#include <float.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <cglm.h>
|
||||
#include <cglm-call.h>
|
||||
#include <cglm/cglm.h>
|
||||
#include <cglm/call.h>
|
||||
|
||||
void
|
||||
test_rand_mat4(mat4 dest);
|
||||
|
||||
@@ -18,6 +18,56 @@
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\affine.c" />
|
||||
<ClCompile Include="..\src\cam.c" />
|
||||
<ClCompile Include="..\src\dllmain.c" />
|
||||
<ClCompile Include="..\src\euler.c" />
|
||||
<ClCompile Include="..\src\io.c" />
|
||||
<ClCompile Include="..\src\mat3.c" />
|
||||
<ClCompile Include="..\src\mat4.c" />
|
||||
<ClCompile Include="..\src\quat.c" />
|
||||
<ClCompile Include="..\src\vec3.c" />
|
||||
<ClCompile Include="..\src\vec4.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\cglm\affine-mat.h" />
|
||||
<ClInclude Include="..\include\cglm\affine.h" />
|
||||
<ClInclude Include="..\include\cglm\call.h" />
|
||||
<ClInclude Include="..\include\cglm\call\affine.h" />
|
||||
<ClInclude Include="..\include\cglm\call\cam.h" />
|
||||
<ClInclude Include="..\include\cglm\call\euler.h" />
|
||||
<ClInclude Include="..\include\cglm\call\io.h" />
|
||||
<ClInclude Include="..\include\cglm\call\mat3.h" />
|
||||
<ClInclude Include="..\include\cglm\call\mat4.h" />
|
||||
<ClInclude Include="..\include\cglm\call\quat.h" />
|
||||
<ClInclude Include="..\include\cglm\call\vec3.h" />
|
||||
<ClInclude Include="..\include\cglm\call\vec4.h" />
|
||||
<ClInclude Include="..\include\cglm\cam.h" />
|
||||
<ClInclude Include="..\include\cglm\cglm.h" />
|
||||
<ClInclude Include="..\include\cglm\common.h" />
|
||||
<ClInclude Include="..\include\cglm\euler.h" />
|
||||
<ClInclude Include="..\include\cglm\io.h" />
|
||||
<ClInclude Include="..\include\cglm\mat3.h" />
|
||||
<ClInclude Include="..\include\cglm\mat4.h" />
|
||||
<ClInclude Include="..\include\cglm\quat.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\avx\affine.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\avx\mat4.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\intrin.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\neon\mat4.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\affine.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\mat3.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\mat4.h" />
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\quat.h" />
|
||||
<ClInclude Include="..\include\cglm\types.h" />
|
||||
<ClInclude Include="..\include\cglm\util.h" />
|
||||
<ClInclude Include="..\include\cglm\vec3-ext.h" />
|
||||
<ClInclude Include="..\include\cglm\vec3.h" />
|
||||
<ClInclude Include="..\include\cglm\vec4-ext.h" />
|
||||
<ClInclude Include="..\include\cglm\vec4.h" />
|
||||
<ClInclude Include="..\include\cglm\version.h" />
|
||||
<ClInclude Include="..\src\config.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}</ProjectGuid>
|
||||
@@ -162,51 +212,6 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-affine-mat-avx.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-affine-mat-sse2.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-intrin.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat-simd-avx.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat-simd-sse2.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat3-simd-sse2.h" />
|
||||
<ClInclude Include="..\include\arch\simd\cglm-quat-simd.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-affine.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-cam.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-euler.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-io.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-mat.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-mat3.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-quat.h" />
|
||||
<ClInclude Include="..\include\call\cglmc-vec.h" />
|
||||
<ClInclude Include="..\include\cglm-affine-mat.h" />
|
||||
<ClInclude Include="..\include\cglm-affine.h" />
|
||||
<ClInclude Include="..\include\cglm-call.h" />
|
||||
<ClInclude Include="..\include\cglm-cam.h" />
|
||||
<ClInclude Include="..\include\cglm-common.h" />
|
||||
<ClInclude Include="..\include\cglm-euler.h" />
|
||||
<ClInclude Include="..\include\cglm-io.h" />
|
||||
<ClInclude Include="..\include\cglm-mat.h" />
|
||||
<ClInclude Include="..\include\cglm-mat3.h" />
|
||||
<ClInclude Include="..\include\cglm-quat.h" />
|
||||
<ClInclude Include="..\include\cglm-types.h" />
|
||||
<ClInclude Include="..\include\cglm-util.h" />
|
||||
<ClInclude Include="..\include\cglm-vec-ext.h" />
|
||||
<ClInclude Include="..\include\cglm-vec.h" />
|
||||
<ClInclude Include="..\include\cglm-version.h" />
|
||||
<ClInclude Include="..\include\cglm.h" />
|
||||
<ClInclude Include="..\src\config.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\cglm-cam.c" />
|
||||
<ClCompile Include="..\src\cglm-euler.c" />
|
||||
<ClCompile Include="..\src\cglm-io.c" />
|
||||
<ClCompile Include="..\src\cglm-mat.c" />
|
||||
<ClCompile Include="..\src\cglm-mat3.c" />
|
||||
<ClCompile Include="..\src\cglm-quat.c" />
|
||||
<ClCompile Include="..\src\cglm-vec.c" />
|
||||
<ClCompile Include="..\src\clgm-affine.c" />
|
||||
<ClCompile Include="..\src\dllmain.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
||||
@@ -16,141 +16,165 @@
|
||||
<Filter Include="include">
|
||||
<UniqueIdentifier>{f46634e5-c098-41a0-afb3-45afb6a53593}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\call">
|
||||
<UniqueIdentifier>{496b3b53-1258-4efa-87b2-4280ea82f87e}</UniqueIdentifier>
|
||||
<Filter Include="include\cglm">
|
||||
<UniqueIdentifier>{b982cbd3-03d9-4557-bed8-8224e4d95945}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\arch">
|
||||
<UniqueIdentifier>{28919415-29bd-4edd-8ab1-1ec9a16e46f0}</UniqueIdentifier>
|
||||
<Filter Include="include\cglm\call">
|
||||
<UniqueIdentifier>{6a2a4ebb-ac68-4ed6-a4a1-f6d2243814e9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\arch\simd">
|
||||
<UniqueIdentifier>{792cb1a9-bdc8-4f00-bfde-067750b0ab41}</UniqueIdentifier>
|
||||
<Filter Include="include\cglm\simd">
|
||||
<UniqueIdentifier>{4bcb64d3-e522-48f7-85ef-3ddfacf50874}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\cglm\simd\sse2">
|
||||
<UniqueIdentifier>{ccf6244c-614c-4016-a5d9-8a78ffc7765a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\cglm\simd\avx">
|
||||
<UniqueIdentifier>{8607b04c-6eb6-49af-8ac2-e534ba78bf76}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="include\cglm\simd\neon">
|
||||
<UniqueIdentifier>{fb97f276-fe14-47ba-8a9f-01032f065a19}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\cglm.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-affine.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-affine-mat.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-call.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-cam.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-common.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-euler.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-io.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-mat.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-mat3.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-quat.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-types.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-util.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-vec.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-vec-ext.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-affine.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-cam.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-euler.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-io.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-mat.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-mat3.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-quat.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\call\cglmc-vec.h">
|
||||
<Filter>include\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-affine-mat-avx.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-affine-mat-sse2.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-intrin.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat3-simd-sse2.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat-simd-avx.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-mat-simd-sse2.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\arch\simd\cglm-quat-simd.h">
|
||||
<Filter>include\arch\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\config.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm-version.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\cglm-cam.c">
|
||||
<ClCompile Include="..\src\affine.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-euler.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-io.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-mat.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-mat3.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-quat.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cglm-vec.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\clgm-affine.c">
|
||||
<ClCompile Include="..\src\cam.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\dllmain.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\euler.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\io.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\mat3.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\mat4.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\quat.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\vec3.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\vec4.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\config.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\affine.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\cam.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\euler.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\io.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\mat3.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\mat4.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\quat.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\vec3.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call\vec4.h">
|
||||
<Filter>include\cglm\call</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\avx\affine.h">
|
||||
<Filter>include\cglm\simd\avx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\avx\mat4.h">
|
||||
<Filter>include\cglm\simd\avx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\neon\mat4.h">
|
||||
<Filter>include\cglm\simd\neon</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\affine.h">
|
||||
<Filter>include\cglm\simd\sse2</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\mat3.h">
|
||||
<Filter>include\cglm\simd\sse2</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\mat4.h">
|
||||
<Filter>include\cglm\simd\sse2</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\sse2\quat.h">
|
||||
<Filter>include\cglm\simd\sse2</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\simd\intrin.h">
|
||||
<Filter>include\cglm\simd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\affine.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\affine-mat.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\call.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\cam.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\cglm.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\common.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\euler.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\io.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\mat3.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\mat4.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\quat.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\types.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\util.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\vec3.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\vec3-ext.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\vec4.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\vec4-ext.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\cglm\version.h">
|
||||
<Filter>include\cglm</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user