Cache Shadows and make them PU_STATIC

By just doing this performanc has shot up.
This commit is contained in:
NepDisk 2025-05-27 10:27:22 -04:00
parent 3e070a9cb0
commit 2424c2ccb8
2 changed files with 16 additions and 2 deletions

View file

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

View file

@ -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<patch_t*>(W_CachePatchName("DSHADOW", PU_SPRITE));
if (shadowpatch == NULL)
{
shadowpatch = static_cast<patch_t*>(W_CachePatchName("DSHADOW", PU_STATIC));
}
patch = shadowpatch;
xscale = FixedDiv(projection[viewssnum], tz);
yscale = FixedDiv(projectiony[viewssnum], tz);
shadowxscale = FixedMul(thing->radius*2, scale);