ext_matrix_common.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <glm/ext/matrix_common.hpp>
  2. #include <glm/ext/matrix_double4x4.hpp>
  3. #include <glm/ext/matrix_float4x4.hpp>
  4. #include <glm/ext/matrix_relational.hpp>
  5. #include <glm/ext/vector_bool4.hpp>
  6. static int test_mix()
  7. {
  8. int Error = 0;
  9. {
  10. glm::mat4 A(2);
  11. glm::mat4 B(4);
  12. glm::mat4 C = glm::mix(A, B, 0.5f);
  13. glm::bvec4 const D = glm::equal(C, glm::mat4(3), 1);
  14. Error += glm::all(D) ? 0 : 1;
  15. }
  16. {
  17. glm::mat4 A(2);
  18. glm::mat4 B(4);
  19. glm::mat4 C = glm::mix(A, B, 0.5);
  20. glm::bvec4 const D = glm::equal(C, glm::mat4(3), 1);
  21. Error += glm::all(D) ? 0 : 1;
  22. }
  23. {
  24. glm::dmat4 A(2);
  25. glm::dmat4 B(4);
  26. glm::dmat4 C = glm::mix(A, B, 0.5);
  27. glm::bvec4 const D = glm::equal(C, glm::dmat4(3), 1);
  28. Error += glm::all(D) ? 0 : 1;
  29. }
  30. {
  31. glm::dmat4 A(2);
  32. glm::dmat4 B(4);
  33. glm::dmat4 C = glm::mix(A, B, 0.5f);
  34. glm::bvec4 const D = glm::equal(C, glm::dmat4(3), 1);
  35. Error += glm::all(D) ? 0 : 1;
  36. }
  37. return Error;
  38. }
  39. static int test_abs()
  40. {
  41. int Error = 0;
  42. {
  43. glm::mat4 A(
  44. 3.0f, 1.0f, 5.2f, 4.9f,
  45. 1.4f, 0.5f, 9.3f, 3.7f,
  46. 6.8f, 8.4f, 4.3f, 3.9f,
  47. 5.6f, 7.2f, 1.1f, 4.4f
  48. );
  49. glm::mat4 B(
  50. 1.0,-1.0, 1.0, 1.0,
  51. -1.0, 1.0, 1.0,-1.0,
  52. 1.0,-1.0,-1.0,-1.0,
  53. -1.0,-1.0, 1.0, 1.0
  54. );
  55. glm::mat4 C = glm::matrixCompMult(A, B); // Not * to avoid matrix product.
  56. glm::mat4 D = glm::abs(C);
  57. glm::bvec4 const row1 = glm::equal(D[0], A[0]);
  58. glm::bvec4 const row2 = glm::equal(D[1], A[1]);
  59. glm::bvec4 const row3 = glm::equal(D[2], A[2]);
  60. glm::bvec4 const row4 = glm::equal(D[3], A[3]);
  61. Error += glm::all(glm::bvec4{glm::all(row1), glm::all(row2), glm::all(row3), glm::all(row4)}) ? 0 : 1;
  62. return Error;
  63. }
  64. }
  65. int main()
  66. {
  67. int Error = 0;
  68. Error += test_mix();
  69. Error += test_abs();
  70. return Error;
  71. }