commit
d850bdcd0b
24 changed files with 577 additions and 136 deletions
@ -1,18 +1,91 @@ |
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
|
// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Created : 2010-09-16
|
// Created : 2011-05-32
|
||||||
// Updated : 2010-09-16
|
// Updated : 2011-05-32
|
||||||
// Licence : This source is under MIT licence
|
// Licence : This source is under MIT licence
|
||||||
// File : test/gtc/matrix_transform.cpp
|
// File : test/gtc/half_float.cpp
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <glm/glm.hpp> |
#include <glm/glm.hpp> |
||||||
#include <glm/gtc/matrix_transform.hpp> |
#include <glm/gtc/half_float.hpp> |
||||||
|
|
||||||
|
int test_half_precision_scalar() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
Error += sizeof(glm::half) == 2 ? 0 : 1; |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int test_half_precision_vec() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
Error += sizeof(glm::hvec2) == 4 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hvec3) == 6 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hvec4) == 8 ? 0 : 1; |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int test_half_precision_mat() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
Error += sizeof(glm::hmat2) == 8 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat3) == 18 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat4) == 32 ? 0 : 1; |
||||||
|
|
||||||
|
Error += sizeof(glm::hmat2x2) == 8 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat2x3) == 12 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat2x4) == 16 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat3x2) == 12 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat3x3) == 18 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat3x4) == 24 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat4x2) == 16 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat4x3) == 24 ? 0 : 1; |
||||||
|
Error += sizeof(glm::hmat4x4) == 32 ? 0 : 1; |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int test_half_ctor_mat2x2() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
{ |
||||||
|
glm::hvec2 A(1, 2); |
||||||
|
glm::hvec2 B(3, 4); |
||||||
|
glm::hmat2 C(A, B);//, 2.0f, 3.0f, 4.0f);
|
||||||
|
glm::hmat2 D(1, 2, 3, 4); |
||||||
|
|
||||||
|
Error += C[0] == D[0] ? 0 : 1; |
||||||
|
Error += C[1] == D[1] ? 0 : 1; |
||||||
|
} |
||||||
|
|
||||||
|
{ |
||||||
|
glm::hvec2 A(1, 2.0); |
||||||
|
glm::hvec2 B(3, 4.0); |
||||||
|
glm::hmat2 C(A, B);//, 2.0f, 3.0f, 4.0f);
|
||||||
|
glm::hmat2 D(1, 2.0, 3u, 4.0f); |
||||||
|
|
||||||
|
Error += C[0] == D[0] ? 0 : 1; |
||||||
|
Error += C[1] == D[1] ? 0 : 1; |
||||||
|
} |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
int main() |
int main() |
||||||
{ |
{ |
||||||
int Failed = 0; |
int Error = 0; |
||||||
|
|
||||||
|
Error += test_half_ctor_mat2x2(); |
||||||
|
Error += test_half_precision_scalar(); |
||||||
|
Error += test_half_precision_vec(); |
||||||
|
Error += test_half_precision_mat(); |
||||||
|
|
||||||
return Failed; |
return Error; |
||||||
} |
} |
||||||
|
@ -0,0 +1,98 @@ |
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Created : 2011-05-31
|
||||||
|
// Updated : 2011-05-31
|
||||||
|
// Licence : This source is under MIT licence
|
||||||
|
// File : test/gtx/random.cpp
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <glm/glm.hpp> |
||||||
|
#include <glm/gtx/random.hpp> |
||||||
|
#include <glm/gtx/epsilon.hpp> |
||||||
|
#include <iostream> |
||||||
|
|
||||||
|
int test_signedRand1() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
{ |
||||||
|
float ResultFloat = 0.0f; |
||||||
|
double ResultDouble = 0.0f; |
||||||
|
for(std::size_t i = 0; i < 100000; ++i) |
||||||
|
{ |
||||||
|
ResultFloat += glm::signedRand1<float>(); |
||||||
|
ResultDouble += glm::signedRand1<double>(); |
||||||
|
} |
||||||
|
|
||||||
|
Error += glm::equalEpsilon(ResultFloat, 0.0f, 0.0001f); |
||||||
|
Error += glm::equalEpsilon(ResultDouble, 0.0, 0.0001); |
||||||
|
} |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int test_normalizedRand2() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
{ |
||||||
|
std::size_t Max = 100000; |
||||||
|
float ResultFloat = 0.0f; |
||||||
|
double ResultDouble = 0.0f; |
||||||
|
for(std::size_t i = 0; i < Max; ++i) |
||||||
|
{ |
||||||
|
ResultFloat += glm::length(glm::normalizedRand2<float>()); |
||||||
|
ResultDouble += glm::length(glm::normalizedRand2<double>()); |
||||||
|
} |
||||||
|
|
||||||
|
Error += glm::equalEpsilon(ResultFloat, float(Max), 0.0001f); |
||||||
|
Error += glm::equalEpsilon(ResultDouble, double(Max), 0.0001); |
||||||
|
} |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int test_normalizedRand3() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
{ |
||||||
|
std::size_t Max = 100000; |
||||||
|
float ResultFloatA = 0.0f; |
||||||
|
float ResultFloatB = 0.0f; |
||||||
|
float ResultFloatC = 0.0f; |
||||||
|
double ResultDoubleA = 0.0f; |
||||||
|
double ResultDoubleB = 0.0f; |
||||||
|
double ResultDoubleC = 0.0f; |
||||||
|
for(std::size_t i = 0; i < Max; ++i) |
||||||
|
{ |
||||||
|
ResultFloatA += glm::length(glm::normalizedRand3<float>()); |
||||||
|
ResultDoubleA += glm::length(glm::normalizedRand3<double>()); |
||||||
|
ResultFloatB += glm::length(glm::normalizedRand3(2.0f, 2.0f)); |
||||||
|
ResultDoubleB += glm::length(glm::normalizedRand3(2.0, 2.0)); |
||||||
|
ResultFloatC += glm::length(glm::normalizedRand3(1.0f, 3.0f)); |
||||||
|
ResultDoubleC += glm::length(glm::normalizedRand3(1.0, 3.0)); |
||||||
|
} |
||||||
|
|
||||||
|
Error += glm::equalEpsilon(ResultFloatA, float(Max), 0.0001f) ? 0 : 1; |
||||||
|
Error += glm::equalEpsilon(ResultDoubleA, double(Max), 0.0001) ? 0 : 1; |
||||||
|
Error += glm::equalEpsilon(ResultFloatB, float(Max * 2), 0.0001f) ? 0 : 1; |
||||||
|
Error += glm::equalEpsilon(ResultDoubleB, double(Max * 2), 0.0001) ? 0 : 1; |
||||||
|
Error += (ResultFloatC >= float(Max) && ResultFloatC <= float(Max * 3)) ? 0 : 1; |
||||||
|
Error += (ResultDoubleC >= double(Max) && ResultDoubleC <= double(Max * 3)) ? 0 : 1; |
||||||
|
} |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
||||||
|
|
||||||
|
int main() |
||||||
|
{ |
||||||
|
int Error = 0; |
||||||
|
|
||||||
|
Error += test_signedRand1(); |
||||||
|
Error += test_normalizedRand2(); |
||||||
|
Error += test_normalizedRand3(); |
||||||
|
|
||||||
|
return Error; |
||||||
|
} |
Loading…
Reference in New Issue