gtx_color_encoding.cpp 1.4 KB

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