From db41d43345ea73cf7c1bbb29448e52ffb822e3e0 Mon Sep 17 00:00:00 2001 From: vimene Date: Tue, 13 Jan 2026 02:04:52 +0100 Subject: added textures for the hardware renderer - removed "using" directive in .hpp - reverse order of arguments for quaternion rotation, i.e. q.rot(v) instead of v.rot(q), where q is a quaterinon and v a vector - pass the inverse of the view matrix to render_and_present_frame, to allow light calculation in shaders (we used to just pass the matrix of the quaternion of the transformation, i.e. discard scaling and translations) - added another mesh and texture (viking_room) for testing purposes - added transparent background option - added Quaternion::look_towards(), which is the equivalent of Matrix4::look_at() but only for rotations - various improvement to .obj parsing - load texture coordinates from .obj file - merged duplicate vertices in Mesh::linearize_indices() --- src/math/utils.hpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/math/utils.hpp (limited to 'src/math/utils.hpp') diff --git a/src/math/utils.hpp b/src/math/utils.hpp new file mode 100644 index 0000000..5ec5959 --- /dev/null +++ b/src/math/utils.hpp @@ -0,0 +1,24 @@ +#ifndef MATH_UTILS_HPP +#define MATH_UTILS_HPP + +#include +#include +#include "math/vector.hpp" + +namespace engine::math::utils { + +template struct Vector; +template<> struct Vector<2> { using type = engine::math::Vector2; }; +template<> struct Vector<3> { using type = engine::math::Vector3; }; +template<> struct Vector<4> { using type = engine::math::Vector4; }; + +template +constexpr Vector::type array_to_vec(const std::array& coords) { + return [&](std::index_sequence) constexpr -> Vector::type { + return { coords[i] ... }; + }(std::make_index_sequence()); +} + +} + +#endif // MATH_UTILS_HPP -- cgit v1.2.3