Add detection/support for reverse-z projection matrices. Refs #169

This commit is contained in:
baldurk committed 2016-01-20 19:58:24 +01:00
1 parent 01bffe6a09
commit ae91bdcde2
4 files changed
+49 -4

No files matched your search

+14
View File
@@ -391,3 +391,17 @@ Matrix4f Matrix4f::Perspective(const float degfov, const float N, const float F,
return Matrix4f(persp);
}
Matrix4f Matrix4f::ReversePerspective(const float degfov, const float N, const float A)
{
const float radfov = degfov * (3.1415926535f/180.0f);
float S = 1/tanf(radfov * 0.5f);
float persp[16] = { S/A, 0.0f, 0.0f, 0.0f,
0.0f, S, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, N, 0.0f,
};
return Matrix4f(persp);
}
+1
View File
@@ -60,6 +60,7 @@ class Matrix4f
static Matrix4f RotationZYX(const Vec3f &rot);
static Matrix4f Orthographic(const float nearplane, const float farplane);
static Matrix4f Perspective(const float degfov, const float nearplane, const float farplane, const float aspect);
static Matrix4f ReversePerspective(const float degfov, const float nearplane, const float aspect);
inline float operator[](const size_t i) const
{