feat: initial DX12 foundation framework
This commit is contained in:
80
Engine/Utilities/MathTypes.h
Normal file
80
Engine/Utilities/MathTypes.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* @file MathTypes.h
|
||||
* @brief 数学常量与 DirectX 数学类型别名集合。
|
||||
* @details
|
||||
* 统一定义引擎常用数学基础元素:
|
||||
* - 常量:pi、two_pi、epsilon;
|
||||
* - 向量/矩阵别名:v2/v3/v4、m3x3/m4x4 等;
|
||||
* - 与 Win64 下 DirectXMath 类型的映射与对齐变体。
|
||||
*/
|
||||
#pragma once
|
||||
#include "CommonHeader.h"
|
||||
|
||||
namespace XEngine::math {
|
||||
|
||||
//constexpr long double pi = 3.141592653589793238462643383279L;
|
||||
/**
|
||||
* @brief 圆周率常量。
|
||||
*/
|
||||
constexpr float pi = 3.1415927f;
|
||||
/**
|
||||
* @brief 两倍圆周率常量。
|
||||
*/
|
||||
constexpr float two_pi = 6.2831853f;
|
||||
|
||||
/**
|
||||
* @brief 浮点比较容差常量。
|
||||
*/
|
||||
constexpr float epsilon = 1e-5f;
|
||||
|
||||
#if defined(_WIN64)
|
||||
|
||||
/**
|
||||
* @brief DirectXMath 向量类型别名。
|
||||
* @details
|
||||
* - 无 A 后缀类型使用常规布局;
|
||||
* - A 后缀类型要求 16 字节对齐,适合 SIMD 对齐访问场景。
|
||||
*/
|
||||
using v2 = DirectX::XMFLOAT2;
|
||||
using v2a = DirectX::XMFLOAT2A;
|
||||
using v3 = DirectX::XMFLOAT3;
|
||||
using v3a = DirectX::XMFLOAT3A;
|
||||
using v4 = DirectX::XMFLOAT4;
|
||||
using v4a = DirectX::XMFLOAT4A;
|
||||
|
||||
/**
|
||||
* @brief DirectXMath 整型向量别名。
|
||||
*/
|
||||
using u32v2 = DirectX::XMUINT2;
|
||||
using u32v3 = DirectX::XMUINT3;
|
||||
using u32v4 = DirectX::XMUINT4;
|
||||
using s32v2 = DirectX::XMINT2;
|
||||
using s32v3 = DirectX::XMINT3;
|
||||
using s32v4 = DirectX::XMINT4;
|
||||
|
||||
/**
|
||||
* @brief 标量浮点向量别名。
|
||||
*/
|
||||
using f32v2 = DirectX::XMFLOAT2;
|
||||
using f32v3 = DirectX::XMFLOAT3;
|
||||
using f32v4 = DirectX::XMFLOAT4;
|
||||
|
||||
/**
|
||||
* @brief DirectXMath 矩阵与寄存器向量别名。
|
||||
*/
|
||||
using Vec4 = DirectX::XMVECTOR;
|
||||
using Mat4 = DirectX::XMMATRIX;
|
||||
using Mat3 = DirectX::XMFLOAT3X3;
|
||||
using Mat4f = DirectX::XMFLOAT4X4;
|
||||
using m3x3 = DirectX::XMFLOAT3X3;
|
||||
using m4x4 = DirectX::XMFLOAT4X4;
|
||||
using m4x4a = DirectX::XMFLOAT4X4A;
|
||||
using vector4 = DirectX::XMVECTOR;
|
||||
using MAT4 = DirectX::XMMATRIX;
|
||||
using vector = DirectX::XMVECTOR;
|
||||
using Quat = DirectX::XMVECTOR;
|
||||
|
||||
#endif // (_WIN64)
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user