properly take player fov into account for frustumangle clipping

This commit is contained in:
Alug 2024-09-11 15:54:19 +02:00
parent adcb7b4f63
commit b45158995c
3 changed files with 4 additions and 7 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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