Fix translation matrix to be column major and implement multiplication.
This commit is contained in:
parent
bd69c0d93f
commit
3ae107c83e
@ -485,9 +485,9 @@ namespace Quik
|
|||||||
public static void Translation(out QMat4 mat, float x, float y, float z)
|
public static void Translation(out QMat4 mat, float x, float y, float z)
|
||||||
{
|
{
|
||||||
mat = Identity;
|
mat = Identity;
|
||||||
mat.M41 = x;
|
mat.M14 = x;
|
||||||
mat.M42 = y;
|
mat.M24 = y;
|
||||||
mat.M43 = z;
|
mat.M34 = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Scale(out QMat4 mat, float x, float y, float z)
|
public static void Scale(out QMat4 mat, float x, float y, float z)
|
||||||
@ -517,5 +517,32 @@ namespace Quik
|
|||||||
mat.M34 = -c * (far + near);
|
mat.M34 = -c * (far + near);
|
||||||
mat.M44 = 1.0f;
|
mat.M44 = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static QMat4 operator *(in QMat4 a, in QMat4 b)
|
||||||
|
{
|
||||||
|
QMat4 mat4 = default;
|
||||||
|
|
||||||
|
mat4.M11 = a.M11 * b.M11 + a.M12 * b.M21 + a.M13 * b.M31 + a.M14 * b.M41;
|
||||||
|
mat4.M12 = a.M11 * b.M12 + a.M12 * b.M22 + a.M13 * b.M32 + a.M14 * b.M42;
|
||||||
|
mat4.M13 = a.M11 * b.M13 + a.M12 * b.M23 + a.M13 * b.M33 + a.M14 * b.M43;
|
||||||
|
mat4.M14 = a.M11 * b.M14 + a.M12 * b.M24 + a.M13 * b.M34 + a.M14 * b.M44;
|
||||||
|
|
||||||
|
mat4.M21 = a.M21 * b.M11 + a.M22 * b.M21 + a.M23 * b.M31 + a.M24 * b.M41;
|
||||||
|
mat4.M22 = a.M21 * b.M12 + a.M22 * b.M22 + a.M23 * b.M32 + a.M24 * b.M42;
|
||||||
|
mat4.M23 = a.M21 * b.M13 + a.M22 * b.M23 + a.M23 * b.M33 + a.M24 * b.M43;
|
||||||
|
mat4.M24 = a.M21 * b.M14 + a.M22 * b.M24 + a.M23 * b.M34 + a.M24 * b.M44;
|
||||||
|
|
||||||
|
mat4.M31 = a.M31 * b.M11 + a.M32 * b.M21 + a.M33 * b.M31 + a.M34 * b.M41;
|
||||||
|
mat4.M32 = a.M31 * b.M12 + a.M32 * b.M22 + a.M33 * b.M32 + a.M34 * b.M42;
|
||||||
|
mat4.M33 = a.M31 * b.M13 + a.M32 * b.M23 + a.M33 * b.M33 + a.M34 * b.M43;
|
||||||
|
mat4.M34 = a.M31 * b.M14 + a.M32 * b.M24 + a.M33 * b.M34 + a.M34 * b.M44;
|
||||||
|
|
||||||
|
mat4.M41 = a.M41 * b.M11 + a.M42 * b.M21 + a.M43 * b.M31 + a.M44 * b.M41;
|
||||||
|
mat4.M42 = a.M41 * b.M12 + a.M42 * b.M22 + a.M43 * b.M32 + a.M44 * b.M42;
|
||||||
|
mat4.M43 = a.M41 * b.M13 + a.M42 * b.M23 + a.M43 * b.M33 + a.M44 * b.M43;
|
||||||
|
mat4.M44 = a.M41 * b.M14 + a.M42 * b.M24 + a.M43 * b.M34 + a.M44 * b.M44;
|
||||||
|
|
||||||
|
return mat4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user