From 4da7be39827ea5888ef9c97b1aadf61b0d76347c Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Fri, 7 Feb 2025 11:27:18 -0500 Subject: initial commit (lol) --- mons_3d/src/projection.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 mons_3d/src/projection.c (limited to 'mons_3d/src/projection.c') diff --git a/mons_3d/src/projection.c b/mons_3d/src/projection.c new file mode 100644 index 0000000..287d59e --- /dev/null +++ b/mons_3d/src/projection.c @@ -0,0 +1,15 @@ +#include "projection.h" +#include +#include "mons_math/mat4.h" + +mons_mat4 mons_projection_matrix(mons_projection projection) { + float tangent = tanf(projection.fov / 2.0f); + float top = projection.near * tangent; + float right = top * projection.aspect_ratio; + return (mons_mat4){ + {projection.near / right, 0, 0, 0}, + {0, projection.near / top, 0, 0}, + {0, 0, -(projection.far + projection.near) / (projection.far - projection.near), -1}, + {0, 0, -(2.0f * projection.far * projection.near) / (projection.far - projection.near), 0}, + }; +} -- cgit v1.2.3