]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_rmain.c
Added v_isometric cvars, this mode is mostly a curiosity but it's useful for testing...
[xonotic/darkplaces.git] / gl_rmain.c
index 386d12f35ca602a51b972e8a37801749183430e5..5eaff4372a433c927fe596112d9fa9af3a7ffc6d 100644 (file)
@@ -5474,15 +5474,15 @@ static void R_View_SetFrustum(const int *scissor)
        }
        else
        {
-               VectorScale(left, -r_refdef.view.ortho_x, r_refdef.view.frustum[0].normal);
-               VectorScale(left,  r_refdef.view.ortho_x, r_refdef.view.frustum[1].normal);
-               VectorScale(up, -r_refdef.view.ortho_y, r_refdef.view.frustum[2].normal);
-               VectorScale(up,  r_refdef.view.ortho_y, r_refdef.view.frustum[3].normal);
-               VectorCopy(forward, r_refdef.view.frustum[4].normal);
-               r_refdef.view.frustum[0].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[0].normal) + r_refdef.view.ortho_x;
-               r_refdef.view.frustum[1].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[1].normal) + r_refdef.view.ortho_x;
-               r_refdef.view.frustum[2].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[2].normal) + r_refdef.view.ortho_y;
-               r_refdef.view.frustum[3].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[3].normal) + r_refdef.view.ortho_y;
+               VectorScale(forward, -1.0f, r_refdef.view.frustum[0].normal);
+               VectorScale(forward,  1.0f, r_refdef.view.frustum[1].normal);
+               VectorScale(left, -1.0f, r_refdef.view.frustum[2].normal);
+               VectorScale(left,  1.0f, r_refdef.view.frustum[3].normal);
+               VectorScale(up, -1.0f, r_refdef.view.frustum[4].normal);
+               r_refdef.view.frustum[0].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[0].normal) - r_refdef.view.ortho_x;
+               r_refdef.view.frustum[1].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[1].normal) - r_refdef.view.ortho_x;
+               r_refdef.view.frustum[2].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[2].normal) - r_refdef.view.ortho_y;
+               r_refdef.view.frustum[3].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[3].normal) - r_refdef.view.ortho_y;
                r_refdef.view.frustum[4].dist = DotProduct (r_refdef.view.origin, r_refdef.view.frustum[4].normal) + r_refdef.nearclip;
        }
        r_refdef.view.numfrustumplanes = 5;
@@ -6920,6 +6920,8 @@ R_RenderView
 */
 int dpsoftrast_test;
 extern cvar_t r_shadow_bouncegrid;
+extern cvar_t v_isometric;
+extern void V_MakeViewIsometric(void);
 void R_RenderView(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture, int x, int y, int width, int height)
 {
        matrix4x4_t originalmatrix = r_refdef.view.matrix, offsetmatrix;
@@ -6978,6 +6980,9 @@ void R_RenderView(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture, i
                return;
        }
 
+       if (v_isometric.integer && r_refdef.view.ismain)
+               V_MakeViewIsometric();
+
        r_refdef.view.colorscale = r_hdr_scenebrightness.value * r_hdr_irisadaptation_value.value;
 
        if(vid_sRGB.integer && vid_sRGB_fallback.integer && !vid.sRGB3D)