aboutsummaryrefslogtreecommitdiff
path: root/src/math
Commit message (Collapse)AuthorAgeFilesLines
* rewrote entirely the triangle clipping algorithmvimene2026-01-152-3/+218
| | | | | | | | | | | | | | | | | | | There is still a lot of work needed to refactor it properly. - use the Sutherland–Hodgman algorithm, with some minor changes - made clipping more general, allowing clipping of any coordinate, before and after division by w - compute the z coordinate only at the fragment stage instead of each time clipping creates / moves a vertex, in addition to the fragment stage - added VectorCoords to choose at compile-time different coordinates based on a template argument - added transpose struct to allow shuffling of vectors coordinates - added math::utils::lerp which interpolate linearly a float - added Vector{2,3,4}::map() which maps a vector from one range to another - added template parameter to DerivedVertex (and therefore TriangleDerived) to allow choosing which dimension to use
* added textures for the hardware renderervimene2026-01-134-12/+65
| | | | | | | | | | | | | | | | | - 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()
* fixed wrong header guardvimene2026-01-124-12/+12
|
* started working on implementing texturesvimene2025-12-261-1/+2
|
* transpose matrix representationvimene2025-12-262-49/+49
| | | | | map values[i * 4 + j] to values[i + j * 4], meaning that values[1] is now the second line, first column, instead of first line, second column
* added uniform buffers, small tweaksvimene2025-12-241-3/+25
| | | | | | | | | | - fixed aspect ratio being the inverse of what it's supposed to be - use std::chrono::high_resolution_clock instead of system_clock - convert ellapsed time to float representing seconds - renamed engine::math::Matrix4::projection to perspective - use [0,1] instead of [-1,1] for the range of z values, to be aligned with vulkan - added engine::math::Matrix4::{look_at,transpose}
* renamed .h to .hppvimene2025-12-104-5/+5
|
* improved keyboard and mouse controlsvimene2025-01-032-2/+7
|
* various improvementsvimene2025-01-024-11/+48
| | | | | | | | | | - cleaned up the computation of the camera's matrix - changed VertexData to being a struct which transmit data between the "vertex shader" and the "fragment shader" - started working on keyboard and mouse controls - added fov (field of view) - changed quaternion to euler angles conversion, from zyx to zxy - fixed computations of z coordinates in triangle rendering - improved naming in the triangle rasterizer
* various improvementsvimene2024-12-316-403/+462
| | | | | | | | | | | - added quaternions and rewrote all rotations to use them - added transforms to put all object transforms in a single place - added Wavefront .obj file parser - removed frame buffer's abstract class - improved vectors, matrices, triangles, vertices and vertices data by putting all code in header file - added vector's operations - changed from NULL to nullptr - miscellaneous improvements
* fixed perspective calculationsvimene2023-12-092-8/+8
|
* added renderer, improved various thingsvimene2023-12-052-14/+25
| | | | | | | - Added renderer to unify frame buffers - Added FrameBuffer class as a parent for frame buffers' classes - Improved formatting in Makefile.am - Added const modifier in Matrix4's methods
* renamed MathVector{2,3,4} to Vector{2,3,4} and Mat4 to Matrix4 in engine::mathvimene2023-12-034-129/+129
|
* renamed math_vector.{h,cpp} to vector.{h,cpp}vimene2023-12-032-0/+0
|
* added namespaces, made every function in engine.cpp static and added ↵vimene2023-11-264-10/+22
| | | | warnings' flags
* improved matrices, cube building and command parsingvimene2023-11-262-0/+45
|
* added matricesvimene2023-11-262-0/+122
|
* code refactoringvimene2023-11-222-0/+242