public static void Multiply(ref Matrix a, ref Matrix b, out Matrix result)
{
var bX = b.X;
var bY = b.Y;
var bZ = b.Z;
{
var x = new Vector4(a.X.X);
var y = new Vector4(a.X.Y);
var z = new Vector4(a.X.Z);
var w = new Vector4(a.X.W);
result.X = (x * bX + y * bY) + (z * bZ + w * b.W);
}
{
var x = new Vector4(a.Y.X);
var y = new Vector4(a.Y.Y);
var z = new Vector4(a.Y.Z);
var w = new Vector4(a.Y.W);
result.Y = (x * bX + y * bY) + (z * bZ + w * b.W);
}
{
var x = new Vector4(a.Z.X);
var y = new Vector4(a.Z.Y);
var z = new Vector4(a.Z.Z);
var w = new Vector4(a.Z.W);
result.Z = (x * bX + y * bY) + (z * bZ + w * b.W);
}
{
var x = new Vector4(a.W.X);
var y = new Vector4(a.W.Y);
var z = new Vector4(a.W.Z);
var w = new Vector4(a.W.W);
result.W = (x * bX + y * bY) + (z * bZ + w * b.W);
}
}