1 #include <glm/gtx/color_encoding.hpp>
2 #include <glm/gtc/color_space.hpp>
3 #include <glm/gtc/epsilon.hpp>
4 #include <glm/gtc/constants.hpp>
5
6 namespace srgb
7 {
test()8 int test()
9 {
10 int Error(0);
11
12 glm::vec3 const ColorSourceRGB(1.0, 0.5, 0.0);
13 /*
14 {
15 glm::vec3 const ColorSRGB = glm::convertLinearSRGBToD65XYZ(ColorSourceRGB);
16 glm::vec3 const ColorRGB = glm::convertD65XYZToLinearSRGB(ColorSRGB);
17 Error += glm::all(glm::epsilonEqual(ColorSourceRGB, ColorRGB, 0.00001f)) ? 0 : 1;
18 }
19 */
20 {
21 glm::vec3 const ColorSRGB = glm::convertLinearToSRGB(ColorSourceRGB, 2.8f);
22 glm::vec3 const ColorRGB = glm::convertSRGBToLinear(ColorSRGB, 2.8f);
23 Error += glm::all(glm::epsilonEqual(ColorSourceRGB, ColorRGB, 0.00001f)) ? 0 : 1;
24 }
25
26 glm::vec4 const ColorSourceRGBA(1.0, 0.5, 0.0, 1.0);
27
28 {
29 glm::vec4 const ColorSRGB = glm::convertLinearToSRGB(ColorSourceRGBA);
30 glm::vec4 const ColorRGB = glm::convertSRGBToLinear(ColorSRGB);
31 Error += glm::all(glm::epsilonEqual(ColorSourceRGBA, ColorRGB, 0.00001f)) ? 0 : 1;
32 }
33
34 {
35 glm::vec4 const ColorSRGB = glm::convertLinearToSRGB(ColorSourceRGBA, 2.8f);
36 glm::vec4 const ColorRGB = glm::convertSRGBToLinear(ColorSRGB, 2.8f);
37 Error += glm::all(glm::epsilonEqual(ColorSourceRGBA, ColorRGB, 0.00001f)) ? 0 : 1;
38 }
39
40 return Error;
41 }
42 }//namespace srgb
43
main()44 int main()
45 {
46 int Error(0);
47
48 Error += srgb::test();
49
50 return Error;
51 }
52