From 9680ff1863c23dd690732f8b0d943e16f64ca031 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 1 Jan 2022 12:55:28 +0100 Subject: [PATCH] - ignore y-flipping when rendering slope sprites in the new renderer. This is what Polymost, and apparently NBlood, do here. --- source/core/rendering/scene/hw_flats.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/core/rendering/scene/hw_flats.cpp b/source/core/rendering/scene/hw_flats.cpp index 8b49414d6..a3e68152d 100644 --- a/source/core/rendering/scene/hw_flats.cpp +++ b/source/core/rendering/scene/hw_flats.cpp @@ -121,7 +121,10 @@ void HWFlat::MakeVertices(HWDrawInfo* di) { vec2_t pos[4]; int ofsz[4]; + auto cstat = Sprite->cstat; + if (Sprite->clipdist & TSPR_SLOPESPRITE) cstat &= ~CSTAT_SPRITE_YFLIP; // NBlood doesn't y-flip slope sprites. GetFlatSpritePosition(Sprite, Sprite->pos.vec2, pos, ofsz, true); + Sprite->cstat = cstat; auto ret = screen->mVertexData->AllocVertices(6); auto vp = ret.first; @@ -129,7 +132,6 @@ void HWFlat::MakeVertices(HWDrawInfo* di) float y = !(Sprite->cstat & CSTAT_SPRITE_YFLIP) ? 0.f : 1.f; if (Sprite->clipdist & TSPR_SLOPESPRITE) { - int posx = int(di->Viewpoint.Pos.X * 16.f); int posy = int(di->Viewpoint.Pos.Y * -16.f); int posz = int(di->Viewpoint.Pos.Z * -256.f);