public void mul4f(Matrix4fBuffer leftM, Matrix4fBuffer rightM) { final FloatBuffer left = leftM.buffer; final FloatBuffer right = rightM.buffer; final FloatBuffer buffer = this.buffer; float lm00 = left.get(0); float rm00 = right.get(0); float lm10 = left.get(1); float rm01 = right.get(4); float lm20 = left.get(2); float rm02 = right.get(8); float lm30 = left.get(3); buffer.put(0, lm00 * rm00 + lm10 * rm01 + lm20 * rm02 + lm30 * right.get(12)); float rm10 = right.get(1); float rm11 = right.get(5); float rm12 = right.get(9); buffer.put(1, lm00 * rm10 + lm10 * rm11 + lm20 * rm12 + lm30 * right.get(13)); float rm20 = right.get(2); float rm21 = right.get(6); float rm22 = right.get(10); buffer.put(2, lm00 * rm20 + lm10 * rm21 + lm20 * rm22 + lm30 * right.get(14)); float rm30 = right.get(3); float rm31 = right.get(7); float rm32 = right.get(11); buffer.put(3, lm00 * rm30 + lm10 * rm31 + lm20 * rm32 + lm30 * right.get(15)); float lm01 = left.get(4); float lm11 = left.get(5); float lm21 = left.get(6); float lm31 = left.get(7); buffer.put(4, lm01 * rm00 + lm11 * rm01 + lm21 * rm02 + lm31 * right.get(12)); buffer.put(5, lm01 * rm10 + lm11 * rm11 + lm21 * rm12 + lm31 * right.get(13)); buffer.put(6, lm01 * rm20 + lm11 * rm21 + lm21 * rm22 + lm31 * right.get(14)); buffer.put(7, lm01 * rm30 + lm11 * rm31 + lm21 * rm32 + lm31 * right.get(15)); float lm02 = left.get(8); float lm12 = left.get(9); float lm22 = left.get(10); float lm32 = left.get(11); buffer.put(8, lm02 * rm00 + lm12 * rm01 + lm22 * rm02 + lm32 * right.get(12)); buffer.put(9, lm02 * rm10 + lm12 * rm11 + lm22 * rm12 + lm32 * right.get(13)); buffer.put(10, lm02 * rm20 + lm12 * rm21 + lm22 * rm22 + lm32 * right.get(14)); buffer.put(11, lm02 * rm30 + lm12 * rm31 + lm22 * rm32 + lm32 * right.get(15)); float lm03 = left.get(12); float lm13 = left.get(13); float lm23 = left.get(14); float lm33 = left.get(15); buffer.put(12, lm03 * rm00 + lm13 * rm01 + lm23 * rm02 + lm33 * right.get(12)); buffer.put(13, lm03 * rm10 + lm13 * rm11 + lm23 * rm12 + lm33 * right.get(13)); buffer.put(14, lm03 * rm20 + lm13 * rm21 + lm23 * rm22 + lm33 * right.get(14)); buffer.put(15, lm03 * rm30 + lm13 * rm31 + lm23 * rm32 + lm33 * right.get(15)); }