51 lines
898 B
C
51 lines
898 B
C
#include "main.h"
|
|
#include <cglm/cam.h>
|
|
#include <cglm/mat4.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);
|
|
|
|
load_mat4_to_shader(shader, "fix", (mat4_t)m);
|
|
}
|
|
|
|
void load_mdl_matrix(id_t shader, unsigned char i, unsigned char c)
|
|
{
|
|
load_float_to_shader(shader, "idx", c);
|
|
load_mat4_to_shader(shader, "mdl", (mat4_t)ortho[i]);
|
|
}
|
|
|
|
void load_rot_matrix(id_t shader, quat_t q)
|
|
{
|
|
mat4 m;
|
|
glm_quat_mat4(q, m);
|
|
load_mat4_to_shader(shader, "rot", (mat4_t)m);
|
|
}
|