]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - matrixlib.h
rollback that shadowmesh fix, I was thinking about it incorrectly
[xonotic/darkplaces.git] / matrixlib.h
index c54764435a3d73f5b0b60540f091b2efa07912e3..06890e294b9171ff6d18bfa3f7e4ca4677ec69b0 100644 (file)
@@ -12,6 +12,8 @@ typedef struct matrix4x4_s
 }
 matrix4x4_t;
 
+extern const matrix4x4_t identitymatrix;
+
 // functions for manipulating 4x4 matrices
 
 // copy a matrix4x4
@@ -59,6 +61,9 @@ void Matrix4x4_ToVectors(const matrix4x4_t *in, float vx[3], float vy[3], float
 // creates a matrix4x4 from a set of 3D vectors for axial directions, and translate
 void Matrix4x4_FromVectors(matrix4x4_t *out, const float vx[3], const float vy[3], const float vz[3], const float t[3]);
 
+// blends two matrices together, at a given percentage (blend controls percentage of in2)
+void Matrix4x4_Blend (matrix4x4_t *out, const matrix4x4_t *in1, const matrix4x4_t *in2, float blend);
+
 // transforms a 3D vector through a matrix4x4
 void Matrix4x4_Transform (const matrix4x4_t *in, const float v[3], float out[3]);
 // transforms a 4D vector through a matrix4x4
@@ -82,4 +87,9 @@ void Matrix4x4_ConcatScale (matrix4x4_t *out, float x);
 // immediately applies a Scale3 to the matrix
 void Matrix4x4_ConcatScale3 (matrix4x4_t *out, float x, float y, float z);
 
+// extracts origin vector (translate) from matrix
+void Matrix4x4_OriginFromMatrix (const matrix4x4_t *in, float *out);
+// extracts scaling factor from matrix (only works for uniform scaling)
+float Matrix4x4_ScaleFromMatrix (const matrix4x4_t *in);
+
 #endif