From b45158995cd6617e2f3e9feee5904dd4dc5497a7 Mon Sep 17 00:00:00 2001 From: Alug Date: Wed, 11 Sep 2024 15:54:19 +0200 Subject: [PATCH] properly take player fov into account for frustumangle clipping --- src/hardware/hw_clip.c | 5 +---- src/hardware/hw_clip.h | 2 +- src/hardware/hw_main.c | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/hardware/hw_clip.c b/src/hardware/hw_clip.c index d83b49d7e..54883433b 100644 --- a/src/hardware/hw_clip.c +++ b/src/hardware/hw_clip.c @@ -322,16 +322,13 @@ void gld_clipper_Clear(void) #define RMUL (1.6f/1.333333f) -angle_t gld_FrustumAngle(angle_t tiltangle) +angle_t gld_FrustumAngle(float render_fov, angle_t tiltangle) { double floatangle; angle_t a1; float tilt = (float)fabs(((double)(int)tiltangle) / ANG1); - // NEWCLIP TODO: SRB2CBTODO: make a global render_fov for this function - - float render_fov = FIXED_TO_FLOAT(cv_fov[viewssnum].value); float render_fovratio = (float)BASEVIDWIDTH / (float)BASEVIDHEIGHT; // SRB2CBTODO: NEWCLIPTODO: Is this right? float render_multiplier = 64.0f / render_fovratio / RMUL; diff --git a/src/hardware/hw_clip.h b/src/hardware/hw_clip.h index 27a2ed1ef..e3bb4c319 100644 --- a/src/hardware/hw_clip.h +++ b/src/hardware/hw_clip.h @@ -17,7 +17,7 @@ boolean gld_clipper_SafeCheckRange(angle_t startAngle, angle_t endAngle); void gld_clipper_SafeAddClipRange(angle_t startangle, angle_t endangle); void gld_clipper_Clear(void); -angle_t gld_FrustumAngle(angle_t tiltangle); +angle_t gld_FrustumAngle(float render_fov, angle_t tiltangle); #ifdef HAVE_SPHEREFRUSTRUM void gld_FrustrumSetup(void); boolean gld_SphereInFrustum(float x, float y, float z, float radius); diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index d63326224..4ed0323cc 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -6598,7 +6598,7 @@ void HWR_RenderSkyboxView(player_t *player) #ifdef NEWCLIP { - angle_t a1 = gld_FrustumAngle(gl_aimingangle); + angle_t a1 = gld_FrustumAngle(fpov, gl_aimingangle); gld_clipper_Clear(); gld_clipper_SafeAddClipRange(viewangle + a1, viewangle - a1); #ifdef HAVE_SPHEREFRUSTRUM @@ -6810,7 +6810,7 @@ void HWR_RenderPlayerView(void) #ifdef NEWCLIP { - angle_t a1 = gld_FrustumAngle(gl_aimingangle); + angle_t a1 = gld_FrustumAngle(fpov, gl_aimingangle); gld_clipper_Clear(); gld_clipper_SafeAddClipRange(viewangle + a1, viewangle - a1); #ifdef HAVE_SPHEREFRUSTRUM