Skip to content

Commit abe5a69

Browse files
committed
Rec. 2020 Color Conversions RGB <-> Y'UV #34
1 parent 9962628 commit abe5a69

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

Inc/DirectXMath.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,6 +1633,9 @@ namespace DirectX
16331633
XMVECTOR XM_CALLCONV XMColorRGBToYUV_HD(FXMVECTOR rgb) noexcept;
16341634
XMVECTOR XM_CALLCONV XMColorYUVToRGB_HD(FXMVECTOR yuv) noexcept;
16351635

1636+
XMVECTOR XM_CALLCONV XMColorRGBToYUV_UHD(FXMVECTOR rgb) noexcept;
1637+
XMVECTOR XM_CALLCONV XMColorYUVToRGB_UHD(FXMVECTOR yuv) noexcept;
1638+
16361639
XMVECTOR XM_CALLCONV XMColorRGBToXYZ(FXMVECTOR rgb) noexcept;
16371640
XMVECTOR XM_CALLCONV XMColorXYZToRGB(FXMVECTOR xyz) noexcept;
16381641

Inc/DirectXMathMisc.inl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,6 +1779,33 @@ inline XMVECTOR XM_CALLCONV XMColorYUVToRGB_HD(FXMVECTOR yuv) noexcept
17791779

17801780
//------------------------------------------------------------------------------
17811781

1782+
inline XMVECTOR XM_CALLCONV XMColorRGBToYUV_UHD(FXMVECTOR rgb) noexcept
1783+
{
1784+
static const XMVECTORF32 Scale0 = { { { 0.2627f, -0.1215f, 0.6150f, 0.0f } } };
1785+
static const XMVECTORF32 Scale1 = { { { 0.6780f, -0.3136f, -0.5655f, 0.0f } } };
1786+
static const XMVECTORF32 Scale2 = { { { 0.0593f, 0.4351f, -0.0495f, 0.0f } } };
1787+
1788+
XMMATRIX M(Scale0, Scale1, Scale2, g_XMZero);
1789+
XMVECTOR clr = XMVector3Transform(rgb, M);
1790+
1791+
return XMVectorSelect(rgb, clr, g_XMSelect1110);
1792+
}
1793+
1794+
//------------------------------------------------------------------------------
1795+
1796+
inline XMVECTOR XM_CALLCONV XMColorYUVToRGB_UHD(FXMVECTOR yuv) noexcept
1797+
{
1798+
static const XMVECTORF32 Scale1 = { { { 0.0f, -0.1891f, 2.1620f, 0.0f } } };
1799+
static const XMVECTORF32 Scale2 = { { { 1.1989f, -0.4645f, 0.0f, 0.0f } } };
1800+
1801+
XMMATRIX M(g_XMOne, Scale1, Scale2, g_XMZero);
1802+
XMVECTOR clr = XMVector3Transform(yuv, M);
1803+
1804+
return XMVectorSelect(yuv, clr, g_XMSelect1110);
1805+
}
1806+
1807+
//------------------------------------------------------------------------------
1808+
17821809
inline XMVECTOR XM_CALLCONV XMColorRGBToXYZ(FXMVECTOR rgb) noexcept
17831810
{
17841811
static const XMVECTORF32 Scale0 = { { { 0.4887180f, 0.1762044f, 0.0000000f, 0.0f } } };

0 commit comments

Comments
 (0)