From 2424c2ccb8acf0a71945cc75d8fc5bfc3cdee4f8 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 27 May 2025 10:27:22 -0400 Subject: [PATCH] Cache Shadows and make them PU_STATIC By just doing this performanc has shot up. --- src/hardware/hw_main.c | 9 ++++++++- src/r_things.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 6a06bc4e8..435a09008 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3205,6 +3205,8 @@ static boolean HWR_DoCulling(line_t *cullheight, line_t *viewcullheight, float v return false; } +static patch_t *shadowpatch = NULL; + static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale) { patch_t *gpatch; @@ -3243,7 +3245,12 @@ static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale) groundz = R_GetShadowZ(thing, &groundslope); - gpatch = (patch_t *)W_CachePatchName("DSHADOW", PU_SPRITE); + if (shadowpatch == NULL) + { + shadowpatch = (patch_t *)W_CachePatchName("DSHADOW", PU_STATIC); + } + + gpatch = shadowpatch; if (!(gpatch && ((GLPatch_t *)gpatch->hardware)->mipmap->format)) return; HWR_GetPatch(gpatch); diff --git a/src/r_things.cpp b/src/r_things.cpp index f37ced90f..3d6f71e4f 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1443,6 +1443,8 @@ static void R_SkewShadowSprite( *shadowskew = xslope; } +static patch_t *shadowpatch = NULL; + static void R_ProjectDropShadow( mobj_t *thing, vissprite_t *vis, fixed_t scale, fixed_t tx, fixed_t tz) @@ -1468,7 +1470,12 @@ static void R_ProjectDropShadow( R_InterpolateMobjState(thing, FRACUNIT, &interp); } - patch = static_cast(W_CachePatchName("DSHADOW", PU_SPRITE)); + if (shadowpatch == NULL) + { + shadowpatch = static_cast(W_CachePatchName("DSHADOW", PU_STATIC)); + } + + patch = shadowpatch; xscale = FixedDiv(projection[viewssnum], tz); yscale = FixedDiv(projectiony[viewssnum], tz); shadowxscale = FixedMul(thing->radius*2, scale);