From e94109f1c35b619e766b7510b5160a3b069f0d58 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 12 Nov 2017 23:53:46 +0100 Subject: [PATCH] - Inside the renderer, use only the time value being passed to RenderView. The voxel rotation code of the software renderer and R_SetupFrame still called I_FPSTime directly. --- src/gl/scene/gl_scene.cpp | 2 +- src/polyrenderer/poly_renderer.cpp | 2 +- src/r_utility.cpp | 6 +++--- src/r_utility.h | 2 +- src/swrenderer/drawers/r_draw.cpp | 1 + src/swrenderer/drawers/r_draw.h | 1 + src/swrenderer/r_swrenderer.cpp | 3 ++- src/swrenderer/scene/r_scene.cpp | 2 +- src/swrenderer/things/r_voxel.cpp | 2 +- 9 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/gl/scene/gl_scene.cpp b/src/gl/scene/gl_scene.cpp index c900c21d7ef..0f80dae6668 100644 --- a/src/gl/scene/gl_scene.cpp +++ b/src/gl/scene/gl_scene.cpp @@ -785,7 +785,7 @@ sector_t * GLSceneDrawer::RenderViewpoint (AActor * camera, GL_IRECT * bounds, f GLRenderer->mSceneClearColor[0] = 0.0f; GLRenderer->mSceneClearColor[1] = 0.0f; GLRenderer->mSceneClearColor[2] = 0.0f; - R_SetupFrame (r_viewpoint, r_viewwindow, camera); + R_SetupFrame (r_viewpoint, r_viewwindow, camera, gl_frameMS); SetViewArea(); GLRenderer->mGlobVis = R_GetGlobVis(r_viewwindow, r_visibility); diff --git a/src/polyrenderer/poly_renderer.cpp b/src/polyrenderer/poly_renderer.cpp index c3389bba596..7fe9062b08c 100644 --- a/src/polyrenderer/poly_renderer.cpp +++ b/src/polyrenderer/poly_renderer.cpp @@ -115,7 +115,7 @@ void PolyRenderer::RenderActorView(AActor *actor, bool dontmaplines) DontMapLines = dontmaplines; - R_SetupFrame(Viewpoint, Viewwindow, actor); + R_SetupFrame(Viewpoint, Viewwindow, actor, swrenderer::renderTime); P_FindParticleSubsectors(); PO_LinkToSubsectors(); diff --git a/src/r_utility.cpp b/src/r_utility.cpp index 8a18c433d30..70619d832a2 100644 --- a/src/r_utility.cpp +++ b/src/r_utility.cpp @@ -751,7 +751,7 @@ static double QuakePower(double factor, double intensity, double offset) // //========================================================================== -void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor *actor) +void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor *actor, unsigned int renderTime) { if (actor == NULL) { @@ -982,7 +982,7 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor if (hom == 3) { - hom = ((I_FPSTime() / 128) & 1) + 1; + hom = ((renderTime / 128) & 1) + 1; } if (hom == 1) { @@ -994,7 +994,7 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor } else if (hom == 4) { - color = (I_FPSTime() / 32) & 255; + color = (renderTime / 32) & 255; } else { diff --git a/src/r_utility.h b/src/r_utility.h index eb108e411a4..0254a114ec3 100644 --- a/src/r_utility.h +++ b/src/r_utility.h @@ -111,7 +111,7 @@ void R_ClearInterpolationPath(); void R_AddInterpolationPoint(const DVector3a &vec); void R_SetViewSize (int blocks); void R_SetFOV (FRenderViewpoint &viewpoint, DAngle fov); -void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor * camera); +void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor * camera, unsigned int renderTime); void R_SetViewAngle (FRenderViewpoint &viewpoint, const FViewWindow &viewwindow); // Called by startup code. diff --git a/src/swrenderer/drawers/r_draw.cpp b/src/swrenderer/drawers/r_draw.cpp index c894e46ce16..e487462114c 100644 --- a/src/swrenderer/drawers/r_draw.cpp +++ b/src/swrenderer/drawers/r_draw.cpp @@ -64,6 +64,7 @@ namespace swrenderer int fuzzoffset[FUZZTABLE + 1]; int fuzzpos; int fuzzviewheight; + unsigned int renderTime; int fuzz_random_x_offset[FUZZ_RANDOM_X_SIZE] = { diff --git a/src/swrenderer/drawers/r_draw.h b/src/swrenderer/drawers/r_draw.h index 4672a4fd315..4a31da74bda 100644 --- a/src/swrenderer/drawers/r_draw.h +++ b/src/swrenderer/drawers/r_draw.h @@ -35,6 +35,7 @@ namespace swrenderer extern FDynamicColormap ShadeFakeColormap[16]; extern uint8_t identitymap[256]; extern FDynamicColormap identitycolormap; + extern unsigned int renderTime; // Constant arrays used for psprite clipping and initializing clipping. extern short zeroarray[MAXWIDTH]; diff --git a/src/swrenderer/r_swrenderer.cpp b/src/swrenderer/r_swrenderer.cpp index ca8d030872b..69f5b2f433c 100644 --- a/src/swrenderer/r_swrenderer.cpp +++ b/src/swrenderer/r_swrenderer.cpp @@ -170,8 +170,9 @@ void FSoftwareRenderer::Precache(uint8_t *texhitlist, TMap & } } -void FSoftwareRenderer::RenderView(player_t *player, unsigned int /*nowtime*/) +void FSoftwareRenderer::RenderView(player_t *player, unsigned int nowtime) { + renderTime = nowtime; if (r_polyrenderer) { PolyRenderer::Instance()->Viewpoint = r_viewpoint; diff --git a/src/swrenderer/scene/r_scene.cpp b/src/swrenderer/scene/r_scene.cpp index 4667f25ebf1..c2c63556e44 100644 --- a/src/swrenderer/scene/r_scene.cpp +++ b/src/swrenderer/scene/r_scene.cpp @@ -136,7 +136,7 @@ namespace swrenderer MaskedCycles.Reset(); DrawerWaitCycles.Reset(); - R_SetupFrame(MainThread()->Viewport->viewpoint, MainThread()->Viewport->viewwindow, actor); + R_SetupFrame(MainThread()->Viewport->viewpoint, MainThread()->Viewport->viewwindow, actor, renderTime); if (APART(R_OldBlend)) NormalLight.Maps = realcolormaps.Maps; else NormalLight.Maps = realcolormaps.Maps + NUMCOLORMAPS * 256 * R_OldBlend; diff --git a/src/swrenderer/things/r_voxel.cpp b/src/swrenderer/things/r_voxel.cpp index 8f2b80f0bb7..beb7a474b88 100644 --- a/src/swrenderer/things/r_voxel.cpp +++ b/src/swrenderer/things/r_voxel.cpp @@ -135,7 +135,7 @@ namespace swrenderer int voxelspin = (thing->flags & MF_DROPPED) ? voxel->DroppedSpin : voxel->PlacedSpin; if (voxelspin != 0) { - DAngle ang = double(I_FPSTime()) * voxelspin / 1000; + DAngle ang = double(renderTime) * voxelspin / 1000; vis->Angle -= ang; }