Files
manigraph/src/matrix.c
2024-10-17 22:30:55 -06:00

52 lines
895 B
C

#include "main.h"
#include <cglm/mat4.h>
#include <cglm/cam.h>
#include <cglm/quat.h>
mat4 ortho[] =
{
{
{ 1, 0, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 0, 1 },
},
{
{ 0, 1, 0, 0 },
{-1, 0, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 0, 1 },
},
{
{ 0, 0, 1, 0 },
{ 0, 1, 0, 0 },
{-1, 0, 0, 0 },
{ 0, 0, 0, 1 },
},
};
void load_fix_matrix( id_t shader, float ratio )
{
mat4 m, n;
const int d = 7;
glm_lookat( (vec3){0,0,-d}, (vec3){0,0,0}, (vec3){0,1,0}, m );
glm_perspective( CGLM_PI/4, ratio, d-3, d+3, n );
glm_mat4_mul( n, m, m );
gload_mat4( shader, "fix", (mat4_t) m );
}
void load_mdl_matrix( id_t shader, unsigned char i, unsigned char c )
{
gload_float( shader, "idx", c );
gload_mat4( shader, "mdl", (mat4_t)ortho[i] );
}
void load_rot_matrix( id_t shader, quat_t q )
{
mat4 m;
glm_quat_mat4( q, m );
gload_mat4( shader, "rot", (mat4_t)m );
}