Clutter Engine 0.0.1
Loading...
Searching...
No Matches
color_encoding.inl
1
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER vec<3, T, Q> convertLinearSRGBToD65XYZ(vec<3, T, Q> const& ColorLinearSRGB)
7 {
8 vec<3, T, Q> const M(0.490f, 0.17697f, 0.2f);
9 vec<3, T, Q> const N(0.31f, 0.8124f, 0.01063f);
10 vec<3, T, Q> const O(0.490f, 0.01f, 0.99f);
11
12 return (M * ColorLinearSRGB + N * ColorLinearSRGB + O * ColorLinearSRGB) * static_cast<T>(5.650675255693055f);
13 }
14
15 template<typename T, qualifier Q>
16 GLM_FUNC_QUALIFIER vec<3, T, Q> convertLinearSRGBToD50XYZ(vec<3, T, Q> const& ColorLinearSRGB)
17 {
18 vec<3, T, Q> const M(0.436030342570117f, 0.222438466210245f, 0.013897440074263f);
19 vec<3, T, Q> const N(0.385101860087134f, 0.716942745571917f, 0.097076381494207f);
20 vec<3, T, Q> const O(0.143067806654203f, 0.060618777416563f, 0.713926257896652f);
21
22 return M * ColorLinearSRGB + N * ColorLinearSRGB + O * ColorLinearSRGB;
23 }
24
25 template<typename T, qualifier Q>
26 GLM_FUNC_QUALIFIER vec<3, T, Q> convertD65XYZToLinearSRGB(vec<3, T, Q> const& ColorD65XYZ)
27 {
28 vec<3, T, Q> const M(0.41847f, -0.091169f, 0.0009209f);
29 vec<3, T, Q> const N(-0.15866f, 0.25243f, 0.015708f);
30 vec<3, T, Q> const O(0.0009209f, -0.0025498f, 0.1786f);
31
32 return M * ColorD65XYZ + N * ColorD65XYZ + O * ColorD65XYZ;
33 }
34
35 template<typename T, qualifier Q>
36 GLM_FUNC_QUALIFIER vec<3, T, Q> convertD65XYZToD50XYZ(vec<3, T, Q> const& ColorD65XYZ)
37 {
38 vec<3, T, Q> const M(+1.047844353856414f, +0.029549007606644f, -0.009250984365223f);
39 vec<3, T, Q> const N(+0.022898981050086f, +0.990508028941971f, +0.015072338237051f);
40 vec<3, T, Q> const O(-0.050206647741605f, -0.017074711360960f, +0.751717835079977f);
41
42 return M * ColorD65XYZ + N * ColorD65XYZ + O * ColorD65XYZ;
43 }
44
45}//namespace glm
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D50 YUV.
Definition color_encoding.inl:16
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D65 YUV.
Definition color_encoding.inl:6
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to D50 YUV.
Definition color_encoding.inl:36
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to linear sRGB.
Definition color_encoding.inl:26
Core features
Definition common.hpp:21
Definition qualifier.hpp:35