diff --git a/src/r_poly_sprite.cpp b/src/r_poly_sprite.cpp index 6de63bbdcd..e4738ab264 100644 --- a/src/r_poly_sprite.cpp +++ b/src/r_poly_sprite.cpp @@ -219,6 +219,7 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, AActor *thing, subse args.uniforms.destalpha = 256; args.uniforms.srcalpha = (uint32_t)(thing->Alpha * 256); args.SetTexture(tex, false); + args.uniforms.color = 0; uniforms.flags |= TriUniforms::simple_shade; PolyTriangleDrawer::draw(args, TriDrawVariant::DrawSubsector, TriBlendMode::Shaded); } @@ -227,6 +228,7 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, AActor *thing, subse args.uniforms.destalpha = 256; args.uniforms.srcalpha = (uint32_t)(thing->Alpha * 256); args.SetTexture(tex, false); + args.uniforms.color = 0; uniforms.flags |= TriUniforms::simple_shade; PolyTriangleDrawer::draw(args, TriDrawVariant::DrawSubsector, TriBlendMode::Shaded); } diff --git a/src/r_poly_wall.cpp b/src/r_poly_wall.cpp index 92c669ebf8..2cdcb30192 100644 --- a/src/r_poly_wall.cpp +++ b/src/r_poly_wall.cpp @@ -199,7 +199,12 @@ void RenderPolyWall::Render(const TriMatrix &worldToClip) } else { - PolyTriangleDrawer::draw(args, TriDrawVariant::DrawSubsector, TriBlendMode::AlphaBlend); + args.uniforms.destalpha = (Line->linedef->flags & ML_ADDTRANS) ? 256 : (uint32_t)(256 - Line->linedef->alpha * 256); + args.uniforms.srcalpha = (uint32_t)(Line->linedef->alpha * 256); + if (args.uniforms.destalpha == 0 && args.uniforms.srcalpha == 256) + PolyTriangleDrawer::draw(args, TriDrawVariant::DrawSubsector, TriBlendMode::AlphaBlend); + else + PolyTriangleDrawer::draw(args, TriDrawVariant::DrawSubsector, TriBlendMode::Add); } RenderPolyDecal::RenderWallDecals(worldToClip, Line, SubsectorDepth);