Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Lerp()

static unsafe Matrix4x4 System.Numerics.Matrix4x4.Lerp ( Matrix4x4 matrix1,
Matrix4x4 matrix2,
float amount )
inlinestatic

Definition at line 1199 of file Matrix4x4.cs.

1200 {
1201 if (AdvSimd.IsSupported)
1202 {
1203 }
1204 if (Sse.IsSupported)
1205 {
1206 Vector128<float> t = Vector128.Create(amount);
1207 Sse.Store(&matrix1.M11, VectorMath.Lerp(Sse.LoadVector128(&matrix1.M11), Sse.LoadVector128(&matrix2.M11), t));
1208 Sse.Store(&matrix1.M21, VectorMath.Lerp(Sse.LoadVector128(&matrix1.M21), Sse.LoadVector128(&matrix2.M21), t));
1209 Sse.Store(&matrix1.M31, VectorMath.Lerp(Sse.LoadVector128(&matrix1.M31), Sse.LoadVector128(&matrix2.M31), t));
1210 Sse.Store(&matrix1.M41, VectorMath.Lerp(Sse.LoadVector128(&matrix1.M41), Sse.LoadVector128(&matrix2.M41), t));
1211 return matrix1;
1212 }
1213 System.Runtime.CompilerServices.Unsafe.SkipInit(out Matrix4x4 result);
1214 result.M11 = matrix1.M11 + (matrix2.M11 - matrix1.M11) * amount;
1215 result.M12 = matrix1.M12 + (matrix2.M12 - matrix1.M12) * amount;
1216 result.M13 = matrix1.M13 + (matrix2.M13 - matrix1.M13) * amount;
1217 result.M14 = matrix1.M14 + (matrix2.M14 - matrix1.M14) * amount;
1218 result.M21 = matrix1.M21 + (matrix2.M21 - matrix1.M21) * amount;
1219 result.M22 = matrix1.M22 + (matrix2.M22 - matrix1.M22) * amount;
1220 result.M23 = matrix1.M23 + (matrix2.M23 - matrix1.M23) * amount;
1221 result.M24 = matrix1.M24 + (matrix2.M24 - matrix1.M24) * amount;
1222 result.M31 = matrix1.M31 + (matrix2.M31 - matrix1.M31) * amount;
1223 result.M32 = matrix1.M32 + (matrix2.M32 - matrix1.M32) * amount;
1224 result.M33 = matrix1.M33 + (matrix2.M33 - matrix1.M33) * amount;
1225 result.M34 = matrix1.M34 + (matrix2.M34 - matrix1.M34) * amount;
1226 result.M41 = matrix1.M41 + (matrix2.M41 - matrix1.M41) * amount;
1227 result.M42 = matrix1.M42 + (matrix2.M42 - matrix1.M42) * amount;
1228 result.M43 = matrix1.M43 + (matrix2.M43 - matrix1.M43) * amount;
1229 result.M44 = matrix1.M44 + (matrix2.M44 - matrix1.M44) * amount;
1230 return result;
1231 }
static Vector128< byte > Create(byte value)
Definition Vector128.cs:138
static unsafe void Store(float *address, Vector128< float > source)
Definition Sse.cs:417
static new bool IsSupported
Definition Sse.cs:30
static unsafe Vector128< float > LoadVector128(float *address)
Definition Sse.cs:257
Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)
Definition Matrix4x4.cs:93

References System.Runtime.Intrinsics.Vector128< T >.Create(), System.Runtime.Intrinsics.Arm.AdvSimd.IsSupported, System.Runtime.Intrinsics.X86.Sse.IsSupported, System.Numerics.VectorMath.Lerp(), System.Runtime.Intrinsics.X86.Sse.LoadVector128(), System.Numerics.Matrix4x4.M11, System.Numerics.Matrix4x4.M12, System.Numerics.Matrix4x4.M13, System.Numerics.Matrix4x4.M14, System.Numerics.Matrix4x4.M21, System.Numerics.Matrix4x4.M22, System.Numerics.Matrix4x4.M23, System.Numerics.Matrix4x4.M24, System.Numerics.Matrix4x4.M31, System.Numerics.Matrix4x4.M32, System.Numerics.Matrix4x4.M33, System.Numerics.Matrix4x4.M34, System.Numerics.Matrix4x4.M41, System.Numerics.Matrix4x4.M42, System.Numerics.Matrix4x4.M43, System.Numerics.Matrix4x4.M44, and System.Runtime.Intrinsics.X86.Sse.Store().