aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs')
-rw-r--r--src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs b/src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs
new file mode 100644
index 00000000..5b513aff
--- /dev/null
+++ b/src/Ryujinx.Audio/Renderer/Utils/Math/Matrix2x2.cs
@@ -0,0 +1,71 @@
+namespace Ryujinx.Audio.Renderer.Utils.Math
+{
+ record struct Matrix2x2
+ {
+ public float M11;
+ public float M12;
+ public float M21;
+ public float M22;
+
+ public Matrix2x2(float m11, float m12,
+ float m21, float m22)
+ {
+ M11 = m11;
+ M12 = m12;
+
+ M21 = m21;
+ M22 = m22;
+ }
+
+ public static Matrix2x2 operator +(Matrix2x2 value1, Matrix2x2 value2)
+ {
+ Matrix2x2 m;
+
+ m.M11 = value1.M11 + value2.M11;
+ m.M12 = value1.M12 + value2.M12;
+ m.M21 = value1.M21 + value2.M21;
+ m.M22 = value1.M22 + value2.M22;
+
+ return m;
+ }
+
+ public static Matrix2x2 operator -(Matrix2x2 value1, float value2)
+ {
+ Matrix2x2 m;
+
+ m.M11 = value1.M11 - value2;
+ m.M12 = value1.M12 - value2;
+ m.M21 = value1.M21 - value2;
+ m.M22 = value1.M22 - value2;
+
+ return m;
+ }
+
+ public static Matrix2x2 operator *(Matrix2x2 value1, float value2)
+ {
+ Matrix2x2 m;
+
+ m.M11 = value1.M11 * value2;
+ m.M12 = value1.M12 * value2;
+ m.M21 = value1.M21 * value2;
+ m.M22 = value1.M22 * value2;
+
+ return m;
+ }
+
+ public static Matrix2x2 operator *(Matrix2x2 value1, Matrix2x2 value2)
+ {
+ Matrix2x2 m;
+
+ // First row
+ m.M11 = value1.M11 * value2.M11 + value1.M12 * value2.M21;
+ m.M12 = value1.M11 * value2.M12 + value1.M12 * value2.M22;
+
+ // Second row
+ m.M21 = value1.M21 * value2.M11 + value1.M22 * value2.M21;
+ m.M22 = value1.M21 * value2.M12 + value1.M22 * value2.M22;
+
+ return m;
+ }
+ }
+} \ No newline at end of file