From 3a179ec1c62beef17bd825e9626f61178422a693 Mon Sep 17 00:00:00 2001 From: Boondorl Date: Wed, 1 Jan 2025 06:52:55 -0500 Subject: [PATCH] Make coronas array global Correctly collect all coronas to be drawn across all view points --- src/rendering/hwrenderer/hw_entrypoint.cpp | 2 ++ src/rendering/hwrenderer/scene/hw_drawinfo.cpp | 3 ++- src/rendering/hwrenderer/scene/hw_drawinfo.h | 1 - src/rendering/hwrenderer/scene/hw_sprites.cpp | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/rendering/hwrenderer/hw_entrypoint.cpp b/src/rendering/hwrenderer/hw_entrypoint.cpp index bc95c45dc..a231a332b 100644 --- a/src/rendering/hwrenderer/hw_entrypoint.cpp +++ b/src/rendering/hwrenderer/hw_entrypoint.cpp @@ -59,6 +59,7 @@ CVAR(Bool, gl_raytrace, false, 0/*CVAR_ARCHIVE | CVAR_GLOBALCONFIG*/) extern bool NoInterpolateView; static SWSceneDrawer *swdrawer; +TArray Coronas; void CleanSWDrawer() { @@ -333,6 +334,7 @@ static void CheckTimer(FRenderState &state, uint64_t ShaderStartTime) sector_t* RenderView(player_t* player) { + Coronas.Clear(); auto RenderState = screen->RenderState(); RenderState->SetFlatVertexBuffer(); RenderState->ResetVertices(); diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp index 2991bdb76..2f2d77e0d 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp @@ -69,6 +69,8 @@ CVAR(Bool, gl_coronas, true, CVAR_ARCHIVE); CVAR(Bool, gl_levelmesh, false, 0/*CVAR_ARCHIVE | CVAR_GLOBALCONFIG*/) +extern TArray Coronas; + sector_t * hw_FakeFlat(sector_t * sec, sector_t * dest, area_t in_area, bool back); @@ -136,7 +138,6 @@ void HWDrawInfo::StartScene(FRenderViewpoint &parentvp, HWViewpointUniforms *uni for (int i = 0; i < GLDL_TYPES; i++) drawlists[i].Reset(); hudsprites.Clear(); - Coronas.Clear(); Fogballs.Clear(); VisibleTiles.Clear(); visibleDyn = 0; diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.h b/src/rendering/hwrenderer/scene/hw_drawinfo.h index 04ab8640a..987c02fcb 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.h +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.h @@ -155,7 +155,6 @@ struct HWDrawInfo TArray Portals; TArray Decals[2]; // the second slot is for mirrors which get rendered in a separate pass. TArray hudsprites; // These may just be stored by value. - TArray Coronas; TArray Fogballs; TArray VisibleTiles; unsigned visibleDyn; diff --git a/src/rendering/hwrenderer/scene/hw_sprites.cpp b/src/rendering/hwrenderer/scene/hw_sprites.cpp index 46f4f4262..9cafe2a14 100644 --- a/src/rendering/hwrenderer/scene/hw_sprites.cpp +++ b/src/rendering/hwrenderer/scene/hw_sprites.cpp @@ -64,6 +64,7 @@ extern TArray sprites; extern TArray SpriteFrames; extern uint32_t r_renderercaps; +extern TArray Coronas; const float LARGE_VALUE = 1e19f; const float MY_SQRT2 = 1.41421356237309504880; // sqrt(2) @@ -843,7 +844,7 @@ void HWSprite::Process(HWDrawInfo *di, FRenderState& state, AActor* thing, secto if (thing->IsKindOf(NAME_Corona)) { - di->Coronas.Push(thing); + Coronas.Push(thing); return; }