graphics

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 2b050a93dfdba438119221597411f4a2fcbb69bb
parent e849bfea91b8068998880e7b9fddd4fe95ab47a8
Author: Brian Swetland <swetland@frotz.net>
Date:   Sat, 31 Aug 2013 04:18:39 -0700

matrix: adjust set_perspective() to match gameplay3d's version

Diffstat:
Mcommon/matrix.cc | 13+++++++++++++
1 file changed, 13 insertions(+), 0 deletions(-)

diff --git a/common/matrix.cc b/common/matrix.cc @@ -98,6 +98,7 @@ void __mat4_set_rotate_z(float m[16], float rad) { m[15] = 1.0; } +#if 0 /* D3D RH Style */ void __mat4_set_perspective(float m[16], float fov, float a, float zn, float zf) { memset(m, 0, sizeof(float[16])); @@ -109,6 +110,18 @@ void __mat4_set_perspective(float m[16], float fov, float a, float zn, float zf) m[11] = -1.0; m[14] = (zn * zf) / (zn - zf); } +#else +void __mat4_set_perspective(float m[16], float fov, float a, float zn, float zf) { + memset(m, 0, sizeof(float[16])); + float fn = 1.0f / (zf - zn); + float t = 1.0f / tanf(fov * 0.5f); + m[0] = (1.0f / a) * t; + m[5] = t; + m[10] = (-(zf - zn)) * fn; + m[11] = -1.0f; + m[14] = -2.0f * (zn * zf) * fn; +} +#endif void __mat4_set_ortho(float m[16], float l, float r, float b, float t, float n, float f) { memset(m, 0, sizeof(float[16]));