diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 0b5d41c4f57015db09b996107fb3e54f1d14778c..897288da2aa485a2e42203b2eeeabcb0275ddde4 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3606,6 +3606,8 @@ static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale) scalemul = FixedMul(FRACUNIT - floordiff/640, scale); scalemul = FixedMul(scalemul, (thing->radius*2) / gpatch->height); + if ((thing->scale != thing->old_scale) && (thing->scale >= FRACUNIT/1024)) // Interpolate shadows when scaling mobjs + scalemul = FixedMul(scalemul, FixedDiv(interp.scale, thing->scale)); fscale = FIXED_TO_FLOAT(scalemul); fx = FIXED_TO_FLOAT(interp.x); diff --git a/src/r_things.c b/src/r_things.c index 916a7ee4ba85f8cf35fe07237cdba3c526045da4..89b9fe07ef89ddd0307317ca0933608b7cbdf7ff 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1324,6 +1324,8 @@ static void R_ProjectDropShadow(mobj_t *thing, vissprite_t *vis, fixed_t scale, if (trans >= 9) return; scalemul = FixedMul(FRACUNIT - floordiff/640, scale); + if ((thing->scale != thing->old_scale) && (thing->scale >= FRACUNIT/1024)) // Interpolate shadows when scaling mobjs + scalemul = FixedMul(scalemul, FixedDiv(interp.scale, thing->scale)); patch = W_CachePatchName("DSHADOW", PU_SPRITE); xscale = FixedDiv(projection, tz);