summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/angle/samples/angle/sample_util/Matrix.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/angle/samples/angle/sample_util/Matrix.h')
-rw-r--r--chromium/third_party/angle/samples/angle/sample_util/Matrix.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/chromium/third_party/angle/samples/angle/sample_util/Matrix.h b/chromium/third_party/angle/samples/angle/sample_util/Matrix.h
new file mode 100644
index 00000000000..c482c52a106
--- /dev/null
+++ b/chromium/third_party/angle/samples/angle/sample_util/Matrix.h
@@ -0,0 +1,46 @@
+//
+// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef SAMPLE_UTIL_MATRIX_H
+#define SAMPLE_UTIL_MATRIX_H
+
+#include "Vector.h"
+
+struct Matrix4
+{
+ float data[16];
+
+ Matrix4();
+ Matrix4(float m00, float m01, float m02, float m03,
+ float m10, float m11, float m12, float m13,
+ float m20, float m21, float m22, float m23,
+ float m30, float m31, float m32, float m33);
+
+ static Matrix4 identity();
+ static Matrix4 rotate(float angle, const Vector3 &p);
+ static Matrix4 translate(const Vector3 &t);
+ static Matrix4 scale(const Vector3 &s);
+ static Matrix4 frustum(float l, float r, float b, float t, float n, float f);
+ static Matrix4 perspective(float fov, float aspectRatio, float n, float f);
+ static Matrix4 ortho(float l, float r, float b, float t, float n, float f);
+ static Matrix4 rollPitchYaw(float roll, float pitch, float yaw);
+
+ static Matrix4 invert(const Matrix4 &mat);
+ static Matrix4 transpose(const Matrix4 &mat);
+ static Vector3 transform(const Matrix4 &mat, const Vector3 &pt);
+ static Vector3 transform(const Matrix4 &mat, const Vector4 &pt);
+};
+
+Matrix4 operator*(const Matrix4 &a, const Matrix4 &b);
+Matrix4 &operator*=(Matrix4 &a, const Matrix4 &b);
+Matrix4 operator*(const Matrix4 &a, float b);
+Matrix4 &operator*=(Matrix4 &a, float b);
+Vector4 operator*(const Matrix4 &a, const Vector4 &b);
+
+bool operator==(const Matrix4 &a, const Matrix4 &b);
+bool operator!=(const Matrix4 &a, const Matrix4 &b);
+
+#endif // SAMPLE_UTIL_MATRIX_H