2025-10-04 04:13:48 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "pxl8_types.h"
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_vec2 {
|
|
|
|
|
f32 x, y;
|
|
|
|
|
} pxl8_vec2;
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_vec3 {
|
|
|
|
|
f32 x, y, z;
|
|
|
|
|
} pxl8_vec3;
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_vec4 {
|
|
|
|
|
f32 x, y, z, w;
|
|
|
|
|
} pxl8_vec4;
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_mat4 {
|
|
|
|
|
f32 m[16];
|
|
|
|
|
} pxl8_mat4;
|
|
|
|
|
|
2025-11-09 06:30:17 -06:00
|
|
|
typedef struct pxl8_plane {
|
|
|
|
|
pxl8_vec3 normal;
|
|
|
|
|
f32 distance;
|
|
|
|
|
} pxl8_plane;
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_frustum {
|
|
|
|
|
pxl8_plane planes[6];
|
|
|
|
|
} pxl8_frustum;
|
|
|
|
|
|
2025-10-04 04:13:48 -05:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
pxl8_vec2 pxl8_vec2_add(pxl8_vec2 a, pxl8_vec2 b);
|
|
|
|
|
f32 pxl8_vec2_dot(pxl8_vec2 a, pxl8_vec2 b);
|
|
|
|
|
f32 pxl8_vec2_length(pxl8_vec2 v);
|
|
|
|
|
pxl8_vec2 pxl8_vec2_normalize(pxl8_vec2 v);
|
|
|
|
|
pxl8_vec2 pxl8_vec2_scale(pxl8_vec2 v, f32 s);
|
|
|
|
|
pxl8_vec2 pxl8_vec2_sub(pxl8_vec2 a, pxl8_vec2 b);
|
|
|
|
|
|
|
|
|
|
pxl8_vec3 pxl8_vec3_add(pxl8_vec3 a, pxl8_vec3 b);
|
|
|
|
|
pxl8_vec3 pxl8_vec3_cross(pxl8_vec3 a, pxl8_vec3 b);
|
|
|
|
|
f32 pxl8_vec3_dot(pxl8_vec3 a, pxl8_vec3 b);
|
|
|
|
|
f32 pxl8_vec3_length(pxl8_vec3 v);
|
|
|
|
|
pxl8_vec3 pxl8_vec3_normalize(pxl8_vec3 v);
|
|
|
|
|
pxl8_vec3 pxl8_vec3_scale(pxl8_vec3 v, f32 s);
|
|
|
|
|
pxl8_vec3 pxl8_vec3_sub(pxl8_vec3 a, pxl8_vec3 b);
|
|
|
|
|
|
|
|
|
|
pxl8_mat4 pxl8_mat4_identity(void);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_lookat(pxl8_vec3 eye, pxl8_vec3 center, pxl8_vec3 up);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_multiply(pxl8_mat4 a, pxl8_mat4 b);
|
|
|
|
|
pxl8_vec4 pxl8_mat4_multiply_vec4(pxl8_mat4 m, pxl8_vec4 v);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_ortho(f32 left, f32 right, f32 bottom, f32 top, f32 near, f32 far);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_perspective(f32 fov, f32 aspect, f32 near, f32 far);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_rotate_x(f32 angle);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_rotate_y(f32 angle);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_rotate_z(f32 angle);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_scale(f32 x, f32 y, f32 z);
|
|
|
|
|
pxl8_mat4 pxl8_mat4_translate(f32 x, f32 y, f32 z);
|
|
|
|
|
|
2025-11-09 06:30:17 -06:00
|
|
|
pxl8_frustum pxl8_frustum_from_matrix(pxl8_mat4 vp);
|
|
|
|
|
bool pxl8_frustum_test_aabb(const pxl8_frustum* frustum, pxl8_vec3 min, pxl8_vec3 max);
|
|
|
|
|
|
2025-10-04 04:13:48 -05:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|