Stores an XMVECTOR in an XMUDECN4, using the Extended Range (XR) with Bias.
void XMStoreUDecN4_XR(
XMUDECN4 *pDestination,
XMVECTOR V
)
pDestination
Type: XMUDECN4 *
[out] Address at which to store the data, as a pointer to an XMUDECN4 structure.
V
Type: XMVECTOR
[in] Vector containing the data to store.
Stores a vector into a 10:10:10:2 normalized GPU format using the Extended Range (XR) with Bias to match DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM.
The following pseudocode demonstrates the operation of the function.
XMVECTOR N;
static const XMVECTOR Scale = {510.0f, 510.0f, 510.0f, 3.0f};
static const XMVECTOR Bias = { 384.0f, 384.0f, 384.0f, 0.0f };
static const XMVECTOR C = { 1023.f, 1023.f, 1023.f, 3.f };
assert(pDestination);
N = XMVectorMultiplyAdd( V, Scale, Bias );
N = XMVectorClamp( V, XMVectorZero(), C );
pDestination->v = ((uint32_t)N.v[3] << 30) |
(((uint32_t)N.v[2] & 0x3FF) << 20) |
(((uint32_t)N.v[1] & 0x3FF) << 10) |
(((uint32_t)N.v[0] & 0x3FF));
For details on this conversion, see Float to XR_BIAS Conversion Rules on MSDN.
Header: Declared in directxpackedvector.h.