From Camera- to Clip-Space, to NDCs and z-Fighting

Continuing from my article on Model Matrix Rotations, I've written about projection matrices - one of the final steps before rasterization.

Continuing from my article on Model Matrix Rotations, I've written about projection matrices - one of the final steps before rasterization.
main() serves as a great example of yesterday's restructuring in practice: The OpenGLDevice is created, then passed to a GLFWApplication which manages window creation and the main loop. The ultimate goal is for the application to own and provide the input system, further simplifying the program's entry point and properly encapsulating platform-specific details within the appropriate module.
The last few days have seen some restructuring in the helios codebase, with namespaces and modules being reorganized. This was mainly driven by a clearer definition of responsibilities for individual classes, which can now be better refined as the implementation progresses.
From Vertex to MeshData to device-specific Meshes - over the weekend, I took a sidestep from the math lib to focus on the architectural planning and development of the underlying rendering layer, accompanied by the scene layer that is responsible for abstracting scene graphs away from the actual rendering process.
helios now has core vector operations: subtraction, dot product, cross product. The lookAt function constructs view matrices from eye, target, and up vectors, following standard methodology.

Following up on my article on Model Matrices, I've written about matrix composition in the context of Model and Rotation matrices.
translate, rotate, scale - done. They now live in helios.math.transform.
I standardized on post-multiplication (M' = M * T) to stay consistent with glm. Transformations are applied in local space.
While porting the rotation matrices for helios.math.transform, I took a detour to understand the underlying linear algebra - I wanted to move beyond treating the rotational part of the model matrix as a black box.
Over the weekend, I focused on refactoring mat4 and vec3. Additionally, I've made some adjustments to my toolset.
import {SocialLinks} from "../../src/components/SocialLinks";
For a game engine, the first step isn’t rendering a scene or simulating complex physics - it’s laying the foundational bricks. This weekend, I eased dove headfirst into that foundation for my personal C++ engine project, Helios, and it was a fantastic journey through the nuances of modern C++ design.