XMStoreUDecN4_XR

Stores an XMVECTOR in an XMUDECN4, using the Extended Range (XR) with Bias.

Syntax

void XMStoreUDecN4_XR(
         XMUDECN4 *pDestination,
         XMVECTOR V
)  

Parameters

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.

Return value

None.

Remarks

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.

Requirements

Header: Declared in directxpackedvector.h.