RavEngine
Loading...
Searching...
No Matches
Common3D.hpp
1#pragma once
2#include "mathtypes.hpp"
3#include <concepts>
4
5namespace RavEngine{
6typedef uint32_t color_t;
7
8struct Vertex2D{
9 float position[2];
10};
11
12struct Vertex
13{
14 float position[3];
15};
16
17struct UV
18{
19 float uv[2];
20};
21
23 glm::vec3 position{ 0 };
24 glm::vec3 normal{ 0 };
25 glm::vec3 tangent{ 0 };
26 glm::vec3 bitangent{ 0 };
27 glm::vec2 uv{ 0 };
28};
29
30struct VertexUV{
31 float position[3];
32 float uv[2];
33};
34
36 float position[3];
37 color_t color;
38};
39
41 float position[3];
42 float uv[2];
43 color_t color;
44};
45
47 vector3 position = vector3(0,0,0);
48 quaternion rotation = quaternion(1.0,0.0,0.0,0.0);
49 vector3 scale = vector3(1,1,1);
50 inline operator matrix4() const{
51 return glm::translate(matrix4(1), (vector3)position) * glm::toMat4((quaternion)rotation) * glm::scale(matrix4(1), (vector3)scale);
52 }
53};
54
55struct ColorRGBA{
56 float R;
57 float G;
58 float B;
59 float A;
60};
61
62struct ColorRGB {
63 float R = 0, G = 0, B = 0;
64};
65
72template<typename T, typename U>
73constexpr static inline void copyMat4(const T* input, U* output, int size = 16) {
74 for (int i = 0; i < size; i++) {
75 output[i] = static_cast<U>(input[i]);
76 }
77}
78
84template<std::integral T>
85inline constexpr T closest_multiple_of(T x, T B)
86{
87 return ((x - 1) | (B - 1)) + 1;
88}
89
95template<std::floating_point T>
96inline constexpr T closest_multiple_of(T numToRound, T multiple)
97{
98 return ((numToRound + multiple - 1) / multiple) * multiple;
99}
100
106template<typename T>
107inline T closest_power_of(T x, T p) {
108 return pow(p, ceil(log(x) / log(p)));
109}
110
111}
112
117inline decimalType deg_to_rad(decimalType val){
118 return glm::radians(val);
119}
120
128inline auto Slerp(const quaternion& x, const quaternion& y, decimalType a){
129 return glm::slerp(x,y,a);
130}
131
132template<typename S>
133inline auto Slerp(const quaternion& x, const quaternion& y, decimalType a, S k){
134 return glm::slerp(x,y,a,k);
135}
136
137struct Range {
138 uint32_t start = 0, count = 0;
139};
GLM_FUNC_DECL mat< 4, 4, T, Q > translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Definition matrix_transform.inl:10
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Definition matrix_transform.inl:78
GLM_FUNC_DECL qua< T, Q > slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Definition quaternion_common.inl:41
uint32 uint32_t
Definition fwd.hpp:131
GLM_FUNC_DECL mat< 4, 4, T, Q > toMat4(qua< T, Q > const &x)
Definition quaternion.hpp:120
Definition Animation.hpp:6
T closest_power_of(T x, T p)
Definition Common3D.hpp:107
constexpr T closest_multiple_of(T x, T B)
Definition Common3D.hpp:85
Definition Common3D.hpp:137
Definition Common3D.hpp:55
Definition Common3D.hpp:62
Definition Common3D.hpp:46
Definition Common3D.hpp:18
Definition Common3D.hpp:8
Definition Common3D.hpp:40
Definition Common3D.hpp:35
Definition Common3D.hpp:22
Definition Common3D.hpp:30
Definition Common3D.hpp:13
Definition qualifier.hpp:36
Definition type_quat.hpp:20
Definition qualifier.hpp:35