From 6640d548554e614b2d7b860282c1b2e446f8eaaf Mon Sep 17 00:00:00 2001 From: havoc Date: Fri, 15 Jun 2007 08:54:47 +0000 Subject: [PATCH] changed the meaning of VF_PERSPECTIVE false after discussion with Spike, VF_FOV now determines the dimensions in all directions (in other words, the view is from -VF_FOVX to +VF_FOVX horizontally, and -VF_FOVY to +VF_FOVY vertically, in quake units) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7429 d7cf8633-e32d-0410-b094-e92efae38249 --- client.h | 1 + gl_rmain.c | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/client.h b/client.h index d00873f3..329d192c 100644 --- a/client.h +++ b/client.h @@ -1410,6 +1410,7 @@ typedef struct r_view_s vec3_t frustumcorner[4]; // if turned off it renders an ortho view int useperspective; + float ortho_x, ortho_y; // screen area to render in int x; diff --git a/gl_rmain.c b/gl_rmain.c index 65c5b946..3b7cfd32 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -1942,21 +1942,27 @@ static void R_View_SetFrustum(void) VectorMAMAMAM(1, r_view.origin, 1024, r_view.forward, 1024 * slopex, r_view.left, -1024 * slopey, r_view.up, r_view.frustumcorner[1]); VectorMAMAMAM(1, r_view.origin, 1024, r_view.forward, -1024 * slopex, r_view.left, 1024 * slopey, r_view.up, r_view.frustumcorner[2]); VectorMAMAMAM(1, r_view.origin, 1024, r_view.forward, 1024 * slopex, r_view.left, 1024 * slopey, r_view.up, r_view.frustumcorner[3]); + + r_view.frustum[0].dist = DotProduct (r_view.origin, r_view.frustum[0].normal); + r_view.frustum[1].dist = DotProduct (r_view.origin, r_view.frustum[1].normal); + r_view.frustum[2].dist = DotProduct (r_view.origin, r_view.frustum[2].normal); + r_view.frustum[3].dist = DotProduct (r_view.origin, r_view.frustum[3].normal); + r_view.frustum[4].dist = DotProduct (r_view.origin, r_view.frustum[4].normal) + r_refdef.nearclip; } else { - VectorScale(r_view.left, -r_view.x - r_view.width, r_view.frustum[0].normal); - VectorScale(r_view.left, r_view.x , r_view.frustum[1].normal); - VectorScale(r_view.up, -r_view.y - r_view.height , r_view.frustum[2].normal); - VectorScale(r_view.up, r_view.y , r_view.frustum[3].normal); + VectorScale(r_view.left, -r_view.ortho_x, r_view.frustum[0].normal); + VectorScale(r_view.left, r_view.ortho_x, r_view.frustum[1].normal); + VectorScale(r_view.up, -r_view.ortho_y, r_view.frustum[2].normal); + VectorScale(r_view.up, r_view.ortho_y, r_view.frustum[3].normal); VectorCopy(r_view.forward, r_view.frustum[4].normal); + r_view.frustum[0].dist = DotProduct (r_view.origin, r_view.frustum[0].normal) + r_view.ortho_x; + r_view.frustum[1].dist = DotProduct (r_view.origin, r_view.frustum[1].normal) + r_view.ortho_x; + r_view.frustum[2].dist = DotProduct (r_view.origin, r_view.frustum[2].normal) + r_view.ortho_y; + r_view.frustum[3].dist = DotProduct (r_view.origin, r_view.frustum[3].normal) + r_view.ortho_y; + r_view.frustum[4].dist = DotProduct (r_view.origin, r_view.frustum[4].normal) + r_refdef.nearclip; } - r_view.frustum[0].dist = DotProduct (r_view.origin, r_view.frustum[0].normal); - r_view.frustum[1].dist = DotProduct (r_view.origin, r_view.frustum[1].normal); - r_view.frustum[2].dist = DotProduct (r_view.origin, r_view.frustum[2].normal); - r_view.frustum[3].dist = DotProduct (r_view.origin, r_view.frustum[3].normal); - r_view.frustum[4].dist = DotProduct (r_view.origin, r_view.frustum[4].normal) + r_refdef.nearclip; PlaneClassify(&r_view.frustum[0]); PlaneClassify(&r_view.frustum[1]); PlaneClassify(&r_view.frustum[2]); @@ -2003,7 +2009,7 @@ void R_View_Update(void) void R_SetupView(const matrix4x4_t *matrix) { if (!r_view.useperspective) - GL_SetupView_Mode_Ortho(r_view.x, r_view.y, r_view.x + r_view.width, r_view.y + r_view.height, -r_refdef.farclip, r_refdef.farclip); + GL_SetupView_Mode_Ortho(-r_view.ortho_x, -r_view.ortho_y, r_view.ortho_x, r_view.ortho_y, -r_refdef.farclip, r_refdef.farclip); else if (r_refdef.rtworldshadows || r_refdef.rtdlightshadows) GL_SetupView_Mode_PerspectiveInfiniteFarClip(r_view.frustum_x, r_view.frustum_y, r_refdef.nearclip); else -- 2.39.2