|
|
@@ -32,6 +32,26 @@ int test_perspective()
|
|
|
Error += glm::notEqual(N.z, -1.f, Eps);
|
|
|
Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
}
|
|
|
+
|
|
|
+ Projection = glm::perspectiveRH_ZO(glm::pi<float>() * 0.25f, 4.0f / 3.0f, Near, Far);
|
|
|
+ {
|
|
|
+ glm::vec4 N = Projection * glm::vec4{0.f, 0.f, -Near, 1.f};
|
|
|
+ glm::vec4 F = Projection * glm::vec4{0.f, 0.f, -Far, 1.f};
|
|
|
+ N /= N.w;
|
|
|
+ F /= F.w;
|
|
|
+ Error += glm::notEqual(N.z, 0.f, Eps);
|
|
|
+ Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
+ }
|
|
|
+
|
|
|
+ Projection = glm::perspectiveRH_NO(glm::pi<float>() * 0.25f, 4.0f / 3.0f, Near, Far);
|
|
|
+ {
|
|
|
+ glm::vec4 N = Projection * glm::vec4{0.f, 0.f, -Near, 1.f};
|
|
|
+ glm::vec4 F = Projection * glm::vec4{0.f, 0.f, -Far, 1.f};
|
|
|
+ N /= N.w;
|
|
|
+ F /= F.w;
|
|
|
+ Error += glm::notEqual(N.z, -1.f, Eps);
|
|
|
+ Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
+ }
|
|
|
|
|
|
return Error;
|
|
|
}
|
|
|
@@ -66,6 +86,26 @@ int test_infinitePerspective()
|
|
|
Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
}
|
|
|
|
|
|
+ Projection = glm::infinitePerspectiveRH_ZO(glm::pi<float>() * 0.25f, 4.0f / 3.0f, Near);
|
|
|
+ {
|
|
|
+ glm::vec4 N = Projection * glm::vec4{0.f, 0.f, -Near, 1.f};
|
|
|
+ glm::vec4 F = Projection * glm::vec4{0.f, 0.f, -Inf, 1.f};
|
|
|
+ N /= N.w;
|
|
|
+ F /= F.w;
|
|
|
+ Error += glm::notEqual(N.z, 0.f, Eps);
|
|
|
+ Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
+ }
|
|
|
+
|
|
|
+ Projection = glm::infinitePerspectiveRH_NO(glm::pi<float>() * 0.25f, 4.0f / 3.0f, Near);
|
|
|
+ {
|
|
|
+ glm::vec4 N = Projection * glm::vec4{0.f, 0.f, -Near, 1.f};
|
|
|
+ glm::vec4 F = Projection * glm::vec4{0.f, 0.f, -Inf, 1.f};
|
|
|
+ N /= N.w;
|
|
|
+ F /= F.w;
|
|
|
+ Error += glm::notEqual(N.z, -1.f, Eps);
|
|
|
+ Error += glm::notEqual(F.z, 1.f, Eps);
|
|
|
+ }
|
|
|
+
|
|
|
return Error;
|
|
|
}
|
|
|
|