From 2fa5a88701828ae6d99a75f7551ee97dde072cf8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 9 Mar 2019 12:34:10 +0100 Subject: [PATCH] - do not render player sprites to canvases in the hardware renderer. --- src/rendering/gl/renderer/gl_scene.cpp | 4 ++-- src/rendering/hwrenderer/scene/hw_bsp.cpp | 6 +++--- src/rendering/hwrenderer/scene/hw_drawinfo.cpp | 4 ++-- src/rendering/hwrenderer/scene/hw_drawinfo.h | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/rendering/gl/renderer/gl_scene.cpp b/src/rendering/gl/renderer/gl_scene.cpp index 764355d00..906d58dfb 100644 --- a/src/rendering/gl/renderer/gl_scene.cpp +++ b/src/rendering/gl/renderer/gl_scene.cpp @@ -111,12 +111,12 @@ void FGLRenderer::DrawScene(HWDrawInfo *di, int drawmode) if (vp.camera != nullptr) { ActorRenderFlags savedflags = vp.camera->renderflags; - di->CreateScene(); + di->CreateScene(drawmode == DM_MAINVIEW); vp.camera->renderflags = savedflags; } else { - di->CreateScene(); + di->CreateScene(false); } glDepthMask(true); diff --git a/src/rendering/hwrenderer/scene/hw_bsp.cpp b/src/rendering/hwrenderer/scene/hw_bsp.cpp index cddf4db30..242154a26 100644 --- a/src/rendering/hwrenderer/scene/hw_bsp.cpp +++ b/src/rendering/hwrenderer/scene/hw_bsp.cpp @@ -796,7 +796,7 @@ void HWDrawInfo::RenderBSPNode (void *node) DoSubsector ((subsector_t *)((uint8_t *)node - 1)); } -void HWDrawInfo::RenderBSP(void *node) +void HWDrawInfo::RenderBSP(void *node, bool drawpsprites) { Bsp.Clock(); @@ -829,6 +829,6 @@ void HWDrawInfo::RenderBSP(void *node) // Process all the sprites on the current portal's back side which touch the portal. if (mCurrentPortal != nullptr) mCurrentPortal->RenderAttached(this); - - PreparePlayerSprites(Viewpoint.sector, in_area); + if (drawpsprites) + PreparePlayerSprites(Viewpoint.sector, in_area); } diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp index 5d86051cc..9997a1761 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp @@ -421,7 +421,7 @@ GLDecal *HWDrawInfo::AddDecal(bool onmirror) // //----------------------------------------------------------------------------- -void HWDrawInfo::CreateScene() +void HWDrawInfo::CreateScene(bool drawpsprites) { const auto &vp = Viewpoint; angle_t a1 = FrustumAngle(); @@ -436,7 +436,7 @@ void HWDrawInfo::CreateScene() screen->mVertexData->Map(); screen->mLights->Map(); - RenderBSP(Level->HeadNode()); + RenderBSP(Level->HeadNode(), drawpsprites); // And now the crappy hacks that have to be done to avoid rendering anomalies. // These cannot be multithreaded when the time comes because all these depend diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.h b/src/rendering/hwrenderer/scene/hw_drawinfo.h index 9738cbe44..c2f907acb 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.h +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.h @@ -237,7 +237,7 @@ public: HWPortal * FindPortal(const void * src); void RenderBSPNode(void *node); - void RenderBSP(void *node); + void RenderBSP(void *node, bool drawpsprites); static HWDrawInfo *StartDrawInfo(FLevelLocals *lev, HWDrawInfo *parent, FRenderViewpoint &parentvp, HWViewpointUniforms *uniforms); void StartScene(FRenderViewpoint &parentvp, HWViewpointUniforms *uniforms); @@ -246,7 +246,7 @@ public: void SetViewArea(); int SetFullbrightFlags(player_t *player); - void CreateScene(); + void CreateScene(bool drawpsprites); void RenderScene(FRenderState &state); void RenderTranslucent(FRenderState &state); void RenderPortal(HWPortal *p, FRenderState &state, bool usestencil);