Describes a 3D vector of three floating-point components with 9 bit mantissas, each sharing the same 5-bit exponent.
If you are programming in C++, you can use the constructors and operator methods of this structure.
struct XMFLOAT3SE
The fields in the XMFLOAT3SE structure are declared as follows:
struct XMFLOAT3SE
{
union
{
struct
{
uint32_t xm : 9; // The 9-bit x-mantissa component.
uint32_t ym : 9; // The 9-bit y-mantissa component.
uint32_t zm : 9; // The 9-bit z-mantissa component.
uint32_t e : 5; // The 5-bit shared exponent.
};
uint32_t v; // Unsigned 32-bit integer representing the 3D vector.
};
The values of the three components of an instance of XMFLOAT3SE are stored in the v of the instance in the following format: the e member of the XMFLOAT3SE structure – the exponent shared by the mantissas of the floating point values of all three components of XMFLOAT3SE – is stored in the highest order bits of the return value, and the mantissa of the x component stored in the least significant bits.
(E5Z9Y9X9): [31] EEEEEzzz zzzzzzyy yyyyyyyx xxxxxxxx [0]
Or in detail:
As there are no sign bits in the format for storing the components in the XMFLOAT3SE structure, all component values are positive.
XMFLOAT3SE can be loaded into instances of XMVECTOR by using XMLoadFloat3SE.
Instances of XMVECTOR can be stored into an instance of XMFLOAT3SE with XMStoreFloat3SE.
Namespace: Use DirectX::PackedVector
Header: Declared in directxpackedvector.h.