Some fixes for the linedef alpha field

This commit is contained in:
MascaraSnake 2020-02-10 20:26:29 +01:00
parent cedfc02f19
commit 24de2968a3
3 changed files with 7 additions and 3 deletions

View File

@ -895,6 +895,7 @@ FBITFIELD HWR_TranstableToAlpha(INT32 transtablenum, FSurfaceInfo *pSurf)
{
switch (transtablenum)
{
case 0 : pSurf->FlatColor.s.alpha = 0x00;return PF_Masked;
case tr_trans10 : pSurf->FlatColor.s.alpha = 0xe6;return PF_Translucent;
case tr_trans20 : pSurf->FlatColor.s.alpha = 0xcc;return PF_Translucent;
case tr_trans30 : pSurf->FlatColor.s.alpha = 0xb3;return PF_Translucent;
@ -1842,7 +1843,7 @@ static void HWR_StoreWallRange(double startfrac, double endfrac)
blendmode = PF_Translucent;
break;
default:
if (gr_linedef->alpha > 0 && gr_linedef->alpha < FRACUNIT)
if (gr_linedef->alpha >= 0 && gr_linedef->alpha < FRACUNIT)
blendmode = HWR_TranstableToAlpha(R_GetLinedefTransTable(gr_linedef->alpha), &Surf);
else
blendmode = PF_Masked;

View File

@ -960,8 +960,6 @@ static void P_InitializeLinedef(line_t *ld)
ld->dx = v2->x - v1->x;
ld->dy = v2->y - v1->y;
ld->alpha = FRACUNIT;
ld->bbox[BOXLEFT] = min(v1->x, v2->x);
ld->bbox[BOXRIGHT] = max(v1->x, v2->x);
ld->bbox[BOXBOTTOM] = min(v1->y, v2->y);
@ -1059,6 +1057,7 @@ static void P_LoadLinedefs(UINT8 *data)
ld->tag = SHORT(mld->tag);
memset(ld->args, 0, NUMLINEARGS*sizeof(*ld->args));
memset(ld->stringargs, 0x00, NUMLINESTRINGARGS*sizeof(*ld->stringargs));
ld->alpha = FRACUNIT;
P_SetLinedefV1(i, SHORT(mld->v1));
P_SetLinedefV2(i, SHORT(mld->v2));
@ -1654,6 +1653,7 @@ static void P_LoadTextmap(void)
ld->tag = 0;
memset(ld->args, 0, NUMLINEARGS*sizeof(*ld->args));
memset(ld->stringargs, 0x00, NUMLINESTRINGARGS*sizeof(*ld->stringargs));
ld->alpha = FRACUNIT;
ld->sidenum[0] = 0xffff;
ld->sidenum[1] = 0xffff;

View File

@ -337,6 +337,9 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
windowbottom = windowtop = sprbotscreen = INT32_MAX;
ldef = curline->linedef;
if (!ldef->alpha)
return;
if (ldef->alpha > 0 && ldef->alpha < FRACUNIT)
{
dc_transmap = transtables + ((R_GetLinedefTransTable(ldef->alpha) - 1) << FF_TRANSSHIFT);