global proc float[] multMatrix(float $mat1[], float $mat2[]){ float $outMat[16]; $outMat[0] = $mat1[0]*$mat2[0] + $mat1[1]*$mat2[4] + $mat1[2]*$mat2[8] + $mat1[3]*$mat2[12]; $outMat[1] = $mat1[0]*$mat2[1] + $mat1[1]*$mat2[5] + $mat1[2]*$mat2[9] + $mat1[3]*$mat2[13]; $outMat[2] = $mat1[0]*$mat2[2] + $mat1[1]*$mat2[6] + $mat1[2]*$mat2[10] + $mat1[3]*$mat2[14]; $outMat[3] = $mat1[0]*$mat2[3] + $mat1[1]*$mat2[7] + $mat1[2]*$mat2[11] + $mat1[3]*$mat2[15]; $outMat[4] = $mat1[4]*$mat2[0] + $mat1[5]*$mat2[4] + $mat1[6]*$mat2[8] + $mat1[7]*$mat2[12]; $outMat[5] = $mat1[4]*$mat2[1] + $mat1[5]*$mat2[5] + $mat1[6]*$mat2[9] + $mat1[7]*$mat2[13]; $outMat[6] = $mat1[4]*$mat2[2] + $mat1[5]*$mat2[6] + $mat1[6]*$mat2[10] + $mat1[7]*$mat2[14]; $outMat[7] = $mat1[4]*$mat2[3] + $mat1[5]*$mat2[7] + $mat1[6]*$mat2[11] + $mat1[7]*$mat2[15]; $outMat[8] = $mat1[8]*$mat2[0] + $mat1[9]*$mat2[4] + $mat1[10]*$mat2[8] + $mat1[11]*$mat2[12]; $outMat[9] = $mat1[8]*$mat2[1] + $mat1[9]*$mat2[5] + $mat1[10]*$mat2[9] + $mat1[11]*$mat2[13]; $outMat[10] = $mat1[8]*$mat2[2] + $mat1[9]*$mat2[6] + $mat1[10]*$mat2[10] + $mat1[11]*$mat2[14]; $outMat[11] = $mat1[8]*$mat2[3] + $mat1[9]*$mat2[7] + $mat1[10]*$mat2[11] + $mat1[11]*$mat2[15]; $outMat[12] = $mat1[12]*$mat2[0] + $mat1[13]*$mat2[4] + $mat1[14]*$mat2[8] + $mat1[15]*$mat2[12]; $outMat[13] = $mat1[12]*$mat2[1] + $mat1[13]*$mat2[5] + $mat1[14]*$mat2[9] + $mat1[15]*$mat2[13]; $outMat[14] = $mat1[12]*$mat2[2] + $mat1[13]*$mat2[6] + $mat1[14]*$mat2[10] + $mat1[15]*$mat2[14]; $outMat[15] = $mat1[12]*$mat2[3] + $mat1[13]*$mat2[7] + $mat1[14]*$mat2[11] + $mat1[15]*$mat2[15]; return $outMat; }