diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 56355638f7a9ec5bb5e51525c9da1d4255ffe1fa..b3b0aec50716799cfcd173271da7c22d61800071 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3359,11 +3359,13 @@ static void HWR_SplitSprite(gl_vissprite_t *spr) baseWallVerts[0].t = baseWallVerts[1].t = ((GLPatch_t *)gpatch->hardware)->max_t; } - // Let dispoffset work first since this adjust each vertex - HWR_RotateSpritePolyToAim(spr, baseWallVerts, false); - // push it toward the camera to mitigate floor-clipping sprites + if (!R_ThingIsPaperSprite(spr->mobj)) // but not for papersprites { + // Let dispoffset work first since this adjust each vertex + HWR_RotateSpritePolyToAim(spr, baseWallVerts, false); + + // push it toward the camera to mitigate floor-clipping sprites float sprdist = sqrtf((spr->x1 - gl_viewx)*(spr->x1 - gl_viewx) + (spr->z1 - gl_viewy)*(spr->z1 - gl_viewy) + (spr->gzt - gl_viewz)*(spr->gzt - gl_viewz)); float distfact = ((2.0f*spr->dispoffset) + 20.0f) / sprdist; for (i = 0; i < 4; i++) @@ -3817,7 +3819,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr) float sprdist = 0.0f, distfact = 0.0f; size_t i; - if (!splat) + if (!splat && !R_ThingIsPaperSprite(spr->mobj)) { // Let dispoffset work first since this adjust each vertex HWR_RotateSpritePolyToAim(spr, wallVerts, false); @@ -3832,7 +3834,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr) wallVerts[i].y += (gl_viewz - wallVerts[i].y)*distfact; } } - else if (splat) + else if (R_ThingIsFloorSprite(spr->mobj)) { sprdist = sqrtf((spr->x1 - gl_viewx)*(spr->x1 - gl_viewx) + (spr->z1 - gl_viewy)*(spr->z1 - gl_viewy)); distfact = (2.0f + 20.0f) / sprdist;