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