39 lines
779 B
C
39 lines
779 B
C
|
|
#ifndef _PIUMA_CAMERA_H_
|
||
|
|
#define _PIUMA_CAMERA_H_
|
||
|
|
|
||
|
|
#include "lib/types.h"
|
||
|
|
#include "lib/math.h"
|
||
|
|
|
||
|
|
|
||
|
|
static const v3 r_camera_up_vector = {0,0,1};
|
||
|
|
|
||
|
|
struct r_camera_base
|
||
|
|
{
|
||
|
|
v3 position;
|
||
|
|
v3 direction;
|
||
|
|
v3 up;
|
||
|
|
};
|
||
|
|
|
||
|
|
void r_camera_base_look_at(r_camera_base *c, v3 target);
|
||
|
|
m4 r_camera_base_view(r_camera_base *c);
|
||
|
|
|
||
|
|
|
||
|
|
struct r_camera_fps
|
||
|
|
{
|
||
|
|
v3 position;
|
||
|
|
// Forward = +y, Right = +x, Up = +z
|
||
|
|
f32 yaw;
|
||
|
|
f32 pitch;
|
||
|
|
};
|
||
|
|
|
||
|
|
void r_camera_fps_look_at(r_camera_fps *c, v3 target);
|
||
|
|
m4 r_camera_fps_view(r_camera_fps *c);
|
||
|
|
v3 r_camera_fps_direction(r_camera_fps *c);
|
||
|
|
|
||
|
|
|
||
|
|
m4 r_view_matrix(v3 position, v3 direction, v3 up);
|
||
|
|
m4 r_perspective_matrix(f32 fov, f32 aspect_ratio, f32 near_plane, f32 far_plane);
|
||
|
|
m4 r_orthographic_matrix(f32 left, f32 right, f32 bottom, f32 top, f32 near, f32 far);
|
||
|
|
|
||
|
|
#endif
|