ref: d0340ee6ba7d1402a2e8786139fa3f59cd68c010
parent: 050589ae8afe1b26f684d2aa7bc41fc58e9c655d
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Thu Dec 28 18:10:01 EST 2023
treat alpha 0 ("default") as alpha 0xff when drawing
--- a/d_alpha.c
+++ b/d_alpha.c
@@ -5,6 +5,8 @@
{
int a, b, c;
+ alpha = (ca >> 24)*alpha >> 8;
+
if(currententity != nil && currententity->effects & EF_ADDITIVE){
ca = R_BlendFog(ca, izi);
a = (alpha*((ca>> 0)&0xff) + 255*((cb>> 0)&0xff))>> 8;
--- a/protocol.h
+++ b/protocol.h
@@ -17,7 +17,7 @@
ZERO_ALPHA,
};
-#define defalpha(a) ((a) == DEFAULT_ALPHA)
+#define defalpha(a) ((a) == DEFAULT_ALPHA || (a) == 0xff)
#define zeroalpha(a) (!defalpha(a) && (a) <= ZERO_ALPHA)
#define f2alpha(f) ((f) == 0.0 ? DEFAULT_ALPHA : clamp((f)*254+1, 1, 255))
#define alpha2f(a) (zeroalpha(a) ? 0.0 : (float)(a)/255.0)
--- a/r_main.c
+++ b/r_main.c
@@ -472,6 +472,8 @@
return 1;
if((entdrawflags(e) ^ r_drawflags) != 0)
return 0;
+ if(e->alpha == DEFAULT_ALPHA)
+ e->alpha = 0xff;
currententity = e;
VectorCopy(modelorg, oldorigin);