gtc_color_space.cpp 1.8 KB

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