From ace6bd54c41592d7224c86a24038d52717702d4f Mon Sep 17 00:00:00 2001 From: Jennifer Taylor Date: Sun, 16 May 2021 22:19:38 +0000 Subject: [PATCH] Fix partial-alpha blending equation, should fix dark sprites on semi-transparent backgrounds. --- bemani/format/afp/blend.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bemani/format/afp/blend.py b/bemani/format/afp/blend.py index bb679e9..b75502d 100644 --- a/bemani/format/afp/blend.py +++ b/bemani/format/afp/blend.py @@ -41,12 +41,13 @@ def blend_normal( # Calculate alpha blending. srcpercent = src[3] / 255.0 destpercent = dest[3] / 255.0 - destremainder = 1.0 - srcpercent + srcremaineder = 1.0 - srcpercent + new_alpha = (srcpercent + destpercent * srcremaineder) return ( - clamp((dest[0] * destpercent * destremainder) + (src[0] * srcpercent)), - clamp((dest[1] * destpercent * destremainder) + (src[1] * srcpercent)), - clamp((dest[2] * destpercent * destremainder) + (src[2] * srcpercent)), - clamp(255 * (srcpercent + destpercent * destremainder)), + clamp(((dest[0] * destpercent * srcremaineder) + (src[0] * srcpercent)) / new_alpha), + clamp(((dest[1] * destpercent * srcremaineder) + (src[1] * srcpercent)) / new_alpha), + clamp(((dest[2] * destpercent * srcremaineder) + (src[2] * srcpercent)) / new_alpha), + clamp(255 * new_alpha) )