From 77a797d04b2fb65aa24b0dc5e5ecd96dd594da6f Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sat, 26 Mar 2022 09:41:58 +0900 Subject: [PATCH] [renderer] Clean up viewport setting Software is still a mess, and vulkan never supported viewsize, but otherwise everything seems fine. --- libs/video/renderer/gl/gl_rmain.c | 14 -------------- libs/video/renderer/glsl/glsl_main.c | 7 ------- libs/video/renderer/r_screen.c | 4 ++++ libs/video/renderer/vid_render_gl.c | 5 +++++ libs/video/renderer/vid_render_glsl.c | 8 ++++---- libs/video/renderer/vulkan/vulkan_matrices.c | 6 ------ 6 files changed, 13 insertions(+), 31 deletions(-) diff --git a/libs/video/renderer/gl/gl_rmain.c b/libs/video/renderer/gl/gl_rmain.c index 325def941..61dfe7c0c 100644 --- a/libs/video/renderer/gl/gl_rmain.c +++ b/libs/video/renderer/gl/gl_rmain.c @@ -255,24 +255,10 @@ static void R_SetupGL_Viewport_and_Perspective (void) { float screenaspect; - int x, y2, w, h; - // set up viewpoint qfglMatrixMode (GL_PROJECTION); qfglLoadIdentity (); - if (gl_envmap) { - x = y2 = 0; - w = h = 256; - } else { - x = r_refdef.vrect.x; - y2 = (vid.height - (r_refdef.vrect.y + r_refdef.vrect.height)); - - w = r_refdef.vrect.width; - h = r_refdef.vrect.height; - } -// printf ("glViewport(%d, %d, %d, %d)\n", glx + x, gly + y2, w, h); - qfglViewport (x, y2, w, h); screenaspect = r_refdef.vrect.width / (float) r_refdef.vrect.height; MYgluPerspective (r_refdef.fov_y, screenaspect, r_nearclip->value, r_farclip->value); diff --git a/libs/video/renderer/glsl/glsl_main.c b/libs/video/renderer/glsl/glsl_main.c index a89f1439e..c0195d394 100644 --- a/libs/video/renderer/glsl/glsl_main.c +++ b/libs/video/renderer/glsl/glsl_main.c @@ -98,7 +98,6 @@ glsl_R_ViewChanged (void) static void R_SetupView (void) { - float x, y, w, h; static mat4f_t z_up = { { 0, 0, 1, 0}, {-1, 0, 0, 0}, @@ -106,12 +105,6 @@ R_SetupView (void) { 0, 0, 0, 1}, }; - x = r_refdef.vrect.x; - y = (vid.height - (r_refdef.vrect.y + r_refdef.vrect.height)); - w = r_refdef.vrect.width; - h = r_refdef.vrect.height; - qfeglViewport (x, y, w, h); - mmulf (glsl_view, z_up, r_refdef.camera_inverse); qfeglEnable (GL_CULL_FACE); diff --git a/libs/video/renderer/r_screen.c b/libs/video/renderer/r_screen.c index 4de6c3881..5de3b8184 100644 --- a/libs/video/renderer/r_screen.c +++ b/libs/video/renderer/r_screen.c @@ -289,6 +289,9 @@ SCR_UpdateScreen (transform_t *camera, double realtime, SCR_Func *scr_funcs) r_funcs->bind_framebuffer (warp_buffer); } if (scr_fisheye->int_val) { + int side = fisheye_cube_map->width; + vrect_t feye = { 0, 0, side, side }; + r_funcs->set_viewport (&feye); switch (scr_fviews->int_val) { case 6: render_side (BOX_BEHIND); case 5: render_side (BOX_BOTTOM); @@ -301,6 +304,7 @@ SCR_UpdateScreen (transform_t *camera, double realtime, SCR_Func *scr_funcs) r_funcs->set_viewport (&r_refdef.vrect); r_funcs->post_process (fisheye_cube_map); } else { + r_funcs->set_viewport (&r_refdef.vrect); render_scene (); if (r_dowarp) { r_funcs->bind_framebuffer (0); diff --git a/libs/video/renderer/vid_render_gl.c b/libs/video/renderer/vid_render_gl.c index 798b3bac7..c09af57b1 100644 --- a/libs/video/renderer/vid_render_gl.c +++ b/libs/video/renderer/vid_render_gl.c @@ -325,6 +325,11 @@ gl_bind_framebuffer (framebuffer_t *framebuffer) static void gl_set_viewport (const vrect_t *view) { + int x = r_refdef.vrect.x; + int y2 = (vid.height - (r_refdef.vrect.y + r_refdef.vrect.height)); + int w = r_refdef.vrect.width; + int h = r_refdef.vrect.height; + qfglViewport (x, y2, w, h); } vid_render_funcs_t gl_vid_render_funcs = { diff --git a/libs/video/renderer/vid_render_glsl.c b/libs/video/renderer/vid_render_glsl.c index 58f72e5ad..2c6fa374c 100644 --- a/libs/video/renderer/vid_render_glsl.c +++ b/libs/video/renderer/vid_render_glsl.c @@ -375,10 +375,10 @@ glsl_bind_framebuffer (framebuffer_t *framebuffer) static void glsl_set_viewport (const vrect_t *view) { - float x = view->x; - float y = vid.height - (view->y + view->height); - float w = view->width; - float h = view->height; + int x = view->x; + int y = vid.height - (view->y + view->height); + int w = view->width; + int h = view->height; qfeglViewport (x, y, w, h); } diff --git a/libs/video/renderer/vulkan/vulkan_matrices.c b/libs/video/renderer/vulkan/vulkan_matrices.c index 40ad0c066..79ca29906 100644 --- a/libs/video/renderer/vulkan/vulkan_matrices.c +++ b/libs/video/renderer/vulkan/vulkan_matrices.c @@ -73,12 +73,6 @@ setup_view (vulkan_ctx_t *ctx) { 0, 0, 0, 1}, }; - /*x = r_refdef.vrect.x; - y = (vid.height - (r_refdef.vrect.y + r_refdef.vrect.height)); - w = r_refdef.vrect.width; - h = r_refdef.vrect.height; - qfeglViewport (x, y, w, h);*/ - mmulf (view, z_up, r_refdef.camera_inverse); Vulkan_SetViewMatrix (ctx, view); }