114 lines
2.8 KiB
C
114 lines
2.8 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include <dawn/dawn.h>
|
|
|
|
/**
|
|
* Makes matrix identity.
|
|
* @param matrix Matrix to identify.
|
|
*/
|
|
void matrixIdentity(matrix_t *matrix);
|
|
|
|
/**
|
|
* Applies a look at point vector to a matrix.
|
|
*
|
|
* @param matrix Matrix to apply to.
|
|
* @param x Camera source X.
|
|
* @param y Camera source Y.
|
|
* @param z Camera source Z.
|
|
* @param tx Camera target X.
|
|
* @param ty Camera target Y.
|
|
* @param tz Camera target Z.
|
|
* @param ux Camera up vector X.
|
|
* @param uy Camera up vector Y.
|
|
* @param uz Camera up vector Z.
|
|
*/
|
|
void matrixLookAt(matrix_t *matrix,
|
|
float x,float y,float z,
|
|
float tx,float ty, float tz,
|
|
float ux, float uy, float uz
|
|
);
|
|
|
|
/**
|
|
* Applies a look vector to a matrix.
|
|
*
|
|
* @param matrix Matrix to apply to.
|
|
* @param x Camera source X.
|
|
* @param y Camera source Y.
|
|
* @param z Camera source Z.
|
|
* @param pitch Camera pitch
|
|
* @param yaw Camera yaw.
|
|
* @param roll Camera roll.
|
|
* @param ux Camera up vector X.
|
|
* @param uy Camera up vector Y.
|
|
* @param uz Camera up vector Z.
|
|
*/
|
|
void matrixLook(matrix_t *matrix,
|
|
float x, float y, float z,
|
|
float pitch, float yaw, float roll,
|
|
float ux, float uy, float uz
|
|
);
|
|
|
|
/**
|
|
* Applies a perspective projection to a matrix.
|
|
*
|
|
* @param matrix Matrix to apply to.
|
|
* @param fov Field of View (in radians) to use.
|
|
* @param aspect Aspect ratio (w/h) of the viewport.
|
|
* @param near Near vector, > 0.
|
|
* @param far Far view vector.
|
|
*/
|
|
void matrixPerspective(matrix_t *matrix,
|
|
float fov,float aspect,float near,float far
|
|
);
|
|
|
|
/**
|
|
* Applies an orthogonal projection to a matrix.
|
|
*
|
|
* @param matrix Matrix to apply to.
|
|
* @param left Left view position.
|
|
* @param right Right view position.
|
|
* @param bottom Bottom view position.
|
|
* @param top Top view position.
|
|
* @param near Near vector, > 0.
|
|
* @param far Far view vector.
|
|
*/
|
|
void matrixOrtho(matrix_t *matrix,
|
|
float left, float right, float bottom, float top, float near, float far
|
|
);
|
|
|
|
/**
|
|
* Performs a matrix translation.
|
|
*
|
|
* @param matrix Matrix to translate.
|
|
* @param x X coordinate to translate on.
|
|
* @param y Y coordinate to translate on.
|
|
* @param z Z coordinate to translate on.
|
|
*/
|
|
void matrixTranslate(matrix_t *matrix, float x, float y, float z);
|
|
|
|
/**
|
|
* Applies a rotation vector to a matrix.
|
|
*
|
|
* @param matrix Matrix to rotate.
|
|
* @param angle Angle (in radians) to rotate.
|
|
* @param x X vector to rotate on.
|
|
* @param y Y vector to rotate on.
|
|
* @param z Z vector to rotate on.
|
|
*/
|
|
void matrixRotate(matrix_t *matrix, float angle, float x, float y, float z);
|
|
|
|
/**
|
|
* Scales a matrix.
|
|
*
|
|
* @param matrix Matrix to scale
|
|
* @param x X vector to scale.
|
|
* @param y Y vector to scale.
|
|
* @param z Z vector to scale.
|
|
*/
|
|
void matrixScale(matrix_t *matrix, float x, float y, float z); |