Start math library by preprocessor templating
This commit is contained in:
parent
6251e105c8
commit
d4117ea729
@ -3,10 +3,92 @@
|
|||||||
|
|
||||||
#include <Dengine/Common.h>
|
#include <Dengine/Common.h>
|
||||||
|
|
||||||
inline f32 squared(const f32 a)
|
#define squared(x) (x * x)
|
||||||
|
#define abs(x) ((x) > 0 ? (x) : -(x))
|
||||||
|
|
||||||
|
union v2
|
||||||
{
|
{
|
||||||
f32 result = a * a;
|
struct
|
||||||
|
{
|
||||||
|
f32 x, y;
|
||||||
|
};
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
f32 w, h;
|
||||||
|
};
|
||||||
|
f32 data[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
union v3
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
f32 x, y, z;
|
||||||
|
};
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
f32 r, g, b;
|
||||||
|
};
|
||||||
|
f32 data[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
union v4
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
f32 x, y, z, w;
|
||||||
|
};
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
f32 r, g, b, a;
|
||||||
|
};
|
||||||
|
f32 data[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
INTERNAL inline v2 V2(const f32 x, const f32 y)
|
||||||
|
{
|
||||||
|
v2 result = v2{x, y};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
INTERNAL inline v3 V3(const f32 x, const f32 y, const f32 z)
|
||||||
|
{
|
||||||
|
v3 result = v3{x, y, z};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
INTERNAL inline v4 V4(const f32 x, const f32 y, const f32 z, const f32 w)
|
||||||
|
{
|
||||||
|
v4 result = v4{x, y, z, w};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DEFINE_VECTOR_MATH(num) \
|
||||||
|
INTERNAL inline v##num v##num##_add(const v##num a, const v##num b) \
|
||||||
|
{ \
|
||||||
|
v##num result; \
|
||||||
|
for (i32 i = 0; i < ##num; i++) { result.data[i] = a.data[i] + b.data[i]; } \
|
||||||
|
return result; \
|
||||||
|
} \
|
||||||
|
INTERNAL inline v##num v##num##_sub(const v##num a, const v##num b) \
|
||||||
|
{ \
|
||||||
|
v##num result; \
|
||||||
|
for (i32 i = 0; i < ##num; i++) { result.data[i] = a.data[i] - b.data[i]; } \
|
||||||
|
return result; \
|
||||||
|
} \
|
||||||
|
INTERNAL inline v##num v##num##_scale(const v##num a, const f32 b) \
|
||||||
|
{ \
|
||||||
|
v##num result; \
|
||||||
|
for (i32 i = 0; i < ##num; i++) { result.data[i] = a.data[i] * b; } \
|
||||||
|
return result; \
|
||||||
|
} \
|
||||||
|
INTERNAL inline v##num v##num##_mul(const v##num a, const v##num b) \
|
||||||
|
{ \
|
||||||
|
v##num result; \
|
||||||
|
for (i32 i = 0; i < ##num; i++) { result.data[i] = a.data[i] * b.data[i]; } \
|
||||||
|
return result; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
DEFINE_VECTOR_MATH(2);
|
||||||
|
DEFINE_VECTOR_MATH(3);
|
||||||
|
DEFINE_VECTOR_MATH(4);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -29,7 +29,7 @@ struct Texture
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Generates texture from image data
|
// Generates texture from image data
|
||||||
Texture genTexture(const GLuint width, const GLuint height, const GLint bytesPerPixel,
|
Texture genTexture(const GLuint width, const GLuint height,
|
||||||
const u8 *const image);
|
const GLint bytesPerPixel, const u8 *const image);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user