mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-15 15:09:29 +00:00
Replace Matrix2 with Matrix3x2 (#870)
* Replace `Matrix2` with `Matrix3x2` * Update benchmarks * Add XML documentation for `Matrix3x2`
This commit is contained in:
committed by
GitHub
parent
d008b1bd41
commit
49038f5d42
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
|
||||
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<ArtifactsPath>$(SolutionDirectory).artifacts/benchmarks</ArtifactsPath>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
<IsPackable>false</IsPackable>
|
||||
<NoWarn>NU1701</NoWarn>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MonoGame.Framework.DesktopGL"
|
||||
Version="3.8.1.303"
|
||||
PrivateAssets="All" />
|
||||
<PackageReference Include="BenchmarkDotNet"
|
||||
Version="0.13.12" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
-5
@@ -7,11 +7,6 @@
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.10" />
|
||||
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.1.303" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\src\cs\MonoGame.Extended.Collisions\MonoGame.Extended.Collisions.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace MonoGame.Extended.Benchmarks;
|
||||
|
||||
[MemoryDiagnoser]
|
||||
public class Matrix3x2Benchmarks
|
||||
{
|
||||
private Matrix2 _matrix2;
|
||||
private Matrix3x2 _matrix3x2;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
_matrix2 = new Matrix2(1, 2, 3, 4, 5, 6);
|
||||
_matrix3x2 = new Matrix3x2(1, 2, 3, 4, 5, 6);
|
||||
}
|
||||
|
||||
[Benchmark]
|
||||
public Vector2 Matrix2_getTranslation() => _matrix2.Translation;
|
||||
|
||||
[Benchmark]
|
||||
public Vector2 Matrix3x2_getTranslation() => _matrix3x2.Translation;
|
||||
|
||||
// [Benchmark]
|
||||
// public float Matrix2_getRotation() => _matrix2.Rotation;
|
||||
|
||||
// [Benchmark]
|
||||
// public float Matrix3x2_getRotation() => _matrix3x2.Rotation;
|
||||
|
||||
// [Benchmark]
|
||||
// public Vector2 Matrix2_getScale() => _matrix2.Scale;
|
||||
|
||||
// [Benchmark]
|
||||
// public Vector2 Matrix3x2_getScale() => _matrix3x2.Scale;
|
||||
|
||||
// [Benchmark]
|
||||
// public (Vector2, float, Vector2) Matrix2_Decompose()
|
||||
// {
|
||||
// Vector2 translation = _matrix2.Translation;
|
||||
// float rotation = _matrix2.Rotation;
|
||||
// Vector2 scale = _matrix2.Scale;
|
||||
// return (translation, rotation, scale);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public (Vector2, float, Vector2) Matrix3x2_Decompose()
|
||||
// {
|
||||
// _matrix3x2.Decompose(out Vector2 translation, out float rotation, out Vector2 scale);
|
||||
// return (translation, rotation, scale);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Vector2 Matrix2_Transform() => _matrix2.Transform(Vector2.One);
|
||||
|
||||
// [Benchmark]
|
||||
// public Vector2 Matrix3x2_Transform() => _matrix3x2.Transform(Vector2.One);
|
||||
|
||||
// [Benchmark]
|
||||
// public float Matrix2_Determinant() => _matrix2.Determinant();
|
||||
|
||||
// [Benchmark]
|
||||
// public float Matrix3x2_Determinant() => _matrix3x2.Determinant();
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_CreateFrom()
|
||||
// {
|
||||
// Matrix2.CreateFrom(Vector2.Zero, 1.0f, Vector2.One, Vector2.Zero, out Matrix2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_CreateFrom()
|
||||
// {
|
||||
// Matrix3x2.CreateFrom(Vector2.Zero, 1.0f, Vector2.One, Vector2.Zero, out Matrix3x2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_CreateRotationZ()
|
||||
// {
|
||||
// Matrix2.CreateRotationZ(1.0f, out Matrix2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_CreateRotationZ()
|
||||
// {
|
||||
// Matrix3x2.CreateRotationZ(1.0f, out Matrix3x2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_CreateScale()
|
||||
// {
|
||||
// Matrix2.CreateScale(1.0f, out Matrix2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_CreateScale()
|
||||
// {
|
||||
// Matrix3x2.CreateScale(1.0f, out Matrix3x2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_CreateTranslation()
|
||||
// {
|
||||
// Matrix2.CreateTranslation(1.0f, 1.0f, out Matrix2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_CreateTranslation()
|
||||
// {
|
||||
// Matrix3x2.CreateTranslation(1.0f, 1.0f, out Matrix3x2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_Invert()
|
||||
// {
|
||||
// Matrix2.Invert(ref _matrix2, out Matrix2 result);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_Invert()
|
||||
// {
|
||||
// Matrix3x2.Invert(_matrix3x2);
|
||||
// return _matrix3x2;
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_Add()
|
||||
// {
|
||||
// return Matrix2.Add(_matrix2, _matrix2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_Add()
|
||||
// {
|
||||
// return Matrix3x2.Add(_matrix3x2, _matrix3x2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_Subtract()
|
||||
// {
|
||||
// return Matrix2.Subtract(_matrix2, _matrix2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_Subtract()
|
||||
// {
|
||||
// return Matrix3x2.Subtract(_matrix3x2, _matrix3x2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_Multiply()
|
||||
// {
|
||||
// return Matrix2.Subtract(_matrix2, _matrix2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_Multiply()
|
||||
// {
|
||||
// return Matrix3x2.Multiply(_matrix3x2, _matrix3x2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix2 Matrix2_Divide()
|
||||
// {
|
||||
// return Matrix2.Divide(_matrix2, _matrix2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix3x2 Matrix3x2_Divide()
|
||||
// {
|
||||
// return Matrix3x2.Divide(_matrix3x2, _matrix3x2);
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix Matrix2_ToMatrix()
|
||||
// {
|
||||
// return _matrix2.ToMatrix();
|
||||
// }
|
||||
|
||||
// [Benchmark]
|
||||
// public Matrix Matrix3x2_ToMatrix()
|
||||
// {
|
||||
// return _matrix3x2.ToMatrix();
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\source\MonoGame.Extended\MonoGame.Extended.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,7 @@
|
||||
using BenchmarkDotNet.Running;
|
||||
using MonoGame.Extended.Benchmarks;
|
||||
|
||||
|
||||
BenchmarkRunner.Run<Matrix3x2Benchmarks>();
|
||||
|
||||
Console.WriteLine("finished");
|
||||
Reference in New Issue
Block a user