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